MikroWizard.mikroman/py/config.py

83 lines
2.6 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/python
# -*- coding: utf-8 -*-
# config.py: configuration data of this app
# MikroWizard.com , Mikrotik router management solution
# Author: sepehr.ha@gmail.com thanks to Tomi.Mickelsson@iki.fi
import os
import redis
import json
import time
# first load config from a json file,
srvconf = json.load(open(os.environ["PYSRV_CONFIG_PATH"]))
# then override with env variables
for k, v in os.environ.items():
if k.startswith("PYSRV_"):
print("env override ", k)
srvconf[k] = v
# grand switch to production!
IS_PRODUCTION = bool(srvconf['PYSRV_IS_PRODUCTION'] or False)
# local dev flag
IS_LOCAL_DEV = os.environ.get("FLASK_ENV") == "development" and not IS_PRODUCTION
# IS_LOCAL_DEV = False
print("\nCONFIG: prod={},localdev={} ({})\n".format(
IS_PRODUCTION, IS_LOCAL_DEV, srvconf["name"]))
# database config
DATABASE_HOST = srvconf['PYSRV_DATABASE_HOST']
DATABASE_PORT = srvconf['PYSRV_DATABASE_PORT']
DATABASE_NAME = srvconf['PYSRV_DATABASE_NAME']
DATABASE_USER = srvconf['PYSRV_DATABASE_USER']
DATABASE_PASSWORD = srvconf['PYSRV_DATABASE_PASSWORD']
CRYPT_KEY = srvconf['PYSRV_CRYPT_KEY']
BACKUP_DIR = srvconf['PYSRV_BACKUP_FOLDER']
FIRM_DIR = srvconf['PYSRV_FIRM_FOLDER']
IS_SQLITE = DATABASE_HOST.startswith("/")
# Flask + session config
# http://flask.pocoo.org/docs/1.0/config/
# https://pythonhosted.org/Flask-Session/
redishost = srvconf['PYSRV_REDIS_HOST']
flask_config = dict(
# app config
TESTING = IS_LOCAL_DEV,
SECRET_KEY = None, # we have server-side sessions
# session config - hardcoded to Redis
SESSION_TYPE = 'redis',
SESSION_REDIS = redis.from_url('redis://{}'.format(redishost)),
SESSION_COOKIE_NAME = "Session-Id",
SESSION_COOKIE_SECURE = srvconf['PYSRV_COOKIE_HTTPS_ONLY'] if not IS_LOCAL_DEV else False, # require https?
SESSION_COOKIE_HTTPONLY = True, # don't allow JS cookie access
SESSION_KEY_PREFIX = 'mikrowizard::',
PERMANENT_SESSION_LIFETIME = 60*60*24*30, # 1 month
SESSION_COOKIE_DOMAIN = srvconf['PYSRV_DOMAIN_NAME'] or None if not IS_LOCAL_DEV else None,
)
# dump sql statements in log file?
PYSRV_LOG_SQL = srvconf.get('PYSRV_LOG_SQL')
# allow API access to this domain
CORS_ALLOW_ORIGIN = srvconf.get('PYSRV_CORS_ALLOW_ORIGIN', '*')
START_TIME = int(time.time())
def started_ago(as_string=False):
"""Returns how many seconds ago the server was started. Or as a string."""
ago = int(time.time()) - START_TIME
if as_string:
return "{}d {:02d}:{:02d}:{:02d}".format(int(ago/60/60/24),
int(ago/60/60)%24, int(ago/60)%60, ago%60)
else:
return ago