From be012fd38d6f6f2d269dcbffd3aafe59a2a9a40c Mon Sep 17 00:00:00 2001 From: Devaev Maxim Date: Sat, 17 Apr 2021 15:41:05 +0300 Subject: [PATCH] terminal window --- kvmd/apps/kvmd/info/extras.py | 17 ++++++++--------- testenv/linters/htmlhint.json | 3 +++ testenv/tox.ini | 2 +- web/kvm/index.html | 14 ++++++++++++++ web/kvm/navbar-system.pug | 3 +++ web/kvm/window-webterm.pug | 8 ++++++++ web/kvm/windows.pug | 1 + web/share/js/index/main.js | 2 +- web/share/js/kvm/session.js | 21 +++++++++++++++++++++ web/share/js/wm.js | 3 +++ 10 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 testenv/linters/htmlhint.json create mode 100644 web/kvm/window-webterm.pug diff --git a/kvmd/apps/kvmd/info/extras.py b/kvmd/apps/kvmd/info/extras.py index 6024aebc..10d57f27 100644 --- a/kvmd/apps/kvmd/info/extras.py +++ b/kvmd/apps/kvmd/info/extras.py @@ -23,6 +23,7 @@ import os import contextlib +from typing import Tuple from typing import Dict from typing import Optional @@ -67,7 +68,7 @@ class ExtrasInfoSubmanager(BaseInfoSubmanager): 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) + (extras["enabled"], extras["started"]) = self.__get_daemon_status(daemon) def __rewrite_app_port(self, extras: Dict) -> None: port_path = extras.get("port", "") @@ -79,25 +80,23 @@ class ExtrasInfoSubmanager(BaseInfoSubmanager): if isinstance(config, int): extras["port"] = config - def __is_daemon_enabled(self, name: str) -> bool: + def __get_daemon_status(self, name: str) -> Tuple[bool, bool]: if not name.endswith(".service"): name += ".service" - try: with contextlib.closing(dbus.SystemBus()) as bus: systemd = bus.get_object("org.freedesktop.systemd1", "/org/freedesktop/systemd1") # pylint: disable=no-member manager = dbus.Interface(systemd, dbus_interface="org.freedesktop.systemd1.Manager") - try: unit_proxy = bus.get_object("org.freedesktop.systemd1", manager.GetUnit(name)) # pylint: disable=no-member unit_properties = dbus.Interface(unit_proxy, dbus_interface="org.freedesktop.DBus.Properties") - enabled = (unit_properties.Get("org.freedesktop.systemd1.Unit", "ActiveState") == "active") + started = (unit_properties.Get("org.freedesktop.systemd1.Unit", "ActiveState") == "active") except dbus.exceptions.DBusException as err: if "NoSuchUnit" not in str(err): raise - enabled = False - - return (enabled or (manager.GetUnitFileState(name) in ["enabled", "enabled-runtime", "static", "indirect", "generated"])) + started = False + enabled = (manager.GetUnitFileState(name) in ["enabled", "enabled-runtime", "static", "indirect", "generated"]) + return (enabled, started) except Exception as err: get_logger(0).error("Can't get info about the service %r: %s", name, tools.efmt(err)) - return True + return (True, True) diff --git a/testenv/linters/htmlhint.json b/testenv/linters/htmlhint.json new file mode 100644 index 00000000..0c5c6c11 --- /dev/null +++ b/testenv/linters/htmlhint.json @@ -0,0 +1,3 @@ +{ + "src-not-empty": false +} diff --git a/testenv/tox.ini b/testenv/tox.ini index ba50e422..e3d2a810 100644 --- a/testenv/tox.ini +++ b/testenv/tox.ini @@ -58,4 +58,4 @@ commands = eslint --cache-location=/tmp --config=testenv/linters/eslintrc.yaml - [testenv:htmlhint] whitelist_externals = htmlhint -commands = htmlhint web/*.html web/*/*.html +commands = htmlhint --config=testenv/linters/htmlhint.json web/*.html web/*/*.html diff --git a/web/kvm/index.html b/web/kvm/index.html index aa0e5fce..dc5779a5 100644 --- a/web/kvm/index.html +++ b/web/kvm/index.html @@ -205,6 +205,10 @@
+
+
+ +
  • ATX @@ -1744,6 +1748,16 @@

    +
    +
    +
    Terminal
    + + + + +
    + +