7 import dbus.mainloop.glib
10 class Canceled(dbus.DBusException):
11 _dbus_error_name = "net.connman.Error.Canceled"
13 class Agent(dbus.service.Object):
22 @dbus.service.method("net.connman.Agent",
23 in_signature='', out_signature='')
28 def input_passphrase(self):
31 if not self.identity and not self.passphrase and not self.wpspin:
32 args = raw_input('Answer: ')
34 for arg in args.split():
35 if arg.startswith("Identity="):
36 identity = arg.replace("Identity=", "", 1)
37 response["Identity"] = identity
38 if arg.startswith("Passphrase="):
39 passphrase = arg.replace("Passphrase=", "", 1)
40 response["Passphrase"] = passphrase
41 if arg.startswith("WPS="):
42 wpspin = arg.replace("WPS=", "", 1)
43 response["WPS"] = wpspin
47 response["Identity"] = self.identity
49 response["Passphrase"] = self.passphrase
51 response["WPS"] = self.wpspin
55 def input_username(self):
58 if not self.username and not self.password:
59 args = raw_input('Answer: ')
61 for arg in args.split():
62 if arg.startswith("Username="):
63 username = arg.replace("Username=", "", 1)
64 response["Username"] = username
65 if arg.startswith("Password="):
66 password = arg.replace("Password=", "", 1)
67 response["Password"] = password
70 response["Username"] = self.username
72 response["Password"] = self.password
76 def input_hidden(self):
79 if not self.name and not self.ssid:
80 args = raw_input('Answer ')
82 for arg in args.split():
83 if arg.startswith("Name="):
84 name = arg.replace("Name=", "", 1)
85 response["Name"] = name
87 if arg.startswith("SSID="):
88 ssid = arg.replace("SSID", "", 1)
89 response["SSID"] = ssid
93 response["Name"] = self.name
95 response["SSID"] = self.ssid
99 @dbus.service.method("net.connman.Agent",
100 in_signature='oa{sv}',
101 out_signature='a{sv}')
102 def RequestInput(self, path, fields):
103 print "RequestInput (%s,%s)" % (path, fields)
107 if fields.has_key("Name"):
108 response = self.input_hidden()
109 elif fields.has_key("Passphrase"):
110 response = self.input_passphrase()
111 elif fields.has_key("Username"):
112 response = self.input_username()
114 print "No method to answer the input request"
116 print "returning (%s)" % (response)
120 @dbus.service.method("net.connman.Agent",
123 def RequestBrowser(self, path, url):
124 print "RequestBrowser (%s,%s)" % (path, url)
126 print "Please login through the given url in a browser"
127 print "Then press enter to accept or some text to cancel"
129 args = raw_input('> ')
132 raise Canceled("canceled")
136 @dbus.service.method("net.connman.Agent",
139 def ReportError(self, path, error):
140 print "ReportError %s, %s" % (path, error)
141 retry = raw_input("Retry service (yes/no): ")
143 class Retry(dbus.DBusException):
144 _dbus_error_name = "net.connman.Agent.Error.Retry"
146 raise Retry("retry service")
151 @dbus.service.method("net.connman.Agent",
152 in_signature='', out_signature='')
158 print "For hidden service:"
159 print "%s Name=<hidden service name> [SSID=<hidden ssid>]" % (sys.argv[0])
160 print "For EAP/WPA input:"
161 print "%s Identity=<identity> Passphrase=<passphrase> WPS=<wpspin>" % (sys.argv[0])
162 print "For WISPr login input:"
163 print "%s Username=<username> Password=<password>" % (sys.argv[0])
164 print "Help: %s help" % (sys.argv[0])
167 if __name__ == '__main__':
168 if len(sys.argv) == 2 and sys.argv[1] == "help":
171 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
173 bus = dbus.SystemBus()
174 manager = dbus.Interface(bus.get_object('net.connman', "/"),
175 'net.connman.Manager')
178 object = Agent(bus, path)
180 if len(sys.argv) >= 2:
181 for arg in sys.argv[1:]:
182 if arg.startswith("Name="):
183 object.name = arg.replace("Name=", "", 1)
184 elif arg.startswith("SSID="):
185 object.ssid = arg.replace("SSID=", "", 1)
186 elif arg.startswith("Identity="):
187 object.identity = arg.replace("Identity=", "", 1)
188 elif arg.startswith("Passphrase="):
189 object.passphrase = arg.replace("Passphrase=", "", 1)
190 elif arg.startswith("WPS="):
191 object.wpspin = arg.replace("WPS=", "", 1)
192 elif arg.startswith("Username="):
193 object.username = arg.replace("Username=", "", 1)
194 elif arg.startswith("Password="):
195 object.password = arg.replace("Password=", "", 1)
199 manager.RegisterAgent(path)
201 mainloop = gobject.MainLoop()
204 #manager.UnregisterAgent(path)