icy-governor/src/main.py

41 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
from flask.app import Flask
from flask.globals import request
from flask.helpers import make_response
from flask.wrappers import Response
from werkzeug.middleware.proxy_fix import ProxyFix
from .ip_collector.reader import redownload_ranges
from .middleware import RequesterFilterMiddleWare
from .utils import ListenerAddEvaluator, ListenerRemoveEvaluator
flask_app = Flask(import_name='icy_governor')
flask_app.wsgi_app = RequesterFilterMiddleWare( # type: ignore
app=flask_app.wsgi_app) # type: ignore
wsgi_app = ProxyFix(app=flask_app, x_for=1, x_host=1)
BASE_PATH = '/icy-governor/'
@flask_app.route(rule=f'{BASE_PATH}reload-ranges/', methods=['GET'])
def reload_ranges() -> Response:
# flask_app.logger.debug('REMOTE_ADDR: %s', request.remote_addr)
redownload_ranges()
response = make_response('', 200)
return response
@flask_app.route(rule=f'{BASE_PATH}listener-add/', methods=['POST'])
def listener_add() -> Response:
evaluator = ListenerAddEvaluator(
form=request.form, logger=flask_app.logger)
return evaluator.response
@flask_app.route(rule=f'{BASE_PATH}listener-remove/', methods=['POST'])
def listener_remove() -> Response:
evaluator = ListenerRemoveEvaluator(
form=request.form, logger=flask_app.logger)
return evaluator.response