94 lines
3.0 KiB
Python
94 lines
3.0 KiB
Python
import os
|
|
import sys
|
|
from typing import Optional
|
|
|
|
from .base import * # noqa
|
|
|
|
# Ensure debug features are off
|
|
DEBUG = bool(os.environ.get("TAKAHE__SECURITY_HAZARD__DEBUG", False))
|
|
|
|
# TODO: Allow better setting of allowed_hosts, if we need to
|
|
ALLOWED_HOSTS = ["*"]
|
|
|
|
### User-configurable options, pulled from the environment ###
|
|
|
|
# Secret key
|
|
try:
|
|
SECRET_KEY = os.environ["TAKAHE_SECRET_KEY"]
|
|
except KeyError:
|
|
print("You must specify the TAKAHE_SECRET_KEY environment variable!")
|
|
sys.exit(1)
|
|
|
|
# SSL proxy header
|
|
if "TAKAHE_SECURE_HEADER" in os.environ:
|
|
SECURE_PROXY_SSL_HEADER = (
|
|
"HTTP_" + os.environ["TAKAHE_SECURE_HEADER"].replace("-", "_").upper(),
|
|
"https",
|
|
)
|
|
|
|
# Fallback domain for links
|
|
MAIN_DOMAIN = os.environ["TAKAHE_MAIN_DOMAIN"]
|
|
if "/" in MAIN_DOMAIN:
|
|
print("TAKAHE_MAIN_DOMAIN should be just the domain name - no https:// or path")
|
|
sys.exit(1)
|
|
|
|
# Email config
|
|
if os.environ.get("TAKAHE_EMAIL_CONSOLE_ONLY"):
|
|
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
|
|
SERVER_EMAIL = "test@example.com"
|
|
else:
|
|
SERVER_EMAIL = os.environ["TAKAHE_EMAIL_FROM"]
|
|
if "TAKAHE_EMAIL_SENDGRID_KEY" in os.environ:
|
|
EMAIL_HOST = "smtp.sendgrid.net"
|
|
EMAIL_PORT = 587
|
|
EMAIL_HOST_USER: Optional[str] = "apikey"
|
|
EMAIL_HOST_PASSWORD: Optional[str] = os.environ["TAKAHE_EMAIL_SENDGRID_KEY"]
|
|
EMAIL_USE_TLS = True
|
|
else:
|
|
EMAIL_HOST = os.environ["TAKAHE_EMAIL_HOST"]
|
|
EMAIL_PORT = int(os.environ["TAKAHE_EMAIL_PORT"])
|
|
EMAIL_HOST_USER = os.environ.get("TAKAHE_EMAIL_USER")
|
|
EMAIL_HOST_PASSWORD = os.environ.get("TAKAHE_EMAIL_PASSWORD")
|
|
EMAIL_USE_SSL = EMAIL_PORT == 465
|
|
EMAIL_USE_TLS = EMAIL_PORT == 587
|
|
|
|
AUTO_ADMIN_EMAIL = os.environ.get("TAKAHE_AUTO_ADMIN_EMAIL")
|
|
|
|
# Media storage
|
|
MEDIA_BACKEND = os.environ.get("TAKAHE_MEDIA_BACKEND", None)
|
|
if MEDIA_BACKEND == "local":
|
|
# Note that this MUST be a fully qualified URL in production
|
|
MEDIA_URL = os.environ.get("TAKAHE_MEDIA_URL", "/media/")
|
|
MEDIA_ROOT = os.environ.get("TAKAHE_MEDIA_ROOT", BASE_DIR / "media")
|
|
elif MEDIA_BACKEND == "gcs":
|
|
DEFAULT_FILE_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
|
|
GS_BUCKET_NAME = os.environ["TAKAHE_MEDIA_BUCKET"]
|
|
GS_QUERYSTRING_AUTH = False
|
|
elif MEDIA_BACKEND == "s3":
|
|
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
|
|
AWS_STORAGE_BUCKET_NAME = os.environ["TAKAHE_MEDIA_BUCKET"]
|
|
else:
|
|
print("Unknown TAKAHE_MEDIA_BACKEND value")
|
|
sys.exit(1)
|
|
|
|
# Stator secret token
|
|
STATOR_TOKEN = os.environ.get("TAKAHE_STATOR_TOKEN")
|
|
|
|
# Error email recipients
|
|
if "TAKAHE_ERROR_EMAILS" in os.environ:
|
|
ADMINS = [("Admin", e) for e in os.environ["TAKAHE_ERROR_EMAILS"].split(",")]
|
|
|
|
# Sentry integration
|
|
if "SENTRY_DSN" in os.environ:
|
|
import sentry_sdk
|
|
from sentry_sdk.integrations.django import DjangoIntegration
|
|
|
|
sentry_sdk.init(
|
|
dsn=os.environ["SENTRY_DSN"],
|
|
integrations=[
|
|
DjangoIntegration(),
|
|
],
|
|
traces_sample_rate=1.0,
|
|
send_default_pii=True,
|
|
)
|