feat: raw ELM327 console — сырой слой, API, интерактивная консоль

This commit is contained in:
Repinoid
2026-06-14 18:24:27 +04:00
parent 7d23a874e0
commit d01028b12b
5 changed files with 945 additions and 0 deletions
+18
View File
@@ -22,6 +22,7 @@ from api.config import load
from api.routes import register as register_api
from api.dtc import register as register_dtc
from api.ping import register as register_ping
from api.raw_elm import bp as raw_bp, is_raw_mode
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(name)s] %(message)s")
@@ -30,6 +31,23 @@ config = load()
register_api(app)
register_dtc(app)
register_ping(app)
app.register_blueprint(raw_bp)
# ── Режим RAW: отключаем все эндпоинты кроме /elm/raw/* ──
_RAW_PREFIX = "/api/v1/elm/raw"
@app.before_request
def _check_raw_mode():
"""В режиме RAW все эндпоинты кроме /elm/raw/* отключены."""
if is_raw_mode() and not request.path.startswith(_RAW_PREFIX):
# Разрешаем только статику и корень
if request.path not in ("/", "/elmer.apk") and not request.path.startswith("/static"):
return jsonify({
"error": "raw_mode_active",
"hint": "Сервер в режиме сырого взаимодействия с ELM327. "
"Все остальные эндпоинты отключены. "
"Используйте /api/v1/elm/raw/mode чтобы выключить."
}), 503
@app.route("/")