Config cleanup

This commit is contained in:
Patrick Jentsch 2022-05-05 15:07:36 +02:00
parent b4082a2547
commit 0a8b32e57e
2 changed files with 65 additions and 47 deletions

View File

@ -33,10 +33,11 @@ HOST_DOCKER_GID=
# HINT: Use this bash command `python -c "import uuid; print(uuid.uuid4().hex)"` # HINT: Use this bash command `python -c "import uuid; print(uuid.uuid4().hex)"`
# SECRET_KEY= # SECRET_KEY=
# DEFAULT: localhost:5000
# Example: nopaque.example.com/nopaque.example.com:5000 # Example: nopaque.example.com/nopaque.example.com:5000
# HINT: If your instance is publicly available on a different Port then 80/443, # HINT: If your instance is publicly available on a different Port then 80/443,
# you will have to add this to the server name # you will have to add this to the server name
SERVER_NAME= # SERVER_NAME=
# CHOOSE ONE: False, True # CHOOSE ONE: False, True
# DEFAULT: False # DEFAULT: False
@ -44,6 +45,15 @@ SERVER_NAME=
# SESSION_COOKIE_SECURE= # SESSION_COOKIE_SECURE=
################################################################################
# Flask-Assets #
# https://webassets.readthedocs.io/en/latest/ #
################################################################################
# CHOOSE ONE: False, True
# DEFAULT: False
# ASSETS_DEBUG=
################################################################################ ################################################################################
# Flask-Login # # Flask-Login #
# https://flask-login.readthedocs.io/en/latest/ # # https://flask-login.readthedocs.io/en/latest/ #
@ -85,7 +95,7 @@ MAIL_USERNAME=
# Flask-SQLAlchemy # # Flask-SQLAlchemy #
# https://flask-sqlalchemy.palletsprojects.com/en/2.x/config/ # # https://flask-sqlalchemy.palletsprojects.com/en/2.x/config/ #
################################################################################ ################################################################################
# DEFAULT: 'sqlite:///<nopaque-basedir>/app.db' # DEFAULT: 'sqlite:///<nopaque-basedir>/data.sqlite'
# NOTE: Use `.` as <nopaque-basedir>, # NOTE: Use `.` as <nopaque-basedir>,
# Don't use a SQLite database when using Docker # Don't use a SQLite database when using Docker
# SQLALCHEMY_DATABASE_URI= # SQLALCHEMY_DATABASE_URI=
@ -104,10 +114,6 @@ NOPAQUE_ADMIN=
# Swarm nodes # Swarm nodes
# NOPAQUE_DATA_DIR= # NOPAQUE_DATA_DIR=
# NOTE: Get these from the nopaque development team
NOPAQUE_DOCKER_REGISTRY_USERNAME=
NOPAQUE_DOCKER_REGISTRY_PASSWORD=
# CHOOSE ONE: False, True # CHOOSE ONE: False, True
# DEFAULT: True # DEFAULT: True
# NOPAQUE_IS_PRIMARY_INSTANCE= # NOPAQUE_IS_PRIMARY_INSTANCE=
@ -115,6 +121,10 @@ NOPAQUE_DOCKER_REGISTRY_PASSWORD=
# transport://[userid:password]@hostname[:port]/[virtual_host] # transport://[userid:password]@hostname[:port]/[virtual_host]
NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI= NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI=
# NOTE: Get these from the nopaque development team
NOPAQUE_DOCKER_REGISTRY_USERNAME=
NOPAQUE_DOCKER_REGISTRY_PASSWORD=
# DEFAULT: %Y-%m-%d %H:%M:%S # DEFAULT: %Y-%m-%d %H:%M:%S
# NOPAQUE_LOG_DATE_FORMAT= # NOPAQUE_LOG_DATE_FORMAT=
@ -141,10 +151,15 @@ NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI=
# DEFAULT: False # DEFAULT: False
# NOPAQUE_LOG_STDERR_ENABLED= # NOPAQUE_LOG_STDERR_ENABLED=
# DEFAULT: NOPAQUE_LOG_LEVEL
# CHOOSE ONE: CRITICAL, ERROR, WARNING, INFO, DEBUG # CHOOSE ONE: CRITICAL, ERROR, WARNING, INFO, DEBUG
# DEFAULT: NOPAQUE_LOG_LEVEL
# NOPAQUE_LOG_STDERR_LEVEL= # NOPAQUE_LOG_STDERR_LEVEL=
# CHOOSE ONE: False, True
# DEFAULT: False
# HINT: Set this to True only if you are using a proxy in front of nopaque
# NOPAQUE_PROXY_FIX_ENABLED=
# DEFAULT: 0 # DEFAULT: 0
# Number of values to trust for X-Forwarded-For # Number of values to trust for X-Forwarded-For
# NOPAQUE_PROXY_FIX_X_FOR= # NOPAQUE_PROXY_FIX_X_FOR=

View File

@ -14,53 +14,53 @@ class Config:
''' # Flask # ''' ''' # Flask # '''
PREFERRED_URL_SCHEME = os.environ.get('PREFERRED_URL_SCHEME', 'http') PREFERRED_URL_SCHEME = os.environ.get('PREFERRED_URL_SCHEME', 'http')
SECRET_KEY = os.environ.get('SECRET_KEY', 'hard to guess string') SECRET_KEY = os.environ.get('SECRET_KEY', 'hard to guess string')
SERVER_NAME = os.environ.get('SERVER_NAME') SERVER_NAME = os.environ.get('SERVER_NAME', 'localhost:5000')
SESSION_COOKIE_SECURE = \ SESSION_COOKIE_SECURE = \
os.environ.get('SESSION_COOKIE_SECURE', 'false').lower() == 'true' os.environ.get('SESSION_COOKIE_SECURE', 'false').lower() == 'true'
TEMPLATES_AUTO_RELOAD = \
os.environ.get('TEMPLATES_AUTO_RELOAD', 'false').lower() == 'true' ''' # Flask-Assets '''
ASSETS_DEBUG = os.environ.get('ASSETS_DEBUG', 'false').lower() == 'true'
''' # Flask-Hashids ''' ''' # Flask-Hashids '''
HASHIDS_MIN_LENGTH = 32 HASHIDS_MIN_LENGTH = 16
''' # Flask-Login # ''' ''' # Flask-Login # '''
REMEMBER_COOKIE_HTTPONLY = True
REMEMBER_COOKIE_SECURE = \ REMEMBER_COOKIE_SECURE = \
os.environ.get('REMEMBER_COOKIE_SECURE', 'false').lower() == 'true' os.environ.get('REMEMBER_COOKIE_SECURE', 'false').lower() == 'true'
''' # Flask-Mail # ''' ''' # Flask-Mail # '''
MAIL_DEFAULT_SENDER = os.environ.get('MAIL_DEFAULT_SENDER') MAIL_DEFAULT_SENDER = os.environ.get('MAIL_DEFAULT_SENDER')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD') MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
MAIL_PORT = int(os.environ.get('MAIL_PORT'))
MAIL_SERVER = os.environ.get('MAIL_SERVER') MAIL_SERVER = os.environ.get('MAIL_SERVER')
MAIL_PORT = int(os.environ.get('MAIL_PORT'))
MAIL_USERNAME = os.environ.get('MAIL_USERNAME') MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_USE_SSL = os.environ.get('MAIL_USE_SSL', 'false').lower() == 'true' MAIL_USE_SSL = os.environ.get('MAIL_USE_SSL', 'false').lower() == 'true'
MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', 'false').lower() == 'true' MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', 'false').lower() == 'true'
''' # Flask-SQLAlchemy # ''' ''' # Flask-SQLAlchemy # '''
SQLALCHEMY_DATABASE_URI = os.environ.get( SQLALCHEMY_DATABASE_URI = \
'SQLALCHEMY_DATABASE_URI', os.environ.get('SQLALCHEMY_DATABASE_URI') \
'sqlite:///' + os.path.join(basedir, 'app.db') or f'sqlite:///{os.path.join(basedir, "data.sqlite")}'
)
SQLALCHEMY_RECORD_QUERIES = True SQLALCHEMY_RECORD_QUERIES = True
SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_TRACK_MODIFICATIONS = False
''' # nopaque # ''' ''' # nopaque # '''
NOPAQUE_ADMIN = os.environ.get('NOPAQUE_ADMIN') NOPAQUE_ADMIN = os.environ.get('NOPAQUE_ADMIN')
NOPAQUE_IS_PRIMARY_INSTANCE = \
os.environ.get('NOPAQUE_IS_PRIMARY_INSTANCE', 'true').lower() == 'true'
NOPAQUE_DATA_DIR = \ NOPAQUE_DATA_DIR = \
os.path.abspath(os.environ.get('NOPAQUE_DATA_DIR', '/mnt/nopaque')) os.path.abspath(os.environ.get('NOPAQUE_DATA_DIR', '/mnt/nopaque'))
NOPAQUE_IS_PRIMARY_INSTANCE = \
os.environ.get('NOPAQUE_IS_PRIMARY_INSTANCE', 'true').lower() == 'true'
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_DOCKER_REGISTRY = 'gitlab.ub.uni-bielefeld.de:4567' NOPAQUE_DOCKER_REGISTRY = 'gitlab.ub.uni-bielefeld.de:4567'
NOPAQUE_DOCKER_IMAGE_PREFIX = f'{NOPAQUE_DOCKER_REGISTRY}/sfb1288inf/' NOPAQUE_DOCKER_IMAGE_PREFIX = f'{NOPAQUE_DOCKER_REGISTRY}/sfb1288inf/'
NOPAQUE_DOCKER_REGISTRY_USERNAME = \ NOPAQUE_DOCKER_REGISTRY_USERNAME = \
os.environ.get('NOPAQUE_DOCKER_REGISTRY_USERNAME') os.environ.get('NOPAQUE_DOCKER_REGISTRY_USERNAME')
NOPAQUE_DOCKER_REGISTRY_PASSWORD = \ NOPAQUE_DOCKER_REGISTRY_PASSWORD = \
os.environ.get('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 = \ NOPAQUE_LOG_DATE_FORMAT = \
os.environ.get('NOPAQUE_LOG_DATE_FORMAT', '%Y-%m-%d %H:%M:%S') os.environ.get('NOPAQUE_LOG_DATE_FORMAT', '%Y-%m-%d %H:%M:%S')
@ -81,6 +81,8 @@ class Config:
NOPAQUE_LOG_STDERR_LEVEL = \ NOPAQUE_LOG_STDERR_LEVEL = \
os.environ.get('NOPAQUE_LOG_STDERR_LEVEL', NOPAQUE_LOG_LEVEL) os.environ.get('NOPAQUE_LOG_STDERR_LEVEL', NOPAQUE_LOG_LEVEL)
NOPAQUE_PROXY_FIX_ENABLED = \
os.environ.get('NOPAQUE_PROXY_FIX_ENABLED', 'false').lower() == 'true'
NOPAQUE_PROXY_FIX_X_FOR = \ NOPAQUE_PROXY_FIX_X_FOR = \
int(os.environ.get('NOPAQUE_PROXY_FIX_X_FOR', '0')) int(os.environ.get('NOPAQUE_PROXY_FIX_X_FOR', '0'))
NOPAQUE_PROXY_FIX_X_HOST = \ NOPAQUE_PROXY_FIX_X_HOST = \
@ -93,47 +95,48 @@ class Config:
int(os.environ.get('NOPAQUE_PROXY_FIX_X_PROTO', '0')) int(os.environ.get('NOPAQUE_PROXY_FIX_X_PROTO', '0'))
NOPAQUE_TRANSKRIBUS_ENABLED = \ NOPAQUE_TRANSKRIBUS_ENABLED = \
os.environ.get('NOPAQUE_TRANSKRIBUS_ENABLED', 'true').lower() == 'true' os.environ.get('NOPAQUE_TRANSKRIBUS_ENABLED', 'false').lower() == 'true'
NOPAQUE_READCOOP_USERNAME = os.environ.get('NOPAQUE_READCOOP_USERNAME') NOPAQUE_READCOOP_USERNAME = os.environ.get('NOPAQUE_READCOOP_USERNAME')
NOPAQUE_READCOOP_PASSWORD = os.environ.get('NOPAQUE_READCOOP_PASSWORD') NOPAQUE_READCOOP_PASSWORD = os.environ.get('NOPAQUE_READCOOP_PASSWORD')
@classmethod @staticmethod
def init_app(cls, app: Flask): def init_app(app: Flask):
# Set up logging according to the corresponding (NOPAQUE_LOG_*) # Set up logging according to the corresponding (NOPAQUE_LOG_*)
# configurations # configurations
app.logger.setLevel(app.config.get('NOPAQUE_LOG_LEVEL')) app.logger.setLevel(app.config['NOPAQUE_LOG_LEVEL'])
# Remove existing handlers # Remove existing handlers
for handler in app.logger.handlers: for handler in app.logger.handlers:
app.logger.removeHandler(handler) app.logger.removeHandler(handler)
# Setup handlers # Setup handlers
formatter = logging.Formatter( formatter = logging.Formatter(
fmt=app.config.get('NOPAQUE_LOG_FORMAT'), fmt=app.config['NOPAQUE_LOG_FORMAT'],
datefmt=app.config.get('NOPAQUE_LOG_DATE_FORMAT') datefmt=app.config['NOPAQUE_LOG_DATE_FORMAT']
) )
if app.config.get('NOPAQUE_LOG_STDERR_ENABLED'): if app.config['NOPAQUE_LOG_STDERR_ENABLED']:
stream_handler = logging.StreamHandler() stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter) stream_handler.setFormatter(formatter)
stream_handler.setLevel(app.config.get('NOPAQUE_LOG_STDERR_LEVEL')) stream_handler.setLevel(app.config['NOPAQUE_LOG_STDERR_LEVEL'])
app.logger.addHandler(stream_handler) app.logger.addHandler(stream_handler)
if app.config.get('NOPAQUE_LOG_FILE_ENABLED'): if app.config['NOPAQUE_LOG_FILE_ENABLED']:
if not os.path.exists(app.config.get('NOPAQUE_LOG_FILE_DIR')): if not os.path.exists(app.config['NOPAQUE_LOG_FILE_DIR']):
os.mkdir(app.config.get('NOPAQUE_LOG_FILE_DIR')) os.mkdir(app.config['NOPAQUE_LOG_FILE_DIR'])
rotating_file_handler = RotatingFileHandler( rotating_file_handler = RotatingFileHandler(
os.path.join(app.config.get('NOPAQUE_LOG_FILE_DIR'), 'nopaque.log'), # noqa os.path.join(app.config['NOPAQUE_LOG_FILE_DIR'], 'nopaque.log'), # noqa
maxBytes=10240, maxBytes=10_240,
backupCount=10 backupCount=10
) )
rotating_file_handler.setFormatter(formatter) rotating_file_handler.setFormatter(formatter)
rotating_file_handler.setLevel(app.config.get('NOPAQUE_LOG_FILE_LEVEL')) # noqa rotating_file_handler.setLevel(app.config['NOPAQUE_LOG_FILE_LEVEL']) # noqa
app.logger.addHandler(rotating_file_handler) app.logger.addHandler(rotating_file_handler)
if app.config['NOPAQUE_PROXY_FIX_ENABLED']:
# Set up and apply the ProxyFix middleware according to the # Set up and apply the ProxyFix middleware according to the
# corresponding (NOPAQUE_PROXY_FIX_*) configurations # corresponding (NOPAQUE_PROXY_FIX_*) configurations
app.wsgi_app = ProxyFix( app.wsgi_app = ProxyFix(
app.wsgi_app, app.wsgi_app,
x_for=app.config.get('NOPAQUE_PROXY_FIX_X_FOR'), x_for=app.config['NOPAQUE_PROXY_FIX_X_FOR'],
x_host=app.config.get('NOPAQUE_PROXY_FIX_X_HOST'), x_host=app.config['NOPAQUE_PROXY_FIX_X_HOST'],
x_port=app.config.get('NOPAQUE_PROXY_FIX_X_PORT'), x_port=app.config['NOPAQUE_PROXY_FIX_X_PORT'],
x_prefix=app.config.get('NOPAQUE_PROXY_FIX_X_PREFIX'), x_prefix=app.config['NOPAQUE_PROXY_FIX_X_PREFIX'],
x_proto=app.config.get('NOPAQUE_PROXY_FIX_X_PROTO') x_proto=app.config['NOPAQUE_PROXY_FIX_X_PROTO']
) )