added backlight and fixed outbound
This commit is contained in:
@@ -200,13 +200,16 @@ def access_status():
|
||||
return status
|
||||
|
||||
|
||||
MIN_USER_PORT = 1024
|
||||
|
||||
|
||||
def set_web_port(port):
|
||||
try:
|
||||
port = int(port)
|
||||
except (TypeError, ValueError):
|
||||
raise ValueError("invalid web port")
|
||||
if port < 1 or port > 65535:
|
||||
raise ValueError("invalid web port")
|
||||
if port < MIN_USER_PORT or port > 65535:
|
||||
raise ValueError(f"web port must be {MIN_USER_PORT}–65535")
|
||||
cfg = load_config()
|
||||
cfg.setdefault("settings", {})["webPort"] = port
|
||||
save_config(cfg)
|
||||
@@ -219,6 +222,72 @@ def set_web_port(port):
|
||||
return port
|
||||
|
||||
|
||||
def _run_brightness(*args, timeout=10):
|
||||
script = str(scripts_dir() / "bt-brightness")
|
||||
proc = subprocess.run(
|
||||
["sudo", "-n", script, *args],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=timeout,
|
||||
check=False,
|
||||
)
|
||||
for line in reversed((proc.stdout or "").splitlines()):
|
||||
line = line.strip()
|
||||
if line.startswith("{") and line.endswith("}"):
|
||||
return json.loads(line)
|
||||
if proc.returncode != 0:
|
||||
err = (proc.stderr or proc.stdout or "bt-brightness failed").strip()
|
||||
raise RuntimeError(err)
|
||||
raise RuntimeError((proc.stdout or "bt-brightness returned no status").strip())
|
||||
|
||||
|
||||
def brightness_status():
|
||||
live = _run_brightness("status")
|
||||
cfg = load_config()
|
||||
saved = cfg.get("settings", {}).get("brightness")
|
||||
try:
|
||||
saved = int(saved) if saved is not None else None
|
||||
except (TypeError, ValueError):
|
||||
saved = None
|
||||
live["saved"] = saved
|
||||
live["ok"] = True
|
||||
return live
|
||||
|
||||
|
||||
def set_brightness(percent):
|
||||
try:
|
||||
percent = int(percent)
|
||||
except (TypeError, ValueError):
|
||||
raise ValueError("percent must be an integer 0-100")
|
||||
if percent < 0 or percent > 100:
|
||||
raise ValueError("percent must be 0-100")
|
||||
live = _run_brightness("set", str(percent))
|
||||
cfg = load_config()
|
||||
cfg.setdefault("settings", {})["brightness"] = percent
|
||||
save_config(cfg)
|
||||
live["saved"] = percent
|
||||
live["ok"] = True
|
||||
return live
|
||||
|
||||
|
||||
def apply_saved_brightness():
|
||||
"""Restore brightness from config at service start. No-op if unset."""
|
||||
cfg = load_config()
|
||||
saved = cfg.get("settings", {}).get("brightness")
|
||||
if saved is None:
|
||||
return None
|
||||
try:
|
||||
percent = int(saved)
|
||||
except (TypeError, ValueError):
|
||||
return None
|
||||
if percent < 0 or percent > 100:
|
||||
return None
|
||||
try:
|
||||
return _run_brightness("set", str(percent))
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
@system_bp.route("/api/system/stats", methods=["GET"])
|
||||
@login_required
|
||||
def api_system_stats():
|
||||
@@ -261,6 +330,27 @@ def api_access_set():
|
||||
return jsonify({"ok": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@system_bp.route("/api/system/brightness", methods=["GET"])
|
||||
@login_required
|
||||
def api_brightness_get():
|
||||
try:
|
||||
return jsonify(brightness_status())
|
||||
except RuntimeError as e:
|
||||
return jsonify({"ok": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@system_bp.route("/api/system/brightness", methods=["POST"])
|
||||
@login_required
|
||||
def api_brightness_set():
|
||||
data = request.get_json(force=True, silent=True) or {}
|
||||
try:
|
||||
return jsonify(set_brightness(data.get("percent")))
|
||||
except ValueError as e:
|
||||
abort(400, str(e))
|
||||
except RuntimeError as e:
|
||||
return jsonify({"ok": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@system_bp.route("/api/system/time", methods=["GET"])
|
||||
@login_required
|
||||
def api_system_time_get():
|
||||
|
||||
Reference in New Issue
Block a user