Files
lrc-backend/backend/config.py
2023-10-24 16:16:57 +02:00

217 lines
6.8 KiB
Python

# -*- coding: utf-8 -*-
# ....
# available languages
import datetime
import os
import logging
from enum import Enum, auto
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
basedir = os.path.abspath(os.path.dirname(__file__))
logs_dir = os.path.abspath(os.path.join(basedir, os.path.pardir, 'logs'))
print("Logging to: {}".format(logs_dir))
if not os.path.exists(logs_dir):
print("Logging directory does not yet exist: creating it!")
os.makedirs(logs_dir)
logger.info("Basedir is: {}".format(basedir))
class Config:
LOG_LEVEL = "DEBUG"
DEBUG = True
TESTING = True
ROOT_LOG_FILE = os.path.join(logs_dir, "root.log")
LOG_FILE = os.path.join(logs_dir, "app.log")
CRON_LOG_FILE = os.path.join(logs_dir, "cron.log")
ERROR_LOG_FILE = os.path.join(logs_dir, "error.log")
# SERVER_NAME = "ubkaps154.ubka.uni-karlsruhe.de:5443"
# SERVER_NAME = "localhost.dev"
SERVER_NAME = "localhost:8080"
# SERVER_NAME = "lrc.test:5443"
# SERVER_NAME = "localhost"
# SERVER_NAME = "localhost.localdomain"
# PORT = 5443
OPENCAST_URL = "https://oc-bib-admin.bibliothek.kit.edu"
OPENCAST_USER = "admin"
OPENCAST_PW = "mz.paziuw!"
TEMPLATE_AUTO_RELOAD = True
CAMPUS_MANAGEMENT_USER = "bib"
CAMPUS_MANAGEMENT_PW = "bwTf8EVazosl7:4d2YBOz!"
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
SQLALCHEMY_TRACK_MODIFICATIONS = True
WTF_CSRF_ENABLED = True
SECRET_KEY = 'you-will-never-guess'
OPENID_PROVIDERS = [
{'name': 'Google', 'url': 'https://www.google.com/accounts/o8/id'},
{'name': 'Yahoo', 'url': 'https://me.yahoo.com'},
{'name': 'AOL', 'url': 'http://openid.aol.com/<username>'},
{'name': 'Flickr', 'url': 'http://www.flickr.com/<username>'},
{'name': 'MyOpenID', 'url': 'https://www.myopenid.com'}]
OAUTH_CREDENTIALS = {
'facebook': {
'id': '1198624176930248',
'secret': '4fbc01d776834c1ffc89a5bed1cd97d0'
},
'twitter': {
'id': '3RzWQclolxWZIMq5LJqzRZPTl',
'secret': 'm9TEd58DSEtRrZHpz2EjrV9AhsBRxKMo8m3kuIZj3zLwzwIimt'
},
'google': {
'id': '1084993305658-d9n88548ssrtmt5v6s2dne57i4qpviur.apps.googleusercontent.com',
'secret': 'oNpvoAKMPMjRyiu5EDrmmX4X'
},
}
# OIDC_REDIRECT_URI = "https://ubkaps154.ubka.uni-karlsruhe.de:5443/redirect_uri" # not required if SERVER_NAME set
SESSION_PERMANENT = True # turn on flask session support
PERMANENT_SESSION_LIFETIME = datetime.timedelta(days=7).total_seconds() # session time in secs
# mail server settings
MAIL_SERVER = 'localhost'
MAIL_PORT = 25
MAIL_USERNAME = None
MAIL_PASSWORD = None
SMTP_SERVER = "smarthost.kit.edu"
FROM_MAIL = "noreply@lrc.bib.kit.edu"
ERROR_E_MAIL_TO = ["kurze@kit.edu", "andreas.reichert@kit.edu"]
ADMIN_E_MAIL_TO = ["kurze@kit.edu", "andreas.reichert@kit.edu"]
# administrator list
ADMINS = ['you@example.com']
# pagination
POSTS_PER_PAGE = 5
LOCKS_PER_PAGE = 8
LANGUAGES = {
'en': 'English',
'es': 'Español'
}
# ASSETS_DEBUG = True
# JWT_SECRET = "abcxyz"
# JWT_ALGORITHM = "HS256"
# JWT_EXP_DELTA_SECONDS = 5 * 60
JWT_SECRET_KEY = "abcxyz"
JWT_BLACKLIST_ENABLED = True
JWT_BLACKLIST_TOKEN_CHECKS = ['access', 'refresh']
JWT_TOKEN_LOCATION = ['headers', 'cookies', 'json', 'query_string']
AUTH_RETURN_EXTERNAL_JWT = False
INDEX_TEMPLATE = "index.html"
# # INITIAL VALUES # #
class Permissions(Enum):
RECODER_NEW = "RECODER_NEW"
RECORDER_EDIT = "RECORDER_EDIT"
RECODER_SHOW = "RECODER_SHOW"
RECORDER_DELETE = "RECORDER_DELETE"
RECORDERS_LIST = "RECORDERS_LIST"
RECODER_MODEL_SHOW = "RECODER_MODEL_SHOW"
RECODER_MODEL_EDIT = "RECODER_MODEL_EDIT"
RECODER_MODELS_LIST = "RECODER_MODELS_LIST"
RECORDER_COMMAND_SHOW = "RECORDER_COMMAND_SHOW"
RECORDER_COMMAND_EDIT = "RECORDER_COMMAND_EDIT"
RECORDER_COMMANDS_LIST = "RECORDER_COMMANDS_LIST"
RECORDER_COMMAND_EXECUTE = "RECORDER_COMMAND_EXECUTE"
RECORDER_COMMAND_EDIT_ACL = "RECORDER_COMMAND_EDIT_ACL"
VIRTUAL_COMMAND_CREATE = "VIRTUAL_COMMAND_CREATE"
VIRTUAL_COMMAND_EDIT = "VIRTUAL_COMMAND_EDIT"
VIRTUAL_COMMAND_SHOW = "VIRTUAL_COMMAND_SHOW"
VIRTUAL_COMMAND_DELETE = "VIRTUAL_COMMAND_DELETE"
CRON_JOB_CREATE = "CRON_JOB_CREATE"
CRON_JOB_EDIT = "CRON_JOB_EDIT"
CRON_JOB_SHOW = "CRON_JOB_SHOW"
CRON_JOB_DELETE = "CRON_JOB_DELETE"
CRON_JOBS_LIST = "CRON_JOBS_LIST"
USER_CREATE = "USER_CREATE"
USER_EDIT = "USER_EDIT"
USER_SHOW = "USER_SHOW"
USER_DELETE = "USER_DELETE"
USERS_LIST = "USERS_LIST"
def __str__(self):
return str(self.value)
PERMISSIONS = [str(e.value) for e in Permissions]
GROUPS = [ # {"name": "Admins",
# "permissions": PERMISSIONS},
{"name": "BIB-LRC-Admin", "permissions": PERMISSIONS}, # BIB Admins may do (almost) anything
{"name": "BIB-LRC-User", "permissions": ["USERS_LIST", "RECORDERS_LIST", "RECODER_SHOW", "CRON_JOBS_LIST"]},
{"name": "ZML"},
{"name": "read_only"}]
USERS = [{"nickname": "admin",
"first_name": "Tobias",
"last_name": "Kurze",
"email": "kurze@kit.edu",
"role": "admin",
"password": "admin"}
]
class Roles(Enum):
ADMIN = "admin"
def __str__(self):
return str(self.value)
ROLE_PERMISSION_MAPPINGS = { # roles are a 'special' attribute that may grant permissions in addition to groups
str(Roles.ADMIN): PERMISSIONS
}
DEFAULT_ARCHIVE_STREAM_1_NAME = "extron1"
DEFAULT_ARCHIVE_STREAM_2_NAME = "extron2"
STREAM_SANITY_CHECK_RETRIES = 3
STREAM_SANITY_CHECK_INTERVAL_SEC = 5
class ProductionConfig(Config):
DATABASE_URI = 'mysql://user@localhost/foo'
DEBUG = False
class DevelopmentConfig(Config):
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db_debug')
# SERVER_NAME = "*:5443"
USE_SSL = False
PREFERRED_URL_SCHEME = 'http'
HOST = "localhost"
PORT = 5443
SERVER_NAME = f"{HOST}:{PORT}"
# OIDC_REDIRECT_URI = "https://ubkaps154.ubka.uni-karlsruhe.de:5443/redirect_uri" # not required if SERVER_NAME set
DEBUG = True
class TestingConfig(Config):
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db_test')
TESTING = True
USE_SSL = True
PREFERRED_URL_SCHEME = 'https'
CERT = os.path.join(basedir, "cert.pem")
KEY = os.path.join(basedir, "key.pem")
HOST = "ubkaps154.ubka.uni-karlsruhe.de"
PORT = 5443
SERVER_NAME = f"{HOST}:{PORT}"