from pprint import pprint from events.WebhookEventHandlers import register_all_webhook_event_handlers from logging_handlers.DatabaseLogHandler import DatabaseLogHandler from api import limiter from flask import Flask, request from flask_cors import CORS import api import env_provider import db import logging logger = logging.getLogger(__name__) db_handler = DatabaseLogHandler(application="backend") formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') db_handler.setFormatter(formatter) logger.addHandler(db_handler) logger.setLevel(logging.INFO) try: db.setup_db() except Exception as e: print(f"db not ready") print(e) app = Flask(__name__) app.secret_key = env_provider.SESSION_SECRET_KEY CORS(app, resources={ r"/api/*": { "origins": [ env_provider.KC_HOST, env_provider.FRONTEND_HOST, r"https?://localhost:\d+", r"https?://127\.0\.0\.1:\d+", r"https?://localhost" ], "supports_credentials": True } }, expose_headers=['Content-Disposition'] ) limiter.init_app(app) api.register_blueprints(app) register_all_webhook_event_handlers() @app.before_request def log_request(): if request.path.startswith("/api/log"): return logger.info(f"Request received: {request.method} {request.path} from {request.remote_addr}") if __name__ == '__main__': api.init_rate_limits(app) print("env") pprint(env_provider.summerize()) app.run(host='0.0.0.0', port=5000, debug=True, use_reloader=True)