mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-12-25 02:44:18 +00:00
98 lines
4.3 KiB
Python
98 lines
4.3 KiB
Python
from werkzeug.middleware.proxy_fix import ProxyFix
|
|
import logging
|
|
import os
|
|
|
|
|
|
root_dir = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
DEFAULT_DATA_DIR = os.path.join('/mnt/nopaque')
|
|
DEFAULT_DB_PORT = '5432'
|
|
DEFAULT_DEBUG = 'False'
|
|
DEFAULT_LOG_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
|
|
DEFAULT_LOG_FILE = os.path.join(root_dir, 'nopaque.log')
|
|
DEFAULT_LOG_FORMAT = ('[%(asctime)s] %(levelname)s in %(pathname)s '
|
|
'(function: %(funcName)s, line: %(lineno)d): '
|
|
'%(message)s')
|
|
DEFAULT_LOG_LEVEL = 'ERROR'
|
|
DEFAULT_SMTP_USE_SSL = 'False'
|
|
DEFAULT_SMTP_USE_TLS = 'False'
|
|
DEFAULT_NUM_PROXIES = '0'
|
|
DEFAULT_PROTOCOL = 'http'
|
|
DEFAULT_RESSOURCES_PER_PAGE = '5'
|
|
DEFAULT_USERS_PER_PAGE = '10'
|
|
DEFAULT_SECRET_KEY = 'hard to guess string'
|
|
|
|
|
|
class Config:
|
|
''' ### Database ### '''
|
|
DB_HOST = os.environ.get('NOPAQUE_DB_HOST')
|
|
DB_NAME = os.environ.get('NOPAQUE_DB_NAME')
|
|
DB_PASSWORD = os.environ.get('NOPAQUE_DB_PASSWORD')
|
|
DB_PORT = os.environ.get('NOPAQUE_DB_PORT', DEFAULT_DB_PORT)
|
|
DB_USERNAME = os.environ.get('NOPAQUE_DB_USERNAME')
|
|
SQLALCHEMY_DATABASE_URI = 'postgresql://{}:{}@{}:{}/{}'.format(
|
|
DB_USERNAME, DB_PASSWORD, DB_HOST, DB_PORT, DB_NAME)
|
|
SQLALCHEMY_RECORD_QUERIES = True
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
''' ### Email ### '''
|
|
MAIL_DEFAULT_SENDER = os.environ.get('NOPAQUE_SMTP_DEFAULT_SENDER')
|
|
MAIL_PASSWORD = os.environ.get('NOPAQUE_SMTP_PASSWORD')
|
|
MAIL_PORT = os.environ.get('NOPAQUE_SMTP_PORT')
|
|
MAIL_SERVER = os.environ.get('NOPAQUE_SMTP_SERVER')
|
|
MAIL_USERNAME = os.environ.get('NOPAQUE_SMTP_USERNAME')
|
|
MAIL_USE_SSL = os.environ.get('NOPAQUE_SMTP_USE_SSL',
|
|
DEFAULT_SMTP_USE_SSL).lower() == 'true'
|
|
MAIL_USE_TLS = os.environ.get('NOPAQUE_SMTP_USE_TLS',
|
|
DEFAULT_SMTP_USE_TLS).lower() == 'true'
|
|
|
|
''' ### General ### '''
|
|
ADMIN_EMAIL_ADRESS = os.environ.get('NOPAQUE_ADMIN_EMAIL_ADRESS')
|
|
CONTACT_EMAIL_ADRESS = os.environ.get('NOPAQUE_CONTACT_EMAIL_ADRESS')
|
|
DATA_DIR = os.environ.get('NOPAQUE_DATA_DIR', DEFAULT_DATA_DIR)
|
|
DEBUG = os.environ.get('NOPAQUE_DEBUG', DEFAULT_DEBUG).lower() == 'true'
|
|
NUM_PROXIES = int(os.environ.get('NOPAQUE_NUM_PROXIES',
|
|
DEFAULT_NUM_PROXIES))
|
|
PROTOCOL = os.environ.get('NOPAQUE_PROTOCOL', DEFAULT_PROTOCOL)
|
|
RESSOURCES_PER_PAGE = int(os.environ.get('NOPAQUE_RESSOURCES_PER_PAGE',
|
|
DEFAULT_RESSOURCES_PER_PAGE))
|
|
SECRET_KEY = os.environ.get('NOPAQUE_SECRET_KEY', DEFAULT_SECRET_KEY)
|
|
USERS_PER_PAGE = int(os.environ.get('NOPAQUE_USERS_PER_PAGE',
|
|
DEFAULT_USERS_PER_PAGE))
|
|
if PROTOCOL == 'https':
|
|
REMEMBER_COOKIE_HTTPONLY = True
|
|
REMEMBER_COOKIE_SECURE = True
|
|
SESSION_COOKIE_SECURE = True
|
|
|
|
''' ### Logging ### '''
|
|
LOG_DATE_FORMAT = os.environ.get('NOPAQUE_LOG_DATE_FORMAT',
|
|
DEFAULT_LOG_DATE_FORMAT)
|
|
LOG_FILE = os.environ.get('NOPAQUE_LOG_FILE', DEFAULT_LOG_FILE)
|
|
LOG_FORMAT = os.environ.get('NOPAQUE_LOG_FORMAT', DEFAULT_LOG_FORMAT)
|
|
LOG_LEVEL = os.environ.get('NOPAQUE_LOG_LEVEL', DEFAULT_LOG_LEVEL)
|
|
|
|
''' ### Message queue ### '''
|
|
MQ_HOST = os.environ.get('NOPAQUE_MQ_HOST')
|
|
MQ_PORT = os.environ.get('NOPAQUE_MQ_PORT')
|
|
MQ_TYPE = os.environ.get('NOPAQUE_MQ_TYPE')
|
|
SOCKETIO_MESSAGE_QUEUE_URI = \
|
|
'{}://{}:{}/'.format(MQ_TYPE, MQ_HOST, MQ_PORT)
|
|
|
|
def init_app(self, app):
|
|
# Configure logging according to the corresponding (LOG_*) config
|
|
# entries
|
|
logging.basicConfig(datefmt=self.LOG_DATE_FORMAT,
|
|
filename=self.LOG_FILE,
|
|
format=self.LOG_FORMAT,
|
|
level=self.LOG_LEVEL)
|
|
# Apply the ProxyFix middleware if nopaque is running behind reverse
|
|
# proxies. (NUM_PROXIES indicates the number of reverse proxies running
|
|
# in front of nopaque)
|
|
if self.NUM_PROXIES > 0:
|
|
app.wsgi_app = ProxyFix(app.wsgi_app,
|
|
x_for=self.NUM_PROXIES,
|
|
x_host=self.NUM_PROXIES,
|
|
x_port=self.NUM_PROXIES,
|
|
x_proto=self.NUM_PROXIES)
|