mirror of
https://github.com/deunix-educ/Fail2banMqttActionBanishment.git
synced 2026-08-24 03:11:58 +02:00
78 lines
3.4 KiB
Python
78 lines
3.4 KiB
Python
"""Settings de production : secrets et hôtes fournis par l'environnement."""
|
|
import os
|
|
|
|
from .base import * # noqa: F401,F403
|
|
|
|
SECRET_KEY = os.environ['DJANGO_SECRET_KEY']
|
|
DEBUG = False
|
|
ALLOWED_HOSTS = [h for h in os.environ.get('DJANGO_ALLOWED_HOSTS', '').split(',') if h]
|
|
CSRF_TRUSTED_ORIGINS = [o for o in os.environ.get('DJANGO_CSRF_TRUSTED_ORIGINS', '').split(',') if o]
|
|
|
|
# DB_ENGINE=mariadb (opt-in, voir "sudo ./install.sh install-mariadb") bascule
|
|
# vers MariaDB/MySQL via PyMySQL (pas de mysqlclient : évite une dépendance de
|
|
# compilation C côté paquets système) ; sqlite reste le défaut, sans rien à
|
|
# installer/configurer en plus.
|
|
#
|
|
# DB_ENGINE=postgresql (opt-in) : contrairement à mariadb, pas de
|
|
# sous-commande install.sh dédiée pour l'instant — provisionner le serveur
|
|
# PostgreSQL/la base/l'utilisateur reste manuel, puis renseigner DB_*
|
|
# ci-dessous dans .env. Driver requirements-postgresql.txt
|
|
# (psycopg[binary], pas de compilation C nécessaire non plus) à installer
|
|
# à la main dans le venv (pip install -r requirements-postgresql.txt)
|
|
# avant de basculer DB_ENGINE.
|
|
DB_ENGINE = os.environ.get('DB_ENGINE', 'sqlite')
|
|
if DB_ENGINE == 'mariadb':
|
|
import pymysql
|
|
pymysql.install_as_MySQLdb()
|
|
DATABASES = {
|
|
'default': {
|
|
'ENGINE': 'django.db.backends.mysql',
|
|
'NAME': os.environ.get('DB_NAME', 'fail2ban_emitter'),
|
|
'USER': os.environ.get('DB_USER', 'fail2ban_emitter'),
|
|
'PASSWORD': os.environ.get('DB_PASSWORD', ''),
|
|
'HOST': os.environ.get('DB_HOST', '127.0.0.1'),
|
|
'PORT': os.environ.get('DB_PORT', '3306'),
|
|
}
|
|
}
|
|
elif DB_ENGINE == 'postgresql':
|
|
DATABASES = {
|
|
'default': {
|
|
'ENGINE': 'django.db.backends.postgresql',
|
|
'NAME': os.environ.get('DB_NAME', 'fail2ban_emitter'),
|
|
'USER': os.environ.get('DB_USER', 'fail2ban_emitter'),
|
|
'PASSWORD': os.environ.get('DB_PASSWORD', ''),
|
|
'HOST': os.environ.get('DB_HOST', '127.0.0.1'),
|
|
'PORT': os.environ.get('DB_PORT', '5432'),
|
|
}
|
|
}
|
|
else:
|
|
DATABASES = {
|
|
'default': {
|
|
'ENGINE': 'django.db.backends.sqlite3',
|
|
'NAME': os.environ.get('DJANGO_DB_PATH', str(BASE_DIR / 'db.sqlite3')),
|
|
}
|
|
}
|
|
|
|
STATIC_ROOT = BASE_DIR / 'staticfiles'
|
|
STORAGES = {
|
|
'staticfiles': {
|
|
'BACKEND': 'whitenoise.storage.CompressedManifestStaticFilesStorage',
|
|
},
|
|
}
|
|
MIDDLEWARE = ['whitenoise.middleware.WhiteNoiseMiddleware'] + MIDDLEWARE
|
|
|
|
# Pas de TLS géré ici (pas de reverse proxy devant l'émetteur pour l'instant) :
|
|
# forcer le HTTPS casserait l'accès (redirection en boucle, cookies rejetés).
|
|
# À activer (DJANGO_SECURE_SSL=true) une fois un reverse proxy TLS en place.
|
|
DJANGO_SECURE_SSL = os.environ.get('DJANGO_SECURE_SSL', 'false').lower() == 'true'
|
|
SECURE_SSL_REDIRECT = DJANGO_SECURE_SSL
|
|
SESSION_COOKIE_SECURE = DJANGO_SECURE_SSL
|
|
CSRF_COOKIE_SECURE = DJANGO_SECURE_SSL
|
|
# Daphne ne voit que la connexion interne en clair depuis nginx (proxy_pass
|
|
# http://127.0.0.1:8050) : sans ceci, request.is_secure() est toujours faux
|
|
# côté Django, qui redirige alors indéfiniment (SECURE_SSL_REDIRECT actif
|
|
# mais jamais satisfait) — le gabarit generic/nginx/fail2ban-emitter.example.conf
|
|
# pose bien X-Forwarded-Proto, encore faut-il que Django lui fasse confiance.
|
|
if DJANGO_SECURE_SSL:
|
|
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
|