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 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") 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()