diff --git a/client.py b/client.py index 9f215f7ea4c4985a819927b089ef6bdaa867fd27..40d54a3b2f28c81f0e8a73ae32e1a40f375fe882 100755 --- a/client.py +++ b/client.py @@ -12,7 +12,7 @@ from typing import Union, Optional, Callable, Dict, List, Set async def main(): - bus = await MessageBus(negotiate_unix_fd=True).connect() + bus = await MessageBus(bus_type=BusType.SYSTEM, negotiate_unix_fd=True).connect() ins = await bus.introspect('cz.ucw.shipcat', '/cz/ucw/ShipCat') diff --git a/server.py b/server.py index d8681166472cbce329b9730b7455fb48e3473e0f..3e066257ee0bc2bf0d0034e85dfa531ea0e7405e 100755 --- a/server.py +++ b/server.py @@ -70,7 +70,7 @@ class BusLogic: ) async def loop(self) -> None: - self.bus = await MessageBus(negotiate_unix_fd=True).connect() + self.bus = await MessageBus(bus_type=BusType.SYSTEM, negotiate_unix_fd=True).connect() # Obtain proxy interface for org.freedesktop.DBus dbus_intro = await self.bus.introspect(bus_name='org.freedesktop.DBus', path='/org/freedesktop/DBus') @@ -160,6 +160,32 @@ class BusLogic: async def handle_Check(self, msg: Message) -> Message: [container] = msg.body await self.setup_container(container, msg) + + ins = await self.bus.introspect('org.freedesktop.systemd1', '/org/freedesktop/systemd1') + pxy = self.bus.get_proxy_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1', ins) + pif = pxy.get_interface('org.freedesktop.systemd1.Manager') + p = await pif.call_get_unit('inetd.service') + print(p) + + uns = await self.bus.introspect('org.freedesktop.systemd1', p) + uxy = self.bus.get_proxy_object('org.freedesktop.systemd1', p, uns) + uif = uxy.get_interface('org.freedesktop.systemd1.Unit') + active = await uif.get_active_state() + sub_state = await uif.get_sub_state() + print(active, sub_state) + + await pif.call_subscribe() + + def cb(a, b, c): + self.logger.debug(f'PROP: {a} {b} {c}') + + prif = uxy.get_interface('org.freedesktop.DBus.Properties') + prif.on_properties_changed(cb) + + await asyncio.sleep(60) + + await pif.call_unsubscribe() + return Message.new_method_return(msg) async def handle_Shell(self, msg: Message) -> Message: