50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
# app.py
|
|
from logging_handlers.DatabaseLogHandler import DatabaseLogHandler
|
|
from urllib.parse import urlparse
|
|
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)
|
|
|
|
def is_allowed_origin(origin):
|
|
parsed_origin = urlparse(origin)
|
|
if parsed_origin.hostname in ['localhost', '127.0.0.1']:
|
|
return True
|
|
allowed_origins = [
|
|
"https://login.hangman-lab.top",
|
|
"https://git.hangman-lab.top",
|
|
]
|
|
return origin in allowed_origins
|
|
|
|
db.create_all()
|
|
app = Flask(__name__)
|
|
app.secret_key = env_provider.SESSION_SECRET_KEY
|
|
CORS(app, resources={r"/api/*": {"origins": is_allowed_origin}})
|
|
|
|
limiter.init_app(app)
|
|
|
|
api.register_blueprints(app)
|
|
|
|
@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__':
|
|
logger.info("Starting app")
|
|
app.run(host='0.0.0.0', port=5000)
|