flaschengeist/flaschengeist/system/config.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

56 lines
2.3 KiB
Python
Raw Normal View History

import logging.config
import os
import toml
from pathlib import Path
2020-09-03 15:56:12 +00:00
from werkzeug.middleware.proxy_fix import ProxyFix
from .. import _module_path, logger
# Default config:
config = {}
2020-09-03 15:56:12 +00:00
paths = [_module_path, Path.home() / ".config"]
if "FLASCHENGEIST_CONF" in os.environ:
paths.append(Path(os.environ.get("FLASCHENGEIST_CONF")))
for loc in paths:
try:
with (loc / "flaschengeist.toml").open() as source:
logger.info("Reading config file from >{}<".format(loc))
config.update(toml.load(source))
except IOError:
pass
2020-09-03 15:56:12 +00:00
# Always enable this builtin plugins!
config.update({"auth": {"enabled": True}, "roles": {"enabled": True}, "users": {"enabled": True}})
def configure_app(app):
logger_config = toml.load(_module_path / "logging.toml")
if "LOGGING" in config:
if "level" in config["LOGGING"]:
logger_config["loggers"]["flaschengeist"] = {"level": config["LOGGING"]["level"]}
if "file" in config["LOGGING"]:
logger_config["root"]["handlers"].append("file")
logger_config["handlers"]["file"]["filename"] = config["LOGGING"]["file"]
path = Path(config["LOGGING"]["file"])
path.parent.mkdir(parents=True, exist_ok=True)
logging.config.dictConfig(logger_config)
if "secret_key" not in config["FLASCHENGEIST"]:
logger.warn("No secret key was configured, please configure one for production systems!")
app.config["SECRET_KEY"] = "0a657b97ef546da90b2db91862ad4e29"
else:
app.config["SECRET_KEY"] = config["FLASCHENGEIST"]["secret_key"]
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://{user}:{passwd}@{host}/{database}".format(
user=config["DATABASE"]["user"],
passwd=config["DATABASE"]["password"],
host=config["DATABASE"]["host"],
database=config["DATABASE"]["database"]
)
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
2020-09-03 15:56:12 +00:00
if "root" in config["FLASCHENGEIST"]:
logger.debug("Setting application root to >{}<".format(config["FLASCHENGEIST"]["root"]))
app.config["APPLICATION_ROOT"] = config["FLASCHENGEIST"]["root"]
if config["FLASCHENGEIST"].get("proxy", False):
logger.debug("Fixing wsgi_app for using behind a proxy server")
2020-09-03 15:56:12 +00:00
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)