From 677d75fc4c502f70517867a04543bc45f2e1e4eb Mon Sep 17 00:00:00 2001 From: Max Moser Date: Fri, 15 Dec 2017 16:52:52 +0100 Subject: [PATCH] Add support for disconnecting the WG VPN Plugin --- examples/dbus/dbus.py | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/examples/dbus/dbus.py b/examples/dbus/dbus.py index 9ec836b..1893aeb 100755 --- a/examples/dbus/dbus.py +++ b/examples/dbus/dbus.py @@ -19,6 +19,8 @@ from pydbus import SessionBus, SystemBus from gi.repository import GLib (rows, cols) = subprocess.check_output(["stty", "size"]).split() +show_introspect = True + def send_desktop_notification(title="Hello World", msg="pydbus works!"): """Send a notification to the desktop environment to display""" @@ -77,7 +79,42 @@ def hibernate(): except GLib.Error as e: print("Could not get PowerManager from DBUS") + +def get_wg_plugin(bus_name="org.freedesktop.NetworkManager.wireguard", + object_path="/org/freedesktop/NetworkManager/VPN/Plugin"): + """Retrieve the wireguard VPN plugin from the System Bus. + + Arguments: + bus_name -- the bus name of the object to import + object_path -- the object path of hte object (= where to find the interface) + """ + + # since our wireguard plugin implements the VPN plugin and does not export + # an interface on its own, we need to use the VPN plugin interfce + bus = SystemBus() + wg = bus.get(bus_name, object_path) + return wg + + +def wg_disconnect(wg_plugin): + """Disconnect the WG VPN plugin""" + wg_plugin.Disconnect() + + +show_introspect = False + if __name__ == "__main__": - send_desktop_notification("Guten Tag", "pydbus funktioniert, mein Herr!") + # send_desktop_notification("Guten Tag", "pydbus funktioniert, mein Herr!") # list_systemd_units() - hibernate() + # hibernate() + try: + wg = get_wg_plugin() + + if show_introspect: + print(wg.Introspect()) + help(wg) + + wg_disconnect(wg) + + except Exception as ex: + print(str(ex)) \ No newline at end of file