Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add django-dkim #1231

Merged
merged 5 commits into from
Dec 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 6 additions & 1 deletion TWLight/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
from django.utils.translation import gettext_lazy as _
from django.utils.translation import to_language

import django_dkim

# Import available locales from Faker, so we can determine what languages we fake in tests.
from faker.config import AVAILABLE_LOCALES as FAKER_AVAILABLE_LOCALES

Expand Down Expand Up @@ -417,8 +419,11 @@ def show_toolbar(request):
# DJMAIL CONFIGURATION
# ------------------------------------------------------------------------------

DKIM_PRIVATE_KEY = os.environ.get("DKIM_PRIVATE_KEY", None)
DKIM_SELECTOR = os.environ.get("DKIM_SELECTOR", None)
DKIM_DOMAIN = os.environ.get("DKIM_DOMAIN", None)
DJMAIL_REAL_BACKEND = os.environ.get(
"DJANGO_EMAIL_BACKEND", "django.core.mail.backends.console.EmailBackend"
"DJANGO_EMAIL_BACKEND", "django_dkim.backends.console.EmailBackend"
)
EMAIL_BACKEND = "djmail.backends.async.EmailBackend"
EMAIL_HOST = os.environ.get("DJANGO_EMAIL_HOST", "localhost")
Expand Down
3 changes: 3 additions & 0 deletions bin/debian_swarm_deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ echo "Enter DJANGO_DB_USER:"
read DJANGO_DB_USER
echo "Enter DJANGO_DB_PASSWORD:"
read DJANGO_DB_PASSWORD
echo "Enter DKIM_PRIVATE_KEY:"
read DKIM_PRIVATE_KEY
echo "Enter MYSQL_ROOT_PASSWORD:"
read MYSQL_ROOT_PASSWORD
echo "Enter SECRET_KEY:"
Expand Down Expand Up @@ -72,6 +74,7 @@ cd /srv/TWLight
printf "${DJANGO_DB_NAME}" | docker secret create DJANGO_DB_NAME -
printf "${DJANGO_DB_USER}" | docker secret create DJANGO_DB_USER -
printf "${DJANGO_DB_PASSWORD}" | docker secret create DJANGO_DB_PASSWORD -
printf "${DKIM_PRIVATE_KEY}" | docker secret create DKIM_PRIVATE_KEY -
printf "${MYSQL_ROOT_PASSWORD}" | docker secret create MYSQL_ROOT_PASSWORD -
printf "${SECRET_KEY}" | docker secret create SECRET_KEY -
printf "${TWLIGHT_OAUTH_CONSUMER_KEY}" | docker secret create TWLIGHT_OAUTH_CONSUMER_KEY -
Expand Down
5 changes: 5 additions & 0 deletions bin/twlight_docker_secrets.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ then
export DJANGO_DB_PASSWORD=$(cat /run/secrets/DJANGO_DB_PASSWORD 2>/dev/null)
fi

if [ ! -n "${DKIM_PRIVATE_KEY+isset}" ]
then
export DKIM_PRIVATE_KEY=$(cat /run/secrets/DKIM_PRIVATE_KEY 2>/dev/null)
fi

if [ ! -n "${SECRET_KEY+isset}" ]
then
export SECRET_KEY=$(cat /run/secrets/SECRET_KEY 2>/dev/null)
Expand Down
4 changes: 3 additions & 1 deletion conf/cicd.twlight.env
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
DJANGO_DB_HOST=db
DJANGO_EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
DJANGO_EMAIL_BACKEND=django_dkim.backends.console.EmailBackend
DJANGO_EMAIL_ADMINS_BACKEND=django.core.mail.backends.dummy.EmailBackend
DKIM_SELECTOR=local
DKIM_DOMAIN=localhost
DJANGO_EMAIL_HOST=localhost
DJANGO_SETTINGS_MODULE=TWLight.settings.local
TWLIGHT_HOME=/app
Expand Down
4 changes: 3 additions & 1 deletion conf/local.twlight.env
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
DJANGO_DB_HOST=db
DJANGO_EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
DJANGO_EMAIL_BACKEND=django_dkim.backends.console.EmailBackend
DJANGO_EMAIL_ADMINS_BACKEND=django.core.mail.backends.dummy.EmailBackend
DKIM_SELECTOR=local
DKIM_DOMAIN=localhost
DJANGO_EMAIL_HOST=localhost
DJANGO_SETTINGS_MODULE=TWLight.settings.local
TWLIGHT_HOME=/app
Expand Down
6 changes: 4 additions & 2 deletions conf/production.twlight.env
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
DJANGO_DB_HOST=tasks.production_db
DJANGO_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
DJANGO_EMAIL_ADMINS_BACKEND=django.core.mail.backends.smtp.EmailBackend
DJANGO_EMAIL_BACKEND=django_dkim.backends.smtp.EmailBackend
DJANGO_EMAIL_ADMINS_BACKEND=django_dkim.backends.smtp.EmailBackend
DKIM_SELECTOR=prod
DKIM_DOMAIN=twl.wmflabs.org
DJANGO_EMAIL_HOST=mx-out03.wmcloud.org
DJANGO_SETTINGS_MODULE=TWLight.settings.production
TWLIGHT_HOME=/app
Expand Down
6 changes: 4 additions & 2 deletions conf/staging.twlight.env
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
DJANGO_DB_HOST=tasks.staging_db
DJANGO_EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
DJANGO_EMAIL_ADMINS_BACKEND=django.core.mail.backends.smtp.EmailBackend
DJANGO_EMAIL_BACKEND=django_dkim.backends.console.EmailBackend
DJANGO_EMAIL_ADMINS_BACKEND=django_dkim.backends.smtp.EmailBackend
DKIM_SELECTOR=staging
DKIM_DOMAIN=twl.wmflabs.org
DJANGO_EMAIL_HOST=mx-out03.wmcloud.org
DJANGO_SETTINGS_MODULE=TWLight.settings.staging
TWLIGHT_HOME=/app
Expand Down
2 changes: 2 additions & 0 deletions docker-compose.override.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ secrets:
file: ./secrets/DJANGO_DB_USER
DJANGO_DB_PASSWORD:
file: ./secrets/DJANGO_DB_PASSWORD
DKIM_PRIVATE_KEY:
file: ./secrets/DKIM_PRIVATE_KEY
MYSQL_ROOT_PASSWORD:
file: ./secrets/MYSQL_ROOT_PASSWORD
SECRET_KEY:
Expand Down
3 changes: 3 additions & 0 deletions docker-compose.production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ secrets:
external: true
DJANGO_DB_PASSWORD:
external: true
DKIM_PRIVATE_KEY:
external: true
MYSQL_ROOT_PASSWORD:
external: true
SECRET_KEY:
Expand Down Expand Up @@ -45,6 +47,7 @@ services:
- DJANGO_DB_NAME
- DJANGO_DB_USER
- DJANGO_DB_PASSWORD
- DKIM_PRIVATE_KEY
- SECRET_KEY
- TWLIGHT_OAUTH_CONSUMER_KEY
- TWLIGHT_OAUTH_CONSUMER_SECRET
Expand Down
3 changes: 3 additions & 0 deletions docker-compose.staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ secrets:
external: true
DJANGO_DB_PASSWORD:
external: true
DKIM_PRIVATE_KEY:
external: true
MYSQL_ROOT_PASSWORD:
external: true
SECRET_KEY:
Expand Down Expand Up @@ -45,6 +47,7 @@ services:
- DJANGO_DB_NAME
- DJANGO_DB_USER
- DJANGO_DB_PASSWORD
- DKIM_PRIVATE_KEY
- SECRET_KEY
- TWLIGHT_OAUTH_CONSUMER_KEY
- TWLIGHT_OAUTH_CONSUMER_SECRET
Expand Down
1 change: 1 addition & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ services:
- DJANGO_DB_NAME
- DJANGO_DB_USER
- DJANGO_DB_PASSWORD
- DKIM_PRIVATE_KEY
- SECRET_KEY
- TWLIGHT_OAUTH_CONSUMER_KEY
- TWLIGHT_OAUTH_CONSUMER_SECRET
Expand Down
1 change: 1 addition & 0 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ django-contrib-comments==2.2.0
django-countries==7.5.1
django-crispy-forms==1.14.0
django-cron==0.5.1
git+https://github.com/WikipediaLibrary/django-dkim.git@Jsn.sherman/py3.x
django-durationfield==0.5.5
django_extensions==3.2.3
django-filter==22.1
Expand Down
1 change: 1 addition & 0 deletions secrets/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
!DJANGO_DB_NAME
!DJANGO_DB_PASSWORD
!DJANGO_DB_USER
!DKIM_PRIVATE_KEY
!MYSQL_ROOT_PASSWORD
!SECRET_KEY
!TWLIGHT_OAUTH_CONSUMER_KEY
Expand Down
15 changes: 15 additions & 0 deletions secrets/DKIM_PRIVATE_KEY
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
'''-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDQUTvs1Rqjw6Vq2/LRnI7LzycT1gM1G4ZRMdWiLFg7y4TEPwfW
r6RgR04f56L9PxM1B6gW+gTkm30dwxNbU60u7emcqu+mYCzyVBHx9a4uhI3Ts8sy
67zIIeXarmxh+V/jqmAbdRAzRzAvjs0S74di1mwCplxYvVOEsDOj7OIEDQIDAQAB
AoGAR2rSJIuaqnI0j8IAKSSHQBAw0XgZeWeKUOPI3eReC4HmbnE9eriUnf1UJ1P+
aNvq9c8+LUJh0w4LgtySEklJoaK6rqLsdQhriHRiYThctMlzoZiLuVo6MQdACHBj
5LvjQY+PSIkpdoQumQJAwngyG0Zkg+t2u57UINn+p3zBxoECQQDuaF5HBELdbu84
08UsiG+zvuGoKEjtr4EjRZ9hdgkErooO8SXbJT+ALwJ6M6awGvkxQiPYR39kgCcG
VpB744aFAkEA37Bx33DKOpbOju2IaF4nwJ/JBmz54EvFOTl2ImP9iHM2qfZo8ueg
/iOG2vifayt5FvgTN7I7rpo3oQcI1DLR6QJBANskYmyi9Rd3zjsNJfQeYZb2gZRB
m2+n4Gtcpvk+N2HvUgYUEfkTjwAztfJAIhtEYASwSCSY6/ekeLqxvVOzu8UCQQCm
F4eWF1OxiUS6j9kXVcJCnuJPKR+o0doRkX8MLh6U8KeIL/ThV+gMjCiX8r+8fb0d
tvneAzOZg90Gbgi6NznxAkAXQz0rYjnQwRjlCyS/KUG1fek/EfJBlgiDmMtYuUpq
UPPnqkzsGyB9LqzL4aoKg1LDsbVP0hSt97SYhB9TtcgO
-----END RSA PRIVATE KEY-----'''