mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-12-25 19:04:18 +00:00
133 lines
5.7 KiB
Python
133 lines
5.7 KiB
Python
from dotenv import load_dotenv
|
|
from logging.handlers import RotatingFileHandler
|
|
from werkzeug.middleware.proxy_fix import ProxyFix
|
|
import logging
|
|
import os
|
|
|
|
|
|
basedir = os.path.abspath(os.path.dirname(__file__))
|
|
load_dotenv(os.path.join(basedir, '.env'))
|
|
|
|
|
|
class Config:
|
|
''' # Flask # '''
|
|
PREFERRED_URL_SCHEME = os.environ.get('PREFERRED_URL_SCHEME', 'http')
|
|
SECRET_KEY = os.environ.get('SECRET_KEY', 'hard to guess string')
|
|
SERVER_NAME = os.environ.get('SERVER_NAME')
|
|
SESSION_COOKIE_SECURE = \
|
|
os.environ.get('SESSION_COOKIE_SECURE', 'false').lower() == 'true'
|
|
TEMPLATES_AUTO_RELOAD = \
|
|
os.environ.get('TEMPLATES_AUTO_RELOAD', 'false').lower() == 'true'
|
|
|
|
''' # Flask-Hashids '''
|
|
HASHIDS_MIN_LENGTH = 32
|
|
|
|
''' # Flask-Login # '''
|
|
REMEMBER_COOKIE_HTTPONLY = True
|
|
REMEMBER_COOKIE_SECURE = \
|
|
os.environ.get('REMEMBER_COOKIE_SECURE', 'false').lower() == 'true'
|
|
|
|
''' # Flask-Mail # '''
|
|
MAIL_DEFAULT_SENDER = os.environ.get('MAIL_DEFAULT_SENDER')
|
|
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
|
|
MAIL_PORT = int(os.environ.get('MAIL_PORT'))
|
|
MAIL_SERVER = os.environ.get('MAIL_SERVER')
|
|
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
|
|
MAIL_USE_SSL = os.environ.get('MAIL_USE_SSL', 'false').lower() == 'true'
|
|
MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', 'false').lower() == 'true'
|
|
|
|
''' # Flask-SQLAlchemy # '''
|
|
SQLALCHEMY_DATABASE_URI = os.environ.get(
|
|
'SQLALCHEMY_DATABASE_URI',
|
|
'sqlite:///' + os.path.join(basedir, 'app.db')
|
|
)
|
|
SQLALCHEMY_RECORD_QUERIES = True
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
''' # nopaque # '''
|
|
NOPAQUE_ADMIN = os.environ.get('NOPAQUE_ADMIN')
|
|
NOPAQUE_DAEMON_ENABLED = \
|
|
os.environ.get('NOPAQUE_DAEMON_ENABLED', 'true').lower() == 'true'
|
|
NOPAQUE_DATA_DIR = os.path.abspath(os.environ.get('NOPAQUE_DATA_DIR'))
|
|
NOPAQUE_DOCKER_REGISTRY = 'gitlab.ub.uni-bielefeld.de:4567'
|
|
NOPAQUE_DOCKER_IMAGE_PREFIX = f'{NOPAQUE_DOCKER_REGISTRY}/sfb1288inf/'
|
|
NOPAQUE_DOCKER_REGISTRY_USERNAME = \
|
|
os.environ.get('NOPAQUE_DOCKER_REGISTRY_USERNAME')
|
|
NOPAQUE_DOCKER_REGISTRY_PASSWORD = \
|
|
os.environ.get('NOPAQUE_DOCKER_REGISTRY_PASSWORD')
|
|
NOPAQUE_MAIL_SUBJECT_PREFIX = '[nopaque]'
|
|
NOPAQUE_SERVICE_DESK = 'gitlab-ub-incoming+sfb1288inf-nopaque-1324-issue-@jura.uni-bielefeld.de' # noqa
|
|
NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI = \
|
|
os.environ.get('NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI')
|
|
|
|
NOPAQUE_LOG_DATE_FORMAT = \
|
|
os.environ.get('NOPAQUE_LOG_DATE_FORMAT', '%Y-%m-%d %H:%M:%S')
|
|
NOPAQUE_LOG_FORMAT = os.environ.get(
|
|
'NOPAQUE_LOG_DATE_FORMAT',
|
|
'[%(asctime)s] %(levelname)s in '
|
|
'%(pathname)s (function: %(funcName)s, line: %(lineno)d): %(message)s'
|
|
)
|
|
NOPAQUE_LOG_LEVEL = os.environ.get('NOPAQUE_LOG_LEVEL', 'INFO')
|
|
NOPAQUE_LOG_FILE_ENABLED = \
|
|
os.environ.get('NOPAQUE_LOG_FILE_ENABLED', 'true').lower() == 'true'
|
|
NOPAQUE_LOG_FILE_DIR = \
|
|
os.environ.get('NOPAQUE_LOG_FILE_DIR', os.path.join(basedir, 'logs'))
|
|
NOPAQUE_LOG_FILE_LEVEL = \
|
|
os.environ.get('NOPAQUE_LOG_FILE_LEVEL', NOPAQUE_LOG_LEVEL)
|
|
NOPAQUE_LOG_STDERR_ENABLED = \
|
|
os.environ.get('NOPAQUE_LOG_STDERR_ENABLED', 'false').lower() == 'true'
|
|
NOPAQUE_LOG_STDERR_LEVEL = \
|
|
os.environ.get('NOPAQUE_LOG_STDERR_LEVEL', NOPAQUE_LOG_LEVEL)
|
|
|
|
NOPAQUE_PROXY_FIX_X_FOR = \
|
|
int(os.environ.get('NOPAQUE_PROXY_FIX_X_FOR', '0'))
|
|
NOPAQUE_PROXY_FIX_X_HOST = \
|
|
int(os.environ.get('NOPAQUE_PROXY_FIX_X_HOST', '0'))
|
|
NOPAQUE_PROXY_FIX_X_PORT = \
|
|
int(os.environ.get('NOPAQUE_PROXY_FIX_X_PORT', '0'))
|
|
NOPAQUE_PROXY_FIX_X_PREFIX = \
|
|
int(os.environ.get('NOPAQUE_PROXY_FIX_X_PREFIX', '0'))
|
|
NOPAQUE_PROXY_FIX_X_PROTO = \
|
|
int(os.environ.get('NOPAQUE_PROXY_FIX_X_PROTO', '0'))
|
|
|
|
@classmethod
|
|
def init_app(cls, app):
|
|
# Set up logging according to the corresponding (NOPAQUE_LOG_*)
|
|
# configurations
|
|
app.logger.setLevel(app.config.get('NOPAQUE_LOG_LEVEL'))
|
|
# Remove existing handlers
|
|
for handler in app.logger.handlers:
|
|
app.logger.removeHandler(handler)
|
|
# Setup handlers
|
|
formatter = logging.Formatter(
|
|
fmt=app.config.get('NOPAQUE_LOG_FORMAT'),
|
|
datefmt=app.config.get('NOPAQUE_LOG_DATE_FORMAT')
|
|
)
|
|
if app.config.get('NOPAQUE_LOG_STDERR_ENABLED'):
|
|
stream_handler = logging.StreamHandler()
|
|
stream_handler.setFormatter(formatter)
|
|
stream_handler.setLevel(app.config.get('NOPAQUE_LOG_STDERR_LEVEL'))
|
|
app.logger.addHandler(stream_handler)
|
|
if app.config.get('NOPAQUE_LOG_FILE_ENABLED'):
|
|
if not os.path.exists(app.config.get('NOPAQUE_LOG_FILE_DIR')):
|
|
os.mkdir(app.config.get('NOPAQUE_LOG_FILE_DIR'))
|
|
rotating_file_handler = RotatingFileHandler(
|
|
os.path.join(app.config.get('NOPAQUE_LOG_FILE_DIR'), 'nopaque.log'), # noqa
|
|
maxBytes=10240,
|
|
backupCount=10
|
|
)
|
|
rotating_file_handler.setFormatter(formatter)
|
|
rotating_file_handler.setLevel(app.config.get('NOPAQUE_LOG_FILE_LEVEL')) # noqa
|
|
app.logger.addHandler(rotating_file_handler)
|
|
|
|
# Set up and apply the ProxyFix middleware according to the
|
|
# corresponding (NOPAQUE_PROXY_FIX_*) configurations
|
|
app.wsgi_app = ProxyFix(
|
|
app.wsgi_app,
|
|
x_for=app.config.get('NOPAQUE_PROXY_FIX_X_FOR'),
|
|
x_host=app.config.get('NOPAQUE_PROXY_FIX_X_HOST'),
|
|
x_port=app.config.get('NOPAQUE_PROXY_FIX_X_PORT'),
|
|
x_prefix=app.config.get('NOPAQUE_PROXY_FIX_X_PREFIX'),
|
|
x_proto=app.config.get('NOPAQUE_PROXY_FIX_X_PROTO')
|
|
)
|