platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
50
selective-vpn-gui/api/status.py
Normal file
50
selective-vpn-gui/api/status.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, cast
|
||||
|
||||
from .models import *
|
||||
from .utils import strip_ansi
|
||||
|
||||
|
||||
class StatusApiMixin:
|
||||
# Status / system
|
||||
def get_status(self) -> Status:
|
||||
data = cast(Dict[str, Any], self._json(self._request("GET", "/api/v1/status")) or {})
|
||||
return Status(
|
||||
timestamp=str(data.get("timestamp") or ""),
|
||||
ip_count=int(data.get("ip_count") or 0),
|
||||
domain_count=int(data.get("domain_count") or 0),
|
||||
iface=str(data.get("iface") or ""),
|
||||
table=str(data.get("table") or ""),
|
||||
mark=str(data.get("mark") or ""),
|
||||
policy_route_ok=cast(Optional[bool], data.get("policy_route_ok", None)),
|
||||
route_ok=cast(Optional[bool], data.get("route_ok", None)),
|
||||
)
|
||||
|
||||
def systemd_state(self, unit: str) -> UnitState:
|
||||
data = cast(
|
||||
Dict[str, Any],
|
||||
self._json(
|
||||
self._request("GET", "/api/v1/systemd/state", params={"unit": unit}, timeout=2.0)
|
||||
)
|
||||
or {},
|
||||
)
|
||||
st = str(data.get("state") or "unknown").strip() or "unknown"
|
||||
return UnitState(state=st)
|
||||
|
||||
def get_login_state(self) -> LoginState:
|
||||
data = cast(Dict[str, Any], self._json(self._request("GET", "/api/v1/vpn/login-state", timeout=2.0)) or {})
|
||||
# Normalize and strip ANSI.
|
||||
state = str(data.get("state") or "unknown").strip()
|
||||
email = strip_ansi(str(data.get("email") or "").strip())
|
||||
msg = strip_ansi(str(data.get("msg") or "").strip())
|
||||
text = strip_ansi(str(data.get("text") or "").strip())
|
||||
color = str(data.get("color") or "").strip()
|
||||
|
||||
return LoginState(
|
||||
state=state,
|
||||
email=email,
|
||||
msg=msg,
|
||||
text=text,
|
||||
color=color,
|
||||
)
|
||||
Reference in New Issue
Block a user