mirror of
https://github.com/MikroWizard/mikroman.git
synced 2025-06-21 03:55:39 +02:00
82 lines
2.6 KiB
Python
82 lines
2.6 KiB
Python
#!/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
|
|
|