@@ -0,0 +1,65 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
from urllib.parse import urlparse, unquote, parse_qs
|
||||
from dotenv import load_dotenv
|
||||
BASE_DIR=Path(__file__).resolve().parent.parent
|
||||
load_dotenv(os.getenv('DASHBOARD_ENV_FILE', str(BASE_DIR/'.env')))
|
||||
SECRET_KEY=os.environ.get('DJANGO_SECRET_KEY','')
|
||||
if not SECRET_KEY or SECRET_KEY.startswith('CHANGE_ME'):
|
||||
raise RuntimeError('Set a random DJANGO_SECRET_KEY in .env')
|
||||
DEBUG=os.getenv('DEBUG','0')=='1'
|
||||
ALLOWED_HOSTS=os.getenv('ALLOWED_HOSTS','127.0.0.1,localhost').split(',')
|
||||
CSRF_TRUSTED_ORIGINS=list(filter(None,os.getenv('CSRF_TRUSTED_ORIGINS','').split(',')))
|
||||
INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','rest_framework','monitoring']
|
||||
MIDDLEWARE=['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware']
|
||||
ROOT_URLCONF='config.urls'
|
||||
TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[],'APP_DIRS':True,'OPTIONS':{'context_processors':['django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages']}}]
|
||||
WSGI_APPLICATION='config.wsgi.application'
|
||||
if os.getenv('TEST_SQLITE')=='1':
|
||||
DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':BASE_DIR/'var/test.sqlite3'}}
|
||||
else:
|
||||
u=urlparse(os.environ['DATABASE_URL'])
|
||||
if u.scheme not in ('postgres','postgresql'): raise RuntimeError('PostgreSQL is required')
|
||||
DATABASES={'default':{'ENGINE':'django.db.backends.postgresql','NAME':u.path.lstrip('/'),'USER':unquote(u.username or ''),'PASSWORD':unquote(u.password or ''),'HOST':u.hostname,'PORT':u.port or 5432,'CONN_MAX_AGE':60,'OPTIONS':{k:v[0] for k,v in parse_qs(u.query).items() if k in ('sslmode','sslrootcert')}}}
|
||||
AUTH_PASSWORD_VALIDATORS=[{'NAME':'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'},{'NAME':'django.contrib.auth.password_validation.MinimumLengthValidator'},{'NAME':'django.contrib.auth.password_validation.CommonPasswordValidator'},{'NAME':'django.contrib.auth.password_validation.NumericPasswordValidator'}]
|
||||
LANGUAGE_CODE='de-de'
|
||||
TIME_ZONE='Europe/Berlin'
|
||||
USE_TZ=True
|
||||
STATIC_URL='/static/'
|
||||
STATIC_ROOT=BASE_DIR/'staticfiles'
|
||||
DEFAULT_AUTO_FIELD='django.db.models.BigAutoField'
|
||||
SECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTO','https')
|
||||
SESSION_COOKIE_SECURE=os.getenv('COOKIE_SECURE','1')=='1'
|
||||
CSRF_COOKIE_SECURE=SESSION_COOKIE_SECURE
|
||||
SECURE_CONTENT_TYPE_NOSNIFF=True
|
||||
SECURE_HSTS_SECONDS=0 if DEBUG else 31536000
|
||||
SECURE_HSTS_INCLUDE_SUBDOMAINS=False
|
||||
SECURE_HSTS_PRELOAD=False
|
||||
X_FRAME_OPTIONS='DENY'
|
||||
DATA_UPLOAD_MAX_MEMORY_SIZE=2*1024*1024
|
||||
REST_FRAMEWORK={'DEFAULT_AUTHENTICATION_CLASSES':['monitoring.auth.BearerAuthentication'],'DEFAULT_PERMISSION_CLASSES':['rest_framework.permissions.IsAuthenticated'],'DEFAULT_RENDERER_CLASSES':['rest_framework.renderers.JSONRenderer'],'DEFAULT_PARSER_CLASSES':['rest_framework.parsers.JSONParser'],'DEFAULT_THROTTLE_CLASSES':['rest_framework.throttling.AnonRateThrottle'],'DEFAULT_THROTTLE_RATES':{'anon':'60/min'}}
|
||||
if os.getenv('TEST_SQLITE')=='1':
|
||||
CACHES={'default':{'BACKEND':'django.core.cache.backends.locmem.LocMemCache'}}
|
||||
else:
|
||||
CACHES={'default':{'BACKEND':'django.core.cache.backends.redis.RedisCache','LOCATION':os.environ['CACHE_URL']}}
|
||||
CELERY_BROKER_URL=os.environ.get('CELERY_BROKER_URL','redis://127.0.0.1:6379/5')
|
||||
CELERY_TASK_IGNORE_RESULT=True
|
||||
CELERY_TASK_SERIALIZER='json'
|
||||
CELERY_ACCEPT_CONTENT=['json']
|
||||
CELERY_TIMEZONE='UTC'
|
||||
CELERY_BEAT_SCHEDULE={'alarms':{'task':'monitoring.tasks.evaluate_alarms','schedule':15.0},'mail':{'task':'monitoring.tasks.deliver_notifications','schedule':30.0},'retention':{'task':'monitoring.tasks.cleanup','schedule':3600.0}}
|
||||
EMAIL_BACKEND=os.getenv('EMAIL_BACKEND','django.core.mail.backends.smtp.EmailBackend')
|
||||
EMAIL_HOST=os.getenv('EMAIL_HOST','localhost')
|
||||
EMAIL_PORT=int(os.getenv('EMAIL_PORT','25'))
|
||||
EMAIL_USE_TLS=os.getenv('EMAIL_USE_TLS','0')=='1'
|
||||
EMAIL_HOST_USER=os.getenv('EMAIL_HOST_USER','')
|
||||
EMAIL_HOST_PASSWORD=os.getenv('EMAIL_HOST_PASSWORD','')
|
||||
EMAIL_TIMEOUT=15
|
||||
DEFAULT_FROM_EMAIL=os.getenv('DEFAULT_FROM_EMAIL','monitoring@localhost')
|
||||
ALERT_RECIPIENTS=list(filter(None,os.getenv('ALERT_RECIPIENTS','').split(',')))
|
||||
LOGGING={'version':1,'disable_existing_loggers':False,'handlers':{'console':{'class':'logging.StreamHandler'}},'root':{'handlers':['console'],'level':'INFO'}}
|
||||
|
||||
CELERY_WORKER_SEND_TASK_EVENTS=True
|
||||
CELERY_TASK_SEND_SENT_EVENT=True
|
||||
CELERY_TASK_TRACK_STARTED=True
|
||||
CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP=True
|
||||
Reference in New Issue
Block a user