مراية لـ
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/*
|
||||
storage/*
|
||||
tmp/*
|
||||
spec/*
|
||||
.git/*
|
||||
.github/*
|
||||
.vscode/*
|
||||
|
||||
2
.gitignore
مباع
2
.gitignore
مباع
@@ -23,6 +23,8 @@ config/lets_encrypt.pem
|
||||
config/signing.key
|
||||
config/fast_server.cert
|
||||
config/fast_server.key
|
||||
config/postal/**/*
|
||||
|
||||
|
||||
public/assets
|
||||
vendor/bundle
|
||||
|
||||
@@ -15,6 +15,7 @@ RUN apt-get update \
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
netcat \
|
||||
curl \
|
||||
libmariadbclient-dev \
|
||||
nano \
|
||||
@@ -46,6 +47,10 @@ RUN echo $VERSION > VERSION
|
||||
ENTRYPOINT [ "/docker-entrypoint.sh" ]
|
||||
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
|
||||
# Copy temporary configuration file which can be used for
|
||||
# running the asset precompilation.
|
||||
|
||||
18
Makefile
18
Makefile
@@ -96,3 +96,21 @@ ifneq ($(DOCKER_TAG_VERSION),)
|
||||
"$(DOCKER_IMAGE):$(DOCKER_TAG_VERSION)" && \
|
||||
docker push "$(DOCKER_IMAGE):$(DOCKER_TAG_VERSION)"
|
||||
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'
|
||||
Postal.check_config!
|
||||
|
||||
ENV['DATABASE_URL'] = Postal.database_url
|
||||
ENV['RAILS_ENV'] = Postal.config.rails&.environment || 'development'
|
||||
|
||||
if ENV['PROC_NAME']
|
||||
$0="[postal] #{ENV['PROC_NAME']}"
|
||||
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/
|
||||
Pathname.new("/opt/postal/config")
|
||||
else
|
||||
Pathname.new(File.expand_path("../../../config", __FILE__))
|
||||
Pathname.new(File.expand_path("../../../config/postal", __FILE__))
|
||||
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 'rspec/rails'
|
||||
@@ -6,6 +6,9 @@ require 'spec_helper'
|
||||
require 'factory_bot'
|
||||
require 'database_cleaner'
|
||||
|
||||
DatabaseCleaner.allow_remote_database_url = true
|
||||
ActiveRecord::Base.logger = Logger.new("/dev/null")
|
||||
|
||||
FACTORIES_EXCLUDED_FROM_LINT = []
|
||||
Dir[File.expand_path('../factories/*.rb', __FILE__)].each { |f| require f }
|
||||
|
||||
|
||||
المرجع في مشكلة جديدة
حظر مستخدم