3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-12-23 06:02:37 +01:00
iwd/test/simple-agent

99 lines
2.7 KiB
Plaintext
Raw Normal View History

#!/usr/bin/python
2015-03-20 05:53:16 +01:00
from gi.repository import GLib
import dbus
import dbus.service
import dbus.mainloop.glib
import sys
from random import randrange
class Canceled(dbus.DBusException):
2015-03-20 05:53:16 +01:00
_dbus_error_name = "net.connman.iwd.Error.Canceled"
class Agent(dbus.service.Object):
2015-03-20 05:53:16 +01:00
passphrase = None
2015-03-20 05:53:16 +01:00
@dbus.service.method("net.connman.iwd.Agent",
in_signature='', out_signature='')
def Release(self):
print("Release")
mainloop.quit()
2015-03-20 05:53:16 +01:00
def input_passphrase(self):
response = {}
2015-03-20 05:53:16 +01:00
if not self.passphrase:
print("Service credentials requested, type cancel to cancel")
args = input('Answer: ')
2015-03-20 05:53:16 +01:00
for arg in args.split():
if arg.startswith("cancel"):
response["Error"] = arg
2015-03-20 05:53:16 +01:00
if arg.startswith("Passphrase="):
passphrase = arg.replace("Passphrase=", "", 1)
response["Passphrase"] = passphrase
else:
if self.passphrase:
response["Passphrase"] = self.passphrase
return response
2015-03-20 05:53:16 +01:00
@dbus.service.method("net.connman.iwd.Agent",
in_signature='o',
out_signature='s')
def RequestPassphrase(self, path):
print("RequestPassphrase (%s)" % (path))
2015-03-20 05:53:16 +01:00
response = {}
response.update(self.input_passphrase())
2015-03-20 05:53:16 +01:00
if response.has_key("Error"):
if response["Error"] == "cancel":
raise Canceled("canceled")
return
2015-03-20 05:53:16 +01:00
print("returning (%s)" % (response["Passphrase"]))
return response["Passphrase"]
2015-03-20 05:53:16 +01:00
@dbus.service.method("net.connman.iwd.Agent",
in_signature='', out_signature='')
def Cancel(self):
print("Cancel")
def print_usage():
2015-03-20 05:53:16 +01:00
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__':
2015-03-20 05:53:16 +01:00
if len(sys.argv) == 2 and sys.argv[1] == "help":
print_usage()
2015-03-20 05:53:16 +01:00
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
2015-03-20 05:53:16 +01:00
bus = dbus.SystemBus()
manager = dbus.Interface(bus.get_object('net.connman.iwd', "/"),
'net.connman.iwd.Manager')
2015-03-20 05:53:16 +01:00
path = "/test/agent/" + str(randrange(100))
object = Agent(bus, path)
2015-03-20 05:53:16 +01:00
if len(sys.argv) >= 2:
for arg in sys.argv[1:]:
if arg.startswith("Passphrase="):
object.passphrase = arg.replace("Passphrase=", "", 1)
else:
print_usage()
2015-03-20 05:53:16 +01:00
try:
manager.RegisterAgent(path)
except:
print("Cannot register iwd agent.")
2015-03-20 05:53:16 +01:00
mainloop = GLib.MainLoop()
mainloop.run()