# -*- 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://opencast.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/'}, {'name': 'Flickr', 'url': 'http://www.flickr.com/'}, {'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}"