48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
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.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, { # type: ignore[assignment]
|
|
'/metrics': make_wsgi_app()
|
|
})
|
|
|
|
db.init_app(app) # type: ignore[no-untyped-call]
|
|
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")
|
|
|
|
|
|
def not_migrating() -> bool:
|
|
return len(sys.argv) < 2 or sys.argv[1] != "db"
|
|
|
|
|
|
if 'nose' not in sys.modules.keys() and not_migrating():
|
|
from app.metrics import DefinedProxiesCollector, BlockedProxiesCollector, AutomationCollector
|
|
|
|
REGISTRY.register(DefinedProxiesCollector(app))
|
|
REGISTRY.register(BlockedProxiesCollector(app))
|
|
REGISTRY.register(AutomationCollector(app))
|
|
|
|
|
|
@app.route('/')
|
|
def index() -> ResponseReturnValue:
|
|
return redirect(url_for("portal.portal_home"))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run()
|