mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-11-02 15:17:25 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python3
 | 
						|
 | 
						|
from gi.repository import GLib
 | 
						|
 | 
						|
import dbus
 | 
						|
import dbus.service
 | 
						|
import dbus.mainloop.glib
 | 
						|
import sys
 | 
						|
from random import randrange
 | 
						|
 | 
						|
class Canceled(dbus.DBusException):
 | 
						|
    _dbus_error_name = "net.connman.iwd.Error.Canceled"
 | 
						|
 | 
						|
class Agent(dbus.service.Object):
 | 
						|
    passphrase = None
 | 
						|
 | 
						|
    @dbus.service.method("net.connman.iwd.Agent",
 | 
						|
                            in_signature='', out_signature='')
 | 
						|
    def Release(self):
 | 
						|
        print("Release")
 | 
						|
        mainloop.quit()
 | 
						|
 | 
						|
    @dbus.service.method("net.connman.iwd.Agent",
 | 
						|
                            in_signature='o',
 | 
						|
                            out_signature='s')
 | 
						|
    def RequestPassphrase(self, path):
 | 
						|
        print("RequestPassphrase (%s)" % (path))
 | 
						|
 | 
						|
        print("Service credentials requested, type cancel to cancel")
 | 
						|
        passphrase = input('Answer: ')
 | 
						|
 | 
						|
        if not passphrase or passphrase == 'cancel':
 | 
						|
            raise Canceled("canceled")
 | 
						|
 | 
						|
        print("returning (%s)" % (passphrase))
 | 
						|
        return passphrase
 | 
						|
 | 
						|
    @dbus.service.method("net.connman.iwd.Agent",
 | 
						|
                            in_signature='s', out_signature='')
 | 
						|
    def Cancel(self, reason):
 | 
						|
        print("Cancel: " + reason)
 | 
						|
 | 
						|
def print_usage():
 | 
						|
    print("Usage:")
 | 
						|
    print("For WPA input:")
 | 
						|
    print("%s Passphrase=<passphrase>" % (sys.argv[0]))
 | 
						|
    print("Help: %s help" % (sys.argv[0]))
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    if len(sys.argv) == 2 and sys.argv[1] == "help":
 | 
						|
        print_usage()
 | 
						|
 | 
						|
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 | 
						|
 | 
						|
    bus = dbus.SystemBus()
 | 
						|
    manager = dbus.Interface(bus.get_object('net.connman.iwd', "/"),
 | 
						|
                                'net.connman.iwd.AgentManager')
 | 
						|
 | 
						|
    path = "/test/agent/" + str(randrange(100))
 | 
						|
    object = Agent(bus, path)
 | 
						|
 | 
						|
    if len(sys.argv) >= 2:
 | 
						|
        for arg in sys.argv[1:]:
 | 
						|
            if arg.startswith("Passphrase="):
 | 
						|
                object.passphrase = arg.replace("Passphrase=", "", 1)
 | 
						|
            else:
 | 
						|
                print_usage()
 | 
						|
 | 
						|
    try:
 | 
						|
        manager.RegisterAgent(path)
 | 
						|
    except:
 | 
						|
        print("Cannot register iwd agent.")
 | 
						|
 | 
						|
    mainloop = GLib.MainLoop()
 | 
						|
    mainloop.run()
 |