Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | |
| 3 | import dbus |
| 4 | import sys, os |
| 5 | import time |
| 6 | import gobject |
| 7 | from dbus.mainloop.glib import DBusGMainLoop |
| 8 | |
| 9 | WPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1" |
| 10 | WPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1" |
| 11 | WPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1" |
| 12 | |
| 13 | WPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface" |
| 14 | WPAS_DBUS_WPS_INTERFACE = "fi.w1.wpa_supplicant1.Interface.WPS" |
| 15 | |
| 16 | def propertiesChanged(properties): |
| 17 | if properties.has_key("State"): |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 18 | print("PropertiesChanged: State: %s" % (properties["State"])) |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 19 | |
| 20 | def scanDone(success): |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 21 | print("Scan done: success=%s" % success) |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 22 | |
| 23 | def bssAdded(bss, properties): |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 24 | print("BSS added: %s" % (bss)) |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 25 | |
| 26 | def bssRemoved(bss): |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 27 | print("BSS removed: %s" % (bss)) |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 28 | |
| 29 | def wpsEvent(name, args): |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 30 | print("WPS event: %s" % (name)) |
| 31 | print(args) |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 32 | |
| 33 | def credentials(cred): |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 34 | print("WPS credentials: %s" % (cred)) |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 35 | |
| 36 | def main(): |
| 37 | dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) |
| 38 | global bus |
| 39 | bus = dbus.SystemBus() |
| 40 | wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH) |
| 41 | |
| 42 | if len(sys.argv) != 2: |
Hai Shalom | 74f70d4 | 2019-02-11 14:42:39 -0800 | [diff] [blame] | 43 | print("Missing ifname argument") |
Dmitry Shmidt | 8d520ff | 2011-05-09 14:06:53 -0700 | [diff] [blame] | 44 | os._exit(1) |
| 45 | |
| 46 | wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE) |
| 47 | bus.add_signal_receiver(scanDone, |
| 48 | dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE, |
| 49 | signal_name="ScanDone") |
| 50 | bus.add_signal_receiver(bssAdded, |
| 51 | dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE, |
| 52 | signal_name="BSSAdded") |
| 53 | bus.add_signal_receiver(bssRemoved, |
| 54 | dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE, |
| 55 | signal_name="BSSRemoved") |
| 56 | bus.add_signal_receiver(propertiesChanged, |
| 57 | dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE, |
| 58 | signal_name="PropertiesChanged") |
| 59 | bus.add_signal_receiver(wpsEvent, |
| 60 | dbus_interface=WPAS_DBUS_WPS_INTERFACE, |
| 61 | signal_name="Event") |
| 62 | bus.add_signal_receiver(credentials, |
| 63 | dbus_interface=WPAS_DBUS_WPS_INTERFACE, |
| 64 | signal_name="Credentials") |
| 65 | |
| 66 | ifname = sys.argv[1] |
| 67 | |
| 68 | path = wpas.GetInterface(ifname) |
| 69 | if_obj = bus.get_object(WPAS_DBUS_SERVICE, path) |
| 70 | if_obj.Set(WPAS_DBUS_WPS_INTERFACE, 'ProcessCredentials', |
| 71 | dbus.Boolean(1), |
| 72 | dbus_interface=dbus.PROPERTIES_IFACE) |
| 73 | wps = dbus.Interface(if_obj, WPAS_DBUS_WPS_INTERFACE) |
| 74 | wps.Start({'Role': 'enrollee', 'Type': 'pbc'}) |
| 75 | |
| 76 | gobject.MainLoop().run() |
| 77 | |
| 78 | if __name__ == "__main__": |
| 79 | main() |
| 80 | |