summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtest/simple-agent118
1 files changed, 116 insertions, 2 deletions
diff --git a/test/simple-agent b/test/simple-agent
index 45437df8..f501b1e5 100755
--- a/test/simple-agent
+++ b/test/simple-agent
@@ -169,14 +169,114 @@ class Agent(dbus.service.Object):
def Cancel(self):
print "Cancel"
+class VpnAgent(dbus.service.Object):
+ name = None
+ host = None
+ cookie = None
+ username = None
+ password = None
+
+ @dbus.service.method("net.connman.vpn.Agent",
+ in_signature='', out_signature='')
+ def Release(self):
+ print("Release VPN agent")
+ mainloop.quit()
+
+ def input_cookie(self):
+ response = {}
+
+ if not self.cookie:
+ print "VPN credentials requested, type cancel to cancel"
+ args = raw_input('Answer: ')
+
+ for arg in args.split():
+ if arg.startswith("cancel"):
+ response["Error"] = arg
+ if arg.startswith("Cookie="):
+ cookie = arg.replace("Cookie=", "", 1)
+ response["OpenConnect.Cookie"] = cookie
+ else:
+ if self.cookie:
+ response["OpenConnect.Cookie"] = self.cookie
+
+ return response
+
+ def input_username(self):
+ response = {}
+
+ if not self.username and not self.password:
+ print "User login requested, type cancel to cancel"
+ args = raw_input('Answer: ')
+
+ for arg in args.split():
+ if arg.startswith("cancel"):
+ response["Error"] = arg
+ if arg.startswith("Username="):
+ username = arg.replace("Username=", "", 1)
+ response["Username"] = username
+ if arg.startswith("Password="):
+ password = arg.replace("Password=", "", 1)
+ response["Password"] = password
+ else:
+ if self.username:
+ response["Username"] = self.username
+ if self.password:
+ response["Password"] = self.password
+
+ return response
+
+ @dbus.service.method("net.connman.vpn.Agent",
+ in_signature='oa{sv}',
+ out_signature='a{sv}')
+ def RequestInput(self, path, fields):
+ print "RequestInput (%s,%s)" % (path, fields)
+
+ response = {}
+
+ if fields.has_key("OpenConnect.Cookie"):
+ response.update(self.input_cookie())
+ if fields.has_key("Username") or fields.has_key("Password"):
+ response.update(self.input_username())
+
+ if response.has_key("Error"):
+ if response["Error"] == "cancel":
+ raise Canceled("canceled")
+ return
+
+ print "returning (%s)" % (response)
+
+ return response
+
+ @dbus.service.method("net.connman.vpn.Agent",
+ in_signature='os',
+ out_signature='')
+ def ReportError(self, path, error):
+ print "ReportError %s, %s" % (path, error)
+ retry = raw_input("Retry service (yes/no): ")
+ if (retry == "yes"):
+ class Retry(dbus.DBusException):
+ _dbus_error_name = "net.connman.vpn.Agent.Error.Retry"
+
+ raise Retry("retry service")
+ else:
+ return
+
+
+ @dbus.service.method("net.connman.vpn.Agent",
+ in_signature='', out_signature='')
+ def Cancel(self):
+ print "Cancel"
+
def print_usage():
print "Usage:"
print "For hidden service:"
print "%s Name=<hidden service name> [SSID=<hidden ssid>]" % (sys.argv[0])
print "For EAP/WPA input:"
print "%s Identity=<identity> Passphrase=<passphrase> WPS=<wpspin>" % (sys.argv[0])
- print "For WISPr login input:"
+ print "For WISPr login, L2TP or PPTP input:"
print "%s Username=<username> Password=<password>" % (sys.argv[0])
+ print "For OpenConnect input:"
+ print "%s Cookie=<string>" % (sys.argv[0])
print "Help: %s help" % (sys.argv[0])
sys.exit(1)
@@ -193,6 +293,11 @@ if __name__ == '__main__':
path = "/test/agent"
object = Agent(bus, path)
+ vpn_manager = dbus.Interface(bus.get_object('net.connman.vpn', "/"),
+ 'net.connman.vpn.Manager')
+ path = "/test/vpn_agent"
+ vpn_object = VpnAgent(bus, path)
+
if len(sys.argv) >= 2:
for arg in sys.argv[1:]:
if arg.startswith("Name="):
@@ -207,12 +312,21 @@ if __name__ == '__main__':
object.wpspin = arg.replace("WPS=", "", 1)
elif arg.startswith("Username="):
object.username = arg.replace("Username=", "", 1)
+ vpn_object.username = arg.replace("Username=", "", 1)
elif arg.startswith("Password="):
object.password = arg.replace("Password=", "", 1)
+ vpn_object.password = arg.replace("Password=", "", 1)
+ elif arg.startswith("Cookie="):
+ vpn_object.cookie = arg.replace("Cookie=", "", 1)
else:
print_usage()
- manager.RegisterAgent(path)
+ try:
+ manager.RegisterAgent(path)
+ except:
+ print "Cannot register connman agent."
+
+ vpn_manager.RegisterAgent(path)
mainloop = gobject.MainLoop()
mainloop.run()