مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-12-01 05:43:04 +00:00
chore: various tweaks to support running tests in the CI
هذا الالتزام موجود في:
@@ -13,7 +13,6 @@ Procfile.local
|
|||||||
log/*
|
log/*
|
||||||
storage/*
|
storage/*
|
||||||
tmp/*
|
tmp/*
|
||||||
spec/*
|
|
||||||
.git/*
|
.git/*
|
||||||
.github/*
|
.github/*
|
||||||
.vscode/*
|
.vscode/*
|
||||||
|
|||||||
2
.gitignore
مباع
2
.gitignore
مباع
@@ -23,6 +23,8 @@ config/lets_encrypt.pem
|
|||||||
config/signing.key
|
config/signing.key
|
||||||
config/fast_server.cert
|
config/fast_server.cert
|
||||||
config/fast_server.key
|
config/fast_server.key
|
||||||
|
config/postal/**/*
|
||||||
|
|
||||||
|
|
||||||
public/assets
|
public/assets
|
||||||
vendor/bundle
|
vendor/bundle
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ RUN apt-get update \
|
|||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
build-essential \
|
build-essential \
|
||||||
|
netcat \
|
||||||
curl \
|
curl \
|
||||||
libmariadbclient-dev \
|
libmariadbclient-dev \
|
||||||
nano \
|
nano \
|
||||||
@@ -46,6 +47,10 @@ RUN echo $VERSION > VERSION
|
|||||||
ENTRYPOINT [ "/docker-entrypoint.sh" ]
|
ENTRYPOINT [ "/docker-entrypoint.sh" ]
|
||||||
CMD ["bundle", "exec"]
|
CMD ["bundle", "exec"]
|
||||||
|
|
||||||
|
# ci target - use --target=ci to skip asset compilation
|
||||||
|
FROM base AS ci
|
||||||
|
|
||||||
|
# prod target - default if no --target option is given
|
||||||
FROM base AS prod
|
FROM base AS prod
|
||||||
# Copy temporary configuration file which can be used for
|
# Copy temporary configuration file which can be used for
|
||||||
# running the asset precompilation.
|
# running the asset precompilation.
|
||||||
|
|||||||
18
Makefile
18
Makefile
@@ -96,3 +96,21 @@ ifneq ($(DOCKER_TAG_VERSION),)
|
|||||||
"$(DOCKER_IMAGE):$(DOCKER_TAG_VERSION)" && \
|
"$(DOCKER_IMAGE):$(DOCKER_TAG_VERSION)" && \
|
||||||
docker push "$(DOCKER_IMAGE):$(DOCKER_TAG_VERSION)"
|
docker push "$(DOCKER_IMAGE):$(DOCKER_TAG_VERSION)"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# Tests
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
.PHONY: ci-test
|
||||||
|
ci-test: docker-ci-build
|
||||||
|
$(eval IMAGE := $(shell $(DOCKER_CI_BUILD_CMD) -q))
|
||||||
|
$(eval RAND := $(shell echo "$${RANDOM}$$(date +%s)"))
|
||||||
|
POSTAL_IMAGE=$(IMAGE) \
|
||||||
|
docker-compose -p "postal$(RAND)" run --rm postal sh -c 'bundle exec rspec'; \
|
||||||
|
EXIT_CODE=$$?; \
|
||||||
|
docker-compose -p "postal$(RAND)" down -v; \
|
||||||
|
exit $$EXIT_CODE
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
|
test:
|
||||||
|
bundle exec rspec
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ require 'bundler/setup' # Set up gems listed in the Gemfile.
|
|||||||
require_relative '../lib/postal/config'
|
require_relative '../lib/postal/config'
|
||||||
Postal.check_config!
|
Postal.check_config!
|
||||||
|
|
||||||
ENV['DATABASE_URL'] = Postal.database_url
|
|
||||||
ENV['RAILS_ENV'] = Postal.config.rails&.environment || 'development'
|
ENV['RAILS_ENV'] = Postal.config.rails&.environment || 'development'
|
||||||
|
|
||||||
if ENV['PROC_NAME']
|
if ENV['PROC_NAME']
|
||||||
$0="[postal] #{ENV['PROC_NAME']}"
|
$0="[postal] #{ENV['PROC_NAME']}"
|
||||||
end
|
end
|
||||||
|
|||||||
8
config/database.yml
Normal file
8
config/database.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
development:
|
||||||
|
url: <%= Postal.database_url %>
|
||||||
|
|
||||||
|
production:
|
||||||
|
url: <%= Postal.database_url %>
|
||||||
|
|
||||||
|
test:
|
||||||
|
url: <%= Postal.database_url %>
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
web:
|
|
||||||
host: localhost:5000
|
|
||||||
protocol: http
|
|
||||||
|
|
||||||
fast_server:
|
|
||||||
bind_address: 0.0.0.0
|
|
||||||
port: 5001
|
|
||||||
ssl_port: 5002
|
|
||||||
|
|
||||||
main_db:
|
|
||||||
username: root
|
|
||||||
|
|
||||||
logging:
|
|
||||||
stdout: true
|
|
||||||
|
|
||||||
message_db:
|
|
||||||
username: root
|
|
||||||
|
|
||||||
rabbitmq:
|
|
||||||
username: guest
|
|
||||||
password: guest
|
|
||||||
vhost: /
|
|
||||||
|
|
||||||
smtp_server:
|
|
||||||
port: 2525
|
|
||||||
|
|
||||||
rails:
|
|
||||||
environment: development
|
|
||||||
secret_key: 58e93bbe3773facec4758b49c693f48dee388b07af0d84927bb9733f939abaacf8b44f6298a5d2e96339d0f2478ec6d0b6b1c656d469a2bac4d6f4b69368870c
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
web:
|
|
||||||
# The host that the management interface will be available on
|
|
||||||
host: postal.example.com
|
|
||||||
# The protocol that requests to the management interface should happen on
|
|
||||||
protocol: https
|
|
||||||
|
|
||||||
fast_server:
|
|
||||||
# This can be enabled to enable click & open tracking on emails. It is disabled by
|
|
||||||
# default as it requires a separate static IP address on your server.
|
|
||||||
enabled: false
|
|
||||||
bind_address:
|
|
||||||
|
|
||||||
general:
|
|
||||||
# This can be changed to allow messages to be sent from multiple IP addresses
|
|
||||||
use_ip_pools: false
|
|
||||||
|
|
||||||
main_db:
|
|
||||||
# Specify the connection details for your MySQL database
|
|
||||||
host: 127.0.0.1
|
|
||||||
username: postal
|
|
||||||
password: p0stalpassw0rd
|
|
||||||
database: postal
|
|
||||||
|
|
||||||
message_db:
|
|
||||||
# Specify the connection details for your MySQL server that will be house the
|
|
||||||
# message databases for mail servers.
|
|
||||||
host: 127.0.0.1
|
|
||||||
username: postal
|
|
||||||
password: p0stalpassw0rd
|
|
||||||
prefix: postal
|
|
||||||
|
|
||||||
rabbitmq:
|
|
||||||
# Specify the connection details for your RabbitMQ server.
|
|
||||||
# if you have more than one RabbitMQ server (cluster), you can use array like this:
|
|
||||||
# host:
|
|
||||||
# - 10.1.1.1
|
|
||||||
# - 10.1.1.2
|
|
||||||
# - 10.1.1.3
|
|
||||||
host: 127.0.0.1
|
|
||||||
username: postal
|
|
||||||
password: p0stalpassw0rd
|
|
||||||
vhost: /postal
|
|
||||||
|
|
||||||
dns:
|
|
||||||
# Specifies the DNS record that you have configured. Refer to the documentation at
|
|
||||||
# https://github.com/atech/postal/wiki/Domains-&-DNS-Configuration for further
|
|
||||||
# information about these.
|
|
||||||
mx_records:
|
|
||||||
- mx.postal.example.com
|
|
||||||
smtp_server_hostname: postal.example.com
|
|
||||||
spf_include: spf.postal.example.com
|
|
||||||
return_path: rp.postal.example.com
|
|
||||||
route_domain: routes.postal.example.com
|
|
||||||
track_domain: track.postal.example.com
|
|
||||||
|
|
||||||
smtp:
|
|
||||||
# Specify an SMTP server that can be used to send messages from the Postal management
|
|
||||||
# system to users. You can configure this to use a Postal mail server once the
|
|
||||||
# your installation has been set up.
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 2525
|
|
||||||
username: # Complete when Postal is running and you can
|
|
||||||
password: # generate the credentials within the interface.
|
|
||||||
from_name: Postal
|
|
||||||
from_address: postal@yourdomain.com
|
|
||||||
|
|
||||||
rails:
|
|
||||||
# This is generated automatically by the config initialization. It should be a random
|
|
||||||
# string unique to your installation.
|
|
||||||
secret_key: {{secretkey}}
|
|
||||||
19
config/postal/fast_server.cert
Normal file
19
config/postal/fast_server.cert
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDBTCCAe2gAwIBAgIURjtcwuA2m7eNeogNfiNiTrxLxt0wDQYJKoZIhvcNAQEL
|
||||||
|
BQAwEjEQMA4GA1UEAwwHZGVmYXVsdDAeFw0yMTA3MjYxNzM0NDdaFw0zMTA3MjQx
|
||||||
|
NzM0NDdaMBIxEDAOBgNVBAMMB2RlZmF1bHQwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
||||||
|
DwAwggEKAoIBAQDWrUHqB2zR2C8Rvn1YQ67wso1a/uDqZwM8UntC8jLFhMtQztA9
|
||||||
|
BIxqNeXqvPsseHPosjDbfxtGk+WVDfuC0y4Dy9dBZnaq8K+rOUJx1v8cROXlYDa3
|
||||||
|
NH7AE4r+RqtER/17dm5M8BRyI/SjIuS1EPA9ax8DIwEeYtrEr9m/A1th1C/eWdAF
|
||||||
|
3O3ECpqzQLQRPDcHx+/2aMN0QirS23HXnZC6+S/LIKtbfUXRnPgzhh1gz71l5yaS
|
||||||
|
Pr0f6ra6/GyMf1ZVL5S1rN8ySCaPja5vrTYPJfuGfAS2WtaP5cQdl+p8YEtkT1bn
|
||||||
|
hfNA/K7wvFut1DfndQyE2aTTL7GxfADGM9/VAgMBAAGjUzBRMB0GA1UdDgQWBBQE
|
||||||
|
Zr7xtvoJkg7aJoec9fO5O5+jEzAfBgNVHSMEGDAWgBQEZr7xtvoJkg7aJoec9fO5
|
||||||
|
O5+jEzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQA6rixgFS6s
|
||||||
|
TU95R1QraSVTOMGVvxd8nY+s4cyVJ6GURyyfC/BbhXjWEHT+d+ea/ALAccYphNpS
|
||||||
|
R42XZ8Ksa8qU+Xz2ivHfjE8LiY4qfjdcdr6HsYVUV15nLQ3G0SQd1XWCNSGfbnY9
|
||||||
|
15O6llL18byJQ/aliob718G0ckEBNYnbYt0PTESxvFPjVLJ4AKZR4Kqkq3X4ZPyK
|
||||||
|
DxNtQSPZdvTmAJRGq/hGe9o2IKyH+laMPnB6jacqe3JJuqe+bzN4xOKPMqG9w3Fe
|
||||||
|
BvMnI/CcjIR0yakIjD0I+lC5kMoF4uV6N4yMzWIMD1F+ps2QwebA81/STDy0N7oo
|
||||||
|
u6JASdYrUVGt
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
config/postal/fast_server.key
Normal file
28
config/postal/fast_server.key
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDWrUHqB2zR2C8R
|
||||||
|
vn1YQ67wso1a/uDqZwM8UntC8jLFhMtQztA9BIxqNeXqvPsseHPosjDbfxtGk+WV
|
||||||
|
DfuC0y4Dy9dBZnaq8K+rOUJx1v8cROXlYDa3NH7AE4r+RqtER/17dm5M8BRyI/Sj
|
||||||
|
IuS1EPA9ax8DIwEeYtrEr9m/A1th1C/eWdAF3O3ECpqzQLQRPDcHx+/2aMN0QirS
|
||||||
|
23HXnZC6+S/LIKtbfUXRnPgzhh1gz71l5yaSPr0f6ra6/GyMf1ZVL5S1rN8ySCaP
|
||||||
|
ja5vrTYPJfuGfAS2WtaP5cQdl+p8YEtkT1bnhfNA/K7wvFut1DfndQyE2aTTL7Gx
|
||||||
|
fADGM9/VAgMBAAECggEAFiPiQ2emonHAUP0rYjoAxdQ0XekheytKmyMKkVn3QIW0
|
||||||
|
jk32DgT1ElMitjXtVaXKlnoiLdELGBlSuS+q+9AZ08xnE9ikbnbKN0d9gc4hm2HD
|
||||||
|
sAdfPT/NvrOFRzo0maMvElehgo/UG/13UofbvIzVqg/tL96hU+fwFg7ozxliiFEw
|
||||||
|
jvpJcddIYdnUlh1Kb7lvqzeMYPSaUtLoMJeyBSBiOJPr2WqX9I050kgllJxHvTO2
|
||||||
|
5qF88gwMvqdB+1uhHacXo43Q8sMcv/moR5bYvjrHOXT8MhKWGLe0AoQecFpfPJ/0
|
||||||
|
r6BsjCDDEpk4Z0jfvMnU9r+jUdrZKf9Y8T7gdmjuIQKBgQDs61PVlSBSi9ONdpbL
|
||||||
|
J0t7jC4GpuiAF7Mp0BystE8jBwHDRIdkk8bY0bosrtxsc5TPWZpUSSNrwfRkzNkV
|
||||||
|
FcNjco7WYqhse31w4L5oIkoWPPgeEEB8/ohRzlQzaIcqcyUS3z1lqxi7AGcir6KC
|
||||||
|
LqYuai7H4oFCo4qjhjQt/3e5jQKBgQDn91jVbmYXJJZnzJhQlAsxQCqcXdGSM7hd
|
||||||
|
B3IzXLXQtffwIU2WWdRB6nzNO1df5JPR0VnnjSGTPl+9vP2P2YFh36gIzafcdXqr
|
||||||
|
VWGJc9lQ+XKyqRHSqXmioawxgisDaqO+xCDlgvoSIs2Qx7zTo456L0Qk/VDOx+J0
|
||||||
|
JSbOmWIZaQKBgBuVMkd1ezPhD5oyqk+wnXse0OT5Xaw8FiHSFuSMgYIkeLIRMmol
|
||||||
|
QktP74rwOL1vn22ckvkpIrSS+i8aIlPwGrVjSvnutokav3n60HAzPcjlBEYLwlZL
|
||||||
|
E/fiO69YhhQNH83Yq79AcjqjS16gcB0T7UkOF7Ax0La/b46mO0D3syqpAoGBAOBF
|
||||||
|
egLouRXZDv4OhpkpeWTFuCz0XEHxdWekYlqcYUEIHk5xtHUQJrMQRlea7xBMjEqJ
|
||||||
|
EVZZUkPtQ13MEo946Km7NthEFe6FOvPaGfJuKocqliV8Zzn5FxwRGc3IH1QvT1+K
|
||||||
|
eo/MQYE1WvCG3N72PDOP7V+h9vXlteE7ZjjLfVg5AoGBANnnEt4oMxsvBCKQiQcJ
|
||||||
|
d+sQVEDx9KHHzYWXsFmUzhP3NlmV4CZ32wV8Eaqsf9pvJrEIjDOZ0AqZ+PBEPpJR
|
||||||
|
wI9dmKulQ2tvPfH5LOiF7Z/58J86zcthGzPt/xG39Sf7zOpt8YEyeHodwX1dBmw2
|
||||||
|
9AHo//QVmLc9a7aZSfGli10a
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
27
config/postal/lets_encrypt.pem
Normal file
27
config/postal/lets_encrypt.pem
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpQIBAAKCAQEA1xHXMa1DPp9+EitqNo/LLf4pFcnxT1UwfuKCrQm7iUzoNt9f
|
||||||
|
SAsY/Q6d7qZ/mDZFwC9CTUiOswtoYuvjIOZdhigMdIUQOo7vMAnPBvXUIsdZ3qeW
|
||||||
|
+S/i+KJiOgc+dKXUlJRjGnXb2FNty9dXcsZ/Uiy7v0o1Uers9qmYQU16EhDKWgLc
|
||||||
|
X9xvXf7x9qGeAJ4Iy0nTpFoy5cSWktde2lZgJsvTBZAUKGaKA60cFPI3FN8LQoK6
|
||||||
|
vsbM9H8tWQKxrtJ0gsqSncWZhxiO+ur4/bE4jsSXc3VyFYuhe8Yw4bkFenWQBONC
|
||||||
|
xwm+onaGw6GgAS5QbyGyYKAXPobU5KnFolESdQIDAQABAoIBAQCTnzNObdcSTPeE
|
||||||
|
ETi+asTTtPkOc6anBZpb/a4kh+GpxJg/0eLc2IE2caoF/VLnb5lA6S9hTMRmMRZd
|
||||||
|
j/w+wODBDQw/jnYtO58CIjlwVZxeoucU5YPDVxM8BnnVytMbzhe0RIYhy3QzcFCU
|
||||||
|
8iKcLZOHHB1il9UxfUdZp99SM5PugUWQbcWC2l/OPIJKDHrTkWFxlXMmxKVSGwWS
|
||||||
|
0QfqHxcJMbs9DJvhlYsIPL+mEhCT8SJH30V++dy3RFuUygBaklc2jtdkvwgTnEs9
|
||||||
|
Tng2DyGjmcndnzbvw7BBuBcxLsxcR3qY7VGkIGTOaHNjvVN4Cuio9U3d+aX/NX1z
|
||||||
|
LU6Zd8mhAoGBAPMr3ubRebH419y4vsJy/Mh6wAFgzGXmuepj1yl25TKGViI6RnmT
|
||||||
|
ulsgXX1qQWnJWFBkXfamC19jjlsG9xeN/bBz7UhNSs0W3mYMBo6coH6YyuLjV2wQ
|
||||||
|
p+/kY+yjQ5KDRENZT5qQPw0dO+47Zbi8teuysCr6lLeflvZeJvebrZ/rAoGBAOJq
|
||||||
|
cfWNec6Z2UYZyj7Bx70iMqe3plET+3fikYQh+sFQ0/944kwOczPFoOL8uJhEXmcj
|
||||||
|
J3eTP+/b315PdsoiLn1wqwoxB377PiCXsp9wLyPuzuDo71UDyCZK5WFIfHlpt6gt
|
||||||
|
gx22NgqfyXNEWUXjXqqk3zX6JcG6MCCU7Wtrt98fAoGBAJEuqC528olnYLnPM1U1
|
||||||
|
AedQIkKwYFiWoHlokpWW/tBjlBlrYZhEswalFCxEvDlElQ2qXs9b435YGi4Owoe1
|
||||||
|
prkq/YglXXuFI9MZavDKYqgy4S8FPLSwXRPE8EPgVf+rj54GPJizdnGF+roJjHn3
|
||||||
|
cUX/sV53rULUbXU6UVmUAN1xAoGBANRK7ElJ+uD9nhy9h8VqGqc7DnX1m2tAKjQR
|
||||||
|
a1GSLrTd3bkXlk+r6NatQhoyzb5vtHhOHO5gUb3L0ldyeLY0cJTLdIQczqOAXZNf
|
||||||
|
yWr3XCv7+Vwm7GkxH5TP+t1JgvSwbDSzX9IXC/rQManzdyUxeIzWBDhvMMHBmuih
|
||||||
|
2y8yk/gPAoGAbBS1kGId712dHBAGdOrvOyHwPVvAkERvLgFVAlpcyVnaLm47UILv
|
||||||
|
hwh9jzMczN1QnaCBkPwvkBEzT3k5Xt1KPBK52u+MPrpDWewF3fhnlSsztQti2NsT
|
||||||
|
4Vm0LDFEuvjvHRtU+HTm68jOJPNIYLiXyVMTxPEkYIhsqSqX2WwVgJQ=
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
37
config/postal/postal.yml
Normal file
37
config/postal/postal.yml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
web_server:
|
||||||
|
bind_address: 0.0.0.0
|
||||||
|
port: 5000
|
||||||
|
|
||||||
|
smtp_server:
|
||||||
|
port: 2525
|
||||||
|
|
||||||
|
main_db:
|
||||||
|
host: mariadb.services
|
||||||
|
username: root
|
||||||
|
password: llamafarm123
|
||||||
|
database: postal
|
||||||
|
|
||||||
|
message_db:
|
||||||
|
host: mariadb.services
|
||||||
|
username: root
|
||||||
|
password: llamafarm123
|
||||||
|
prefix: postal
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
host: rabbitmq.services
|
||||||
|
username: guest
|
||||||
|
password: guest
|
||||||
|
vhost: postal
|
||||||
|
|
||||||
|
dns:
|
||||||
|
mx_records:
|
||||||
|
- mx.postal.example.com
|
||||||
|
smtp_server_hostname: postal.example.com
|
||||||
|
spf_include: spf.postal.example.com
|
||||||
|
return_path: rp.postal.example.com
|
||||||
|
route_domain: routes.postal.example.com
|
||||||
|
track_domain: track.postal.example.com
|
||||||
|
|
||||||
|
rails:
|
||||||
|
secret_key: 18bc35146c195d77c1f716d9d4b2e22bbc538e99892276152cce133360d4f9543f5006c29c952e8d0821fcbda482d744f9663863a4c8f94b2c746c8ff63a162fe2d885312b16e2675e01cade0477e0206e3a946b9315183106e3a53bf8676b5079849a95cb0e0d90e228877bdcce49e741b1e6ed3538aaa21e0ccfd83c2a8b12
|
||||||
|
environment: development
|
||||||
15
config/postal/signing.key
Normal file
15
config/postal/signing.key
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIICXAIBAAKBgQDKuLcHPYXIkYJ+IZG/k5MN6cbLeszkL94IEaFyEtubtNjEAQXb
|
||||||
|
QB5I+dMezeHg7w4I3HBjHROwxgCCBC/h5vnGM6jDO16Z1tW9FDy/FiJCPtacX0NJ
|
||||||
|
2T5gFRAWoyKoV5xYdRGgO1J2TCo63s66rpTFFwdUsgyBsESvzt6EwkxYowIDAQAB
|
||||||
|
AoGBAMMf4oQkkqYIcQtI8ons2OnWcBOhYp/s9xDbL4OmZR1NiCu5NFLiN4RUewK2
|
||||||
|
dslUMDUVQVQVQ8OuAgUjVJdjBFwst1e3v7S73/O2W2UAXPzz0Qqzbni2LWITEYMr
|
||||||
|
uI/SfsfxmgT9tk7MqRgfBzIlFsssjsgf5vNlbTZY0oVn6ixpAkEA7IbVGwY0njU3
|
||||||
|
OV2OQpdUL8ai1/TpitSVCnYc7nD8MDWpZFAz4u3pdWHmpXEEfplLUunLpHhThYp8
|
||||||
|
jgKhuRsTjQJBANtpYvKMzU88qZ+TchWZaaFJPjRtaMPiOK2MAootNEKUuzbhDyLM
|
||||||
|
SSKK9vfv8VkJPHbkAa2sYwEM6rg815gHeO8CQCYGZyw5CyyEEaS/TaeW/InRvUxK
|
||||||
|
q2EOXAeahXwv3dtCRUFDQ5Qv+2BLpPDkAnz32Aw0WfDPB15orS2Hbsh7eeECQG+f
|
||||||
|
XLxij2yZQv4w5+A/LPLlrSTE6ICHDSiVSxF6z9RzkA7qTmX4odhV9DDMu+78+OrP
|
||||||
|
Ml9ljPSS2rKiGVh5rLcCQGzOocyDwtj9Aj9EohuxCJPp4N/kGF5Mv7NhEUoy7sz+
|
||||||
|
x/vJIADAnf7/XGpQF8CnZ6yKoLKNBSmYtPg8Oi+sugg=
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
29
docker-compose.yml
Normal file
29
docker-compose.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
postal:
|
||||||
|
image: ${POSTAL_IMAGE}
|
||||||
|
depends_on:
|
||||||
|
- mariadb
|
||||||
|
- rabbitmq
|
||||||
|
entrypoint: ["/docker-entrypoint.sh"]
|
||||||
|
volumes:
|
||||||
|
- "./docker/ci-config:/config"
|
||||||
|
environment:
|
||||||
|
POSTAL_CONFIG_ROOT: /config
|
||||||
|
KATAPULT_CONFIG_FILE: /ci-config.yml
|
||||||
|
WAIT_FOR_TIMEOUT: 90
|
||||||
|
WAIT_FOR_TARGETS: |-
|
||||||
|
mariadb:3306
|
||||||
|
rabbitmq:5672
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
image: mariadb
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
MARIADB_DATABASE: postal
|
||||||
|
MARIADB_ALLOW_EMPTY_PASSWORD: 'yes'
|
||||||
|
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: 'yes'
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
image: rabbitmq:3
|
||||||
|
restart: always
|
||||||
19
docker/ci-config/fast_server.cert
Normal file
19
docker/ci-config/fast_server.cert
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDBTCCAe2gAwIBAgIUexj/Ul7/jvs4L6q6H3MSYsW4FbkwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwEjEQMA4GA1UEAwwHZGVmYXVsdDAeFw0yMTA3MjYxNjQwNTRaFw0zMTA3MjQx
|
||||||
|
NjQwNTRaMBIxEDAOBgNVBAMMB2RlZmF1bHQwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
||||||
|
DwAwggEKAoIBAQDRNaLmKp75o6I37JCpO2e8IIWBqLTpYGomvAWgKdB8v0AyWMcy
|
||||||
|
kE5IWZcFICBTJBpRTTHdCfrDnnqvS0AhMqpB3xPw0/DOCDhAxri6Cg4yxecXkFZP
|
||||||
|
Ckx1ga1sUb9ej8fYBWx9/g6j7waRSGtRB0zwS94tJdJa9XAVj3e97f3CEAr9wPQG
|
||||||
|
oCC/HQfSgZTho3RPik0x3Wi3Kf9JMHRbBZFDW/a/Z0KjmtFFebJNXBOH7r0Itq82
|
||||||
|
DY14UqHtG6omZUrGu/Dsx8++USaV03rOq2fSKuol4lEqBWfqI2tzal5hE/46Glbn
|
||||||
|
ukM+/Iq4+t4ydNsYrhxetsNl3mTWiDkcmYV/AgMBAAGjUzBRMB0GA1UdDgQWBBS+
|
||||||
|
6ok381yre3ATn7f5cx6VrBg9+jAfBgNVHSMEGDAWgBS+6ok381yre3ATn7f5cx6V
|
||||||
|
rBg9+jAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAQPFR90MKT
|
||||||
|
LiwMCCRjpTfMtKYF9rkNTIptCSResfeiwQ3KboBeE/jZzVzk1Pmy5Cvsy/i8zCfz
|
||||||
|
DcQbxKG82rmUwoPcS/Q0TKjmNcmwiLVvAuR8M8JJnZQiXux+Hb7yKgF/35U6FBuE
|
||||||
|
jqkWNpuTh5dVEC71hfl6JDuAFrQo+KguppMrbGyT5/yzU99YJR0wI0jjQlBvM9BC
|
||||||
|
JMf/IA5Q0XZFPpqFSDIud3xqrzbhBgdkBO1MRs/6NAY+pGDxQ5hWlVcn+f/spQZc
|
||||||
|
03PD+xZjtauUBfsrwk5PpOyGKL4bxgbt2S1aoIgLOjRZwpWFKQwuEcJNi9mDTU6j
|
||||||
|
mEYzeueHq+7M
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
docker/ci-config/fast_server.key
Normal file
28
docker/ci-config/fast_server.key
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDRNaLmKp75o6I3
|
||||||
|
7JCpO2e8IIWBqLTpYGomvAWgKdB8v0AyWMcykE5IWZcFICBTJBpRTTHdCfrDnnqv
|
||||||
|
S0AhMqpB3xPw0/DOCDhAxri6Cg4yxecXkFZPCkx1ga1sUb9ej8fYBWx9/g6j7waR
|
||||||
|
SGtRB0zwS94tJdJa9XAVj3e97f3CEAr9wPQGoCC/HQfSgZTho3RPik0x3Wi3Kf9J
|
||||||
|
MHRbBZFDW/a/Z0KjmtFFebJNXBOH7r0Itq82DY14UqHtG6omZUrGu/Dsx8++USaV
|
||||||
|
03rOq2fSKuol4lEqBWfqI2tzal5hE/46GlbnukM+/Iq4+t4ydNsYrhxetsNl3mTW
|
||||||
|
iDkcmYV/AgMBAAECggEBALGFK7bWj5MQsIN3rsCK8dkGV4LP3sLw1uILRVLEaG6R
|
||||||
|
8i1Ge7CCFor5ylXFDui9h79ZG2iOIUSAY2X/GmmRDjtayRbfIEQTYXhFp1XlVmrq
|
||||||
|
1s594V6sRHipErkJHLNmmZLJ92dpfo7IMfBxXO6inTyBhAMXRsl73iHNXTPCkEJr
|
||||||
|
xbrnQPw5g1f7amGS09Iz4CEwVs7PABA7V1uhGRyCESp9nUrdQpHKPfjAIi+KMNZw
|
||||||
|
0Eb/Bj4NSHNokmbp2TUJ1lRAsFmunjHpgdZ18CR1G8naSjhtd11/HrQ5b0LWVdsE
|
||||||
|
0Igq1/i0Os75lFi2d8ZSPrxIp9FQd61wrujPXiOFqeECgYEA6z+VulbI1D/CTkft
|
||||||
|
nvc46xsop+j+N0BYLUzorstA2INCoORHM8rZseJ4QDJcou4gXg6NfdIkoncnTDaa
|
||||||
|
p0xZfNsP3o3lQHRiDDrzRfrTt8XogYA4MQQzHsEHarwHlRd4Ftsu43rCuLZX7g9r
|
||||||
|
BE0OsjsY3Wy9qW9UxKGA50XG0EkCgYEA46oJsayy+rIgm9EPn09j9ezGz9o5KOe6
|
||||||
|
Pjo5CYLKVuVkkQugAozwvf/+SumxVdepA9aUQ635Euw/Dpm/2SPaiBN4H4tLhRNp
|
||||||
|
YchpiOwWg9ThC26w7jRk0rdBWUIzisZvIeBo1w5ye/HB3Ztl2MAz6Yv3SAOj0mNv
|
||||||
|
ogXzuQ3yN4cCgYAq8RlowUy5icXzOigC+4fVSsjaFarJ9SHjawWSWqHEo/k2m1Tv
|
||||||
|
/FhOo1NmDItiZmtcH/XuAL0VNwDiZZlHbqVrKCW2b1posJXxO5WKsaWSBztQ4FHh
|
||||||
|
iK24MG4lKpuLuJQAQBRIC/GdfBOC7iePym0jVaxNRvs8AYmMtxprnQ4UmQKBgQDQ
|
||||||
|
p8oktnR/QfyS8oPP7fJetbjtTUMwE1nlqHUYG3AZPjrymOX5EHWgndvRiueGFpcI
|
||||||
|
NoVCllN+nVmZpx5nA+5I4xcoSgFYIRdnkEfxPvfPsa7kTHoKh6iUW3KgPQWCPiYi
|
||||||
|
tUtBNzOEF2ooEkHA6z9o4Ggt73AY5hutMqlSxM5nRwKBgBP0OqiyHeLbORHwOZeE
|
||||||
|
459uSE7UmoJINKgRWqdGprmfQZZvzoI0jvAvRvGIt0DYyS5o25AEAO6Y84DkkXGf
|
||||||
|
8yNHXJf6F6VPt40S5XOyJ8wikmSlsfLtRWkMsdSXZtsF7zOtE6kTCewxEwrypuzs
|
||||||
|
jNrQgpSolNPcLy6+2hgbiyu5
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
27
docker/ci-config/lets_encrypt.pem
Normal file
27
docker/ci-config/lets_encrypt.pem
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEApj2HYkdZsxxHpaUZV3beSn7p1DeVueDcGTT17Gf/PpV+SHXI
|
||||||
|
lC1AplNcQPI5iPmg7Fyk2KedlaQQJe8BrCrtBm5X5xNbGDuN5s4N8fZ/AJZ+YZOi
|
||||||
|
fTEzixYUjuQtJ0KcdofOMBqr4F4DVIG6ZWGoEbEIdNzDCLUeFv5xBmKGRDKmtEDC
|
||||||
|
SnYcEEFR9ewEHU7KYZbiaGexX0mskKGHMQLiM+xFp6qxsx8isVn+SBo3h94TFdRH
|
||||||
|
wanFg7ZOUo7Vm1gQkclz7+KpKeWjAsBfuFisrl1cGpN0zODltGGiOQVOymccv93k
|
||||||
|
7Dw01OAmr5JCfm5Ch9V9pVGlkSykAG93UrfhVwIDAQABAoIBACe+7ECGGJ8nMsYa
|
||||||
|
3B06UVl0UImppIWliloIfIfCMZeP/HpslsE+tIdPxO3OPA1QybXZTJx0LswZRrcb
|
||||||
|
FsZIGRWBiki4Kv53Nq0pNNJWAfVtBdhkiOPvwIgPhmjHizgox+na/GQp7FAfiiJJ
|
||||||
|
Rfx5Rcq9De2K3qKVUxViTjmdksZ5Bw4RzLNAa4QEUw8oZ0QTELvBISo2m6IlLWQq
|
||||||
|
YRyA2X2bbOjIRbvGfouFLuzqqrtqy76jyamTlTGP3BV7PcJlS+HRhpgXRX1GDANz
|
||||||
|
MGijGkk+g8umTdj2CIuUbfC6DvYv1XiskPWsMw+1Vel/pKdSbT8trCluG5AGcPeB
|
||||||
|
08wViSkCgYEA099Nr/fXDqqjulG5uIO624kE5ED3AbsShsCJHQMDjX79xzljjXXm
|
||||||
|
C5nydj9xRiWB9xt8ptL4ZDOm/EyzFYJmkRWe0eMHU6vUZpbRBRMSHPQhVs4PMDtB
|
||||||
|
OJ2+sZL/vIaqF6W8VYzohEGVoN34sNDh7MRX283V2XSAgi7PEWdzVpUCgYEAyN0z
|
||||||
|
2wBftrd85harUfryZwPNh53HrA0Xku3AqKymb5ukS2uQFQ904cvxlIOxEZGVlW1r
|
||||||
|
HWwEgvd1QkiovT6FExSgQoMMShiRJDeJJVqaR0/UD7hHyvX5P8LKUosQaJUWrA09
|
||||||
|
Y777tskJX34WWyzJgvHTnQ2TA4MQAaJEHb08+TsCgYEAzbx+PMymuWg72tY3SRQp
|
||||||
|
o7qW1Gq9MKIOqGlX+6MMlR7mocl5gUkmHMfd6LNMdHhBjsnTLk+YwfxiP4bfM5jP
|
||||||
|
rjzXXypc2AP4GbKDv7C4GwN5SEiJ+STg/XA4V0jOKqx9iL74df6BXsQs3uwM7O25
|
||||||
|
JOe4BQoIicOWclOv4U+acU0CgYAr8ckghqpqDSa0KA1/OAnEY96ZZvmCOLMJoB5g
|
||||||
|
SLV5AXImVfgFw4XsyHOn7E/W6iTxtiiTHUi3ZnAu+jqAfKccj4yoQId1xn4qkEPe
|
||||||
|
+j16kIpyjfyW+M15F6KwAGCsoMF/Dr55jhT/3mfAjpNRizDjBwkm+QtK32enE9sX
|
||||||
|
LomidQKBgBxdncRWWwCKtD8MCW/fkK/jGFVhy4dxzgAJCGy1ThuAylkHRscTmszt
|
||||||
|
Pgp1Layd2fGWM+ohTrzPZAkoa7UqTvDxGe50ODdY4nw01/s4RGVBDbnLOBJ8yUMO
|
||||||
|
SwAgEqOjEWEyHl4tkcBWcNzu0QWPd7NPmXuh/7dAyIJ66fL3R6y1
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
51
docker/ci-config/postal.yml
Normal file
51
docker/ci-config/postal.yml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
general:
|
||||||
|
use_ip_pools: false
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
bind_address: 127.0.0.1
|
||||||
|
port: 5000
|
||||||
|
|
||||||
|
smtp_server:
|
||||||
|
port: 2525
|
||||||
|
|
||||||
|
logging:
|
||||||
|
stdout: false
|
||||||
|
|
||||||
|
main_db:
|
||||||
|
host: mariadb
|
||||||
|
username: root
|
||||||
|
password:
|
||||||
|
database: postal
|
||||||
|
|
||||||
|
message_db:
|
||||||
|
host: mariadb
|
||||||
|
username: root
|
||||||
|
password:
|
||||||
|
prefix: postal
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
host: rabbitmq
|
||||||
|
username: guest
|
||||||
|
password: guest
|
||||||
|
vhost: null
|
||||||
|
|
||||||
|
dns:
|
||||||
|
mx_records:
|
||||||
|
- mx.postal.example.com
|
||||||
|
smtp_server_hostname: postal.example.com
|
||||||
|
spf_include: spf.postal.example.com
|
||||||
|
return_path: rp.postal.example.com
|
||||||
|
route_domain: routes.postal.example.com
|
||||||
|
track_domain: track.postal.example.com
|
||||||
|
|
||||||
|
smtp:
|
||||||
|
host: 127.0.0.1
|
||||||
|
port: 2525
|
||||||
|
username:
|
||||||
|
password:
|
||||||
|
from_name: Postal
|
||||||
|
from_address: postal@yourdomain.com
|
||||||
|
|
||||||
|
rails:
|
||||||
|
secret_key: 5e82ca222ccc8642fb38a8ea4b847408b983b42a497ec16b499ed89ba506a4edcab8ac015b32dbd1ea620119484e0c1dc056f97b4b37cd29146192df5ccd6abec345a0125c424daad12430a4796d108197c746f5eb8e9e1faa36a8ff8d0c5a9cf00191f997c354341fd656ca0ef9d7b40a37ea4b1b1e78fe9030fa9990dbb662
|
||||||
|
environment: test
|
||||||
15
docker/ci-config/signing.key
Normal file
15
docker/ci-config/signing.key
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIICXQIBAAKBgQDWt+8XMJEoeOd5DW0ETcj7oklUiyd39h71ZsBxlZSOSydsb+ft
|
||||||
|
26C/dfJmT/1W38oxhct1iuRN6ETNHNeLtwrysxhpmSiea/eU8Iv3s4WVgdTJyneT
|
||||||
|
H++yuXwOyEmb1opc7igSRfbFLkeVcYm45rnzbjf/26UaFwmtZlxPI0LZrQIDAQAB
|
||||||
|
AoGAA8cOpMjM9PpTkDSlQ1se+xZa1erw0dJ5rvWU0yq/h1VZJzY8zVl81YF8t0IX
|
||||||
|
Ae1EAGULNFEyPRCmDTnBrQqWXbB5bqZIROKT+1Ruo1Kg6OUsrSDK3cDWYM2lInB/
|
||||||
|
/CXKo4pv82Zh9iS9qj7URFOEzEX43KNXCrfrLSOVRp+xnB0CQQDzxOhujaSqGlXW
|
||||||
|
wLdrTPRWp63SNbkhWK8FXnkeoyH02EvlWSIGQL2deDaOQk9VKd7kCes9MyWC9d7L
|
||||||
|
FO/e7GdDAkEA4X3ieo3Wted69PG3c+jN//nA1WZdgHKucGkOTk1MakqG6kf7DeVt
|
||||||
|
Uj2AFR8wxtKDYi9G+YxdKb+lI/T0CI9UTwJBALwf3UTcWRTRiCdYyPStCfAKLbIJ
|
||||||
|
tdrPRxr8orqLKPx9JG1WEVUEB5GMIYY+FF1kF9ii8wFjBHMB7rOJb+j5RmMCQA27
|
||||||
|
U8pwzs1/Dj7SZYCagcj/1Z1pQXJsCXFxBF0CWg/y/+pOfdxnx1OFyUIAB0FkWnnl
|
||||||
|
NSZHRPkg4Zah+SZ4TAMCQQDid1Cp6nhlntpOANWIXxkJJuDVYepQN1AgCvwZ3OMl
|
||||||
|
jOfmHNFkXlzb4EYr+uoab2cXV3TNVtau7Z5/Se1ZTVSp
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
@@ -39,7 +39,7 @@ module Postal
|
|||||||
elsif __FILE__ =~ /\A\/opt\/postal/
|
elsif __FILE__ =~ /\A\/opt\/postal/
|
||||||
Pathname.new("/opt/postal/config")
|
Pathname.new("/opt/postal/config")
|
||||||
else
|
else
|
||||||
Pathname.new(File.expand_path("../../../config", __FILE__))
|
Pathname.new(File.expand_path("../../../config/postal", __FILE__))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
ENV['POSTAL_CONFIG_ROOT'] = File.expand_path('../config', __FILE__)
|
ENV['POSTAL_CONFIG_ROOT'] ||= File.expand_path('../config', __FILE__)
|
||||||
|
|
||||||
require File.expand_path('../../config/environment', __FILE__)
|
require File.expand_path('../../config/environment', __FILE__)
|
||||||
require 'rspec/rails'
|
require 'rspec/rails'
|
||||||
@@ -6,6 +6,9 @@ require 'spec_helper'
|
|||||||
require 'factory_bot'
|
require 'factory_bot'
|
||||||
require 'database_cleaner'
|
require 'database_cleaner'
|
||||||
|
|
||||||
|
DatabaseCleaner.allow_remote_database_url = true
|
||||||
|
ActiveRecord::Base.logger = Logger.new("/dev/null")
|
||||||
|
|
||||||
FACTORIES_EXCLUDED_FROM_LINT = []
|
FACTORIES_EXCLUDED_FROM_LINT = []
|
||||||
Dir[File.expand_path('../factories/*.rb', __FILE__)].each { |f| require f }
|
Dir[File.expand_path('../factories/*.rb', __FILE__)].each { |f| require f }
|
||||||
|
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم