feat: raw ELM327 console — сырой слой, API, интерактивная консоль
This commit is contained in:
+18
@@ -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("/")
|
||||
|
||||
Reference in New Issue
Block a user