from flask import Flask, redirect, url_for from flask.typing import ResponseReturnValue from werkzeug.middleware.dispatcher import DispatcherMiddleware from prometheus_client import make_wsgi_app, REGISTRY import yaml import sys from app.extensions import db from app.extensions import migrate from app.extensions import bootstrap from app.models.automation import Automation, AutomationState from app.portal import portal from app.tfstate import tfstate app = Flask(__name__) app.config.from_file("../config.yaml", load=yaml.safe_load) app.wsgi_app = DispatcherMiddleware(app.wsgi_app, { '/metrics': make_wsgi_app() }) db.init_app(app) migrate.init_app(app, db, render_as_batch=True) bootstrap.init_app(app) app.register_blueprint(portal, url_prefix="/portal") app.register_blueprint(tfstate, url_prefix="/tfstate") if sys.argv[1] != "db": from app.metrics import DefinedProxiesCollector, BlockedProxiesCollector, AutomationCollector REGISTRY.register(DefinedProxiesCollector()) REGISTRY.register(BlockedProxiesCollector()) REGISTRY.register(AutomationCollector()) @app.route('/') def index() -> ResponseReturnValue: return redirect(url_for("portal.portal_home")) if __name__ == '__main__': app.run()