mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-23 14:22:36 +01:00
f780f73f75
Matched the printed function name with the actual function name. The simple-agent test prints the function name to allow easier debugging. One name was not set currectly (most likely through copy pasting).
113 lines
3.3 KiB
Python
Executable File
113 lines
3.3 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='o',
|
|
out_signature='s')
|
|
def RequestPrivateKeyPassphrase(self, path):
|
|
print("RequestPrivateKeyPassphrase (%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='o',
|
|
out_signature='ss')
|
|
def RequestUserNameAndPassword(self, path):
|
|
print("RequestUserNameAndPassword (%s)" % (path))
|
|
|
|
print("Service credentials requested, type cancel to cancel")
|
|
user = input('User name: ')
|
|
|
|
if not user or user == 'cancel':
|
|
raise Canceled("canceled")
|
|
|
|
passwd = input('User password: ')
|
|
|
|
if not passwd or passwd == 'cancel':
|
|
raise Canceled("canceled")
|
|
|
|
print("returning (%s, %s)" % (user, passwd))
|
|
return (user, passwd)
|
|
|
|
@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'),
|
|
'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()
|