mirror of
				https://github.com/max-moser/network-manager-wireguard.git
				synced 2025-11-04 00:53:49 +03:00 
			
		
		
		
	Add support for disconnecting the WG VPN Plugin
This commit is contained in:
		
							parent
							
								
									57217aef8f
								
							
						
					
					
						commit
						677d75fc4c
					
				@ -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))
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user