mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 21:22:37 +01:00
58737e02d5
Handle RequestPrivateKeyPassphrase and RequestUserNameAndPassword
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("RequestPrivateKeyPassphrase (%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()
|