real ports for extras

This commit is contained in:
Devaev Maxim
2020-04-21 08:01:16 +03:00
parent 8c904cf4a8
commit 05d35d7eb0
8 changed files with 129 additions and 37 deletions

View File

@@ -60,6 +60,7 @@ def main(argv: Optional[List[str]]=None) -> None:
if config.kvmd.msd.type == "otg":
msd_kwargs["gadget"] = config.otg.gadget # XXX: Small crutch to pass gadget name to plugin
global_config = config
config = config.kvmd
KvmdServer(
@@ -71,7 +72,7 @@ def main(argv: Optional[List[str]]=None) -> None:
force_internal_users=config.auth.internal.force_users,
enabled=config.auth.enabled,
),
info_manager=InfoManager(**config.info._unpack()),
info_manager=InfoManager(global_config, **config.info._unpack()),
log_reader=LogReader(),
wol=WakeOnLan(**config.wol._unpack()),

View File

@@ -30,6 +30,7 @@ import dbus.exceptions
from ...logging import get_logger
from ...yamlconf import Section
from ...yamlconf.loader import load_yaml_file
from ... import aiotools
@@ -39,10 +40,12 @@ from ... import aiotools
class InfoManager:
def __init__(
self,
global_config: Section,
meta_path: str,
extras_path: str,
) -> None:
self.__global_config = global_config
self.__meta_path = meta_path
self.__extras_path = extras_path
@@ -57,11 +60,25 @@ class InfoManager:
for app in os.listdir(self.__extras_path):
if app[0] != "." and os.path.isdir(os.path.join(self.__extras_path, app)):
extras[app] = load_yaml_file(os.path.join(self.__extras_path, app, "manifest.yaml"))
daemon = extras[app].get("daemon", "")
if isinstance(daemon, str) and daemon.strip():
extras[app]["enabled"] = self.__is_daemon_enabled(daemon)
self.__rewrite_app_daemon(extras[app])
self.__rewrite_app_port(extras[app])
return extras
def __rewrite_app_daemon(self, extras: Dict) -> None:
daemon = extras.get("daemon", "")
if isinstance(daemon, str) and daemon.strip():
extras["enabled"] = self.__is_daemon_enabled(daemon)
def __rewrite_app_port(self, extras: Dict) -> None:
port_path = extras.get("port", "")
if isinstance(port_path, str) and port_path.strip():
extras["port"] = 0
config = self.__global_config
for item in filter(None, map(str.strip, port_path.split("/"))):
config = getattr(config, item, None)
if isinstance(config, int):
extras["port"] = config
def __is_daemon_enabled(self, name: str) -> bool:
if not name.startswith(".service"):
name += ".service"