70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
"""
|
|
DrHider — Managed Flask приложение на платформе Штурвал.
|
|
|
|
Приложение создаётся фабрикой create_app().
|
|
Штурвал запускает Flask самостоятельно (без Dockerfile/gunicorn).
|
|
|
|
Роуты разнесены по blueprint'ам:
|
|
- main_bp: GET / — веб-интерфейс
|
|
- health_bp: GET /health — проверка живости
|
|
- api_bp: POST /api/drhider — обфускация документов
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from flask import Flask
|
|
|
|
# Добавляем корень проекта в sys.path для импорта пакета drhider
|
|
_sys_path_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
if _sys_path_root not in sys.path:
|
|
sys.path.insert(0, _sys_path_root)
|
|
|
|
# Версия приложения (меняется при изменениях)
|
|
VERSION = "0.0.2"
|
|
|
|
|
|
def create_app():
|
|
"""Создать и настроить Flask-приложение.
|
|
|
|
Штурвал запускает из директории site/:
|
|
from app import app
|
|
|
|
Поэтому routes/ доступен как обычный подпакет.
|
|
|
|
Returns:
|
|
Экземпляр Flask с зарегистрированными blueprint'ами.
|
|
"""
|
|
app = Flask(__name__)
|
|
|
|
# Конфигурация
|
|
app.config["VERSION"] = VERSION
|
|
app.config["MAX_CONTENT_LENGTH"] = 200 * 1024 * 1024 # 200 MB
|
|
|
|
# Регистрируем blueprint'ы
|
|
from routes import register_routes
|
|
|
|
register_routes(app)
|
|
|
|
# Запрещаем кэширование — F5 всегда грузит свежую страницу
|
|
@app.after_request
|
|
def no_cache(response):
|
|
response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
|
|
response.headers["Pragma"] = "no-cache"
|
|
response.headers["Expires"] = "0"
|
|
response.headers["Connection"] = "close"
|
|
return response
|
|
|
|
return app
|
|
|
|
|
|
# Экземпляр приложения — точка входа для Штурвала
|
|
app = create_app()
|
|
|
|
# Штурвал запускает: cd site && python app.py
|
|
if __name__ == "__main__":
|
|
from waitress import serve
|
|
serve(app, host="0.0.0.0", port=5000, threads=8)
|
|
|
|
|
|
|