mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-10-30 20:37:26 +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()
 | 
