A Python port of the Invisible Internet Project (I2P)
at main 54 lines 1.4 kB view raw
1"""RouterContext adapter — provides router state to console pages. 2 3Reads router state for display in the console. When no live router 4is available, returns safe defaults. 5 6Ported from net.i2p.router.web.HelperBase / RouterContext. 7""" 8 9from __future__ import annotations 10 11import time 12 13 14class ConsoleContext: 15 """Adapter for reading router state in the console.""" 16 17 def __init__(self) -> None: 18 self._start_time = time.monotonic() 19 self._properties: dict[str, str] = {} 20 self._version = "0.1.0" 21 22 @property 23 def uptime_seconds(self) -> float: 24 return time.monotonic() - self._start_time 25 26 @property 27 def version(self) -> str: 28 return self._version 29 30 @property 31 def status(self) -> dict: 32 return { 33 "state": "running", 34 "uptime": self.uptime_seconds, 35 "version": self.version, 36 } 37 38 @property 39 def network_status(self) -> dict: 40 return { 41 "active_peers": 0, 42 "known_routers": 0, 43 "active_tunnels": 0, 44 "participating_tunnels": 0, 45 } 46 47 def get_property(self, key: str, default: str | None = None) -> str | None: 48 return self._properties.get(key, default) 49 50 def set_property(self, key: str, value: str) -> None: 51 self._properties[key] = value 52 53 def get_all_properties(self) -> dict[str, str]: 54 return dict(self._properties)