nopaque/web/config.py

86 lines
2.6 KiB
Python
Raw Normal View History

from werkzeug.middleware.proxy_fix import ProxyFix
2019-07-03 08:31:23 +00:00
import os
2019-09-11 12:50:29 +00:00
import logging
2019-07-03 08:31:23 +00:00
class Config:
2019-09-05 08:12:40 +00:00
''' ### Flask ### '''
SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
''' ### Flask-Mail ### '''
2019-08-26 07:57:26 +00:00
MAIL_SERVER = os.environ.get('MAIL_SERVER')
MAIL_PORT = int(os.environ.get('MAIL_PORT'))
MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS').lower() == 'true'
2019-07-08 09:29:11 +00:00
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
2019-09-05 08:12:40 +00:00
''' ### Flask-SQLAlchemy ### '''
2020-06-05 12:42:04 +00:00
SQLALCHEMY_DATABASE_URI = 'postgresql://{}:{}@db/{}'.format(
os.environ.get('POSTGRES_USER'),
os.environ.get('POSTGRES_PASSWORD'),
os.environ.get('POSTGRES_DB_NAME'))
SQLALCHEMY_RECORD_QUERIES = True
SQLALCHEMY_TRACK_MODIFICATIONS = False
2019-07-03 13:40:09 +00:00
''' ### nopaque ### '''
2019-12-02 10:34:28 +00:00
NOPAQUE_ADMIN = os.environ.get('NOPAQUE_ADMIN')
NOPAQUE_CONTACT = os.environ.get('NOPAQUE_CONTACT')
NOPAQUE_MAIL_SENDER = os.environ.get('NOPAQUE_MAIL_SENDER')
NOPAQUE_MAIL_SUBJECT_PREFIX = '[nopaque]'
NOPAQUE_PROTOCOL = os.environ.get('NOPAQUE_PROTOCOL')
2020-04-09 05:57:52 +00:00
NOPAQUE_STORAGE = os.environ.get('NOPAQUE_STORAGE')
2019-09-05 08:12:40 +00:00
2020-05-27 09:03:50 +00:00
os.makedirs('logs', exist_ok=True)
logging.basicConfig(filename='logs/nopaque.log',
format='[%(asctime)s] %(levelname)s in '
2020-07-10 09:36:54 +00:00
'%(pathname)s:%(lineno)d - %(message)s',
2020-05-27 09:03:50 +00:00
datefmt='%Y-%m-%d %H:%M:%S', filemode='w')
''' ### Security enhancements ### '''
if NOPAQUE_PROTOCOL == 'https':
''' ### Flask ### '''
SESSION_COOKIE_SECURE = True
''' ### Flask-Login ### '''
REMEMBER_COOKIE_HTTPONLY = True
REMEMBER_COOKIE_SECURE = True
2019-07-03 13:40:09 +00:00
@staticmethod
def init_app(app):
2020-07-30 12:17:51 +00:00
proxy_fix_kwargs = {'x_for': 1, 'x_host': 1, 'x_port': 1, 'x_proto': 1}
app.wsgi_app = ProxyFix(app.wsgi_app, **proxy_fix_kwargs)
2019-07-03 13:40:09 +00:00
class DevelopmentConfig(Config):
2019-09-05 08:12:40 +00:00
''' ### Flask ### '''
2019-07-03 13:40:09 +00:00
DEBUG = True
2020-05-27 09:03:50 +00:00
''' ### nopaque ### '''
NOPAQUE_LOG_LEVEL = os.environ.get('NOPAQUE_LOG_LEVEL') or 'DEBUG'
logging.basicConfig(level=NOPAQUE_LOG_LEVEL)
2019-07-03 13:40:09 +00:00
class TestingConfig(Config):
2019-09-05 14:39:50 +00:00
''' ### Flask ### '''
TESTING = True
''' ### Flask-SQLAlchemy ### '''
SQLALCHEMY_DATABASE_URI = 'sqlite://'
2019-09-05 14:39:50 +00:00
''' ### Flask-WTF ### '''
WTF_CSRF_ENABLED = False
2019-09-05 08:12:40 +00:00
class ProductionConfig(Config):
2020-05-27 09:03:50 +00:00
''' ### nopaque ### '''
NOPAQUE_LOG_LEVEL = os.environ.get('NOPAQUE_LOG_LEVEL') or 'ERROR'
logging.basicConfig(level=NOPAQUE_LOG_LEVEL)
2019-07-03 13:40:09 +00:00
config = {
'development': DevelopmentConfig,
2019-07-08 08:52:36 +00:00
'testing': TestingConfig,
2019-09-05 08:12:40 +00:00
'production': ProductionConfig,
2020-05-27 09:03:50 +00:00
'default': DevelopmentConfig,
2019-07-03 13:40:09 +00:00
}