1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/usr/bin/python
- import dbus
- import sys, os
- import time
- import gobject
- from dbus.mainloop.glib import DBusGMainLoop
- WPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
- WPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1"
- WPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1"
- WPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
- WPAS_DBUS_WPS_INTERFACE = "fi.w1.wpa_supplicant1.Interface.WPS"
- def propertiesChanged(properties):
- if properties.has_key("State"):
- print "PropertiesChanged: State: %s" % (properties["State"])
- def scanDone(success):
- print "Scan done: success=%s" % success
- def bssAdded(bss, properties):
- print "BSS added: %s" % (bss)
- def bssRemoved(bss):
- print "BSS removed: %s" % (bss)
- def wpsEvent(name, args):
- print "WPS event: %s" % (name)
- print args
- def credentials(cred):
- print "WPS credentials: %s" % (cred)
- def main():
- dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
- global bus
- bus = dbus.SystemBus()
- wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
- if len(sys.argv) != 2:
- print "Missing ifname argument"
- os._exit(1)
- wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
- bus.add_signal_receiver(scanDone,
- dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
- signal_name="ScanDone")
- bus.add_signal_receiver(bssAdded,
- dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
- signal_name="BSSAdded")
- bus.add_signal_receiver(bssRemoved,
- dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
- signal_name="BSSRemoved")
- bus.add_signal_receiver(propertiesChanged,
- dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
- signal_name="PropertiesChanged")
- bus.add_signal_receiver(wpsEvent,
- dbus_interface=WPAS_DBUS_WPS_INTERFACE,
- signal_name="Event")
- bus.add_signal_receiver(credentials,
- dbus_interface=WPAS_DBUS_WPS_INTERFACE,
- signal_name="Credentials")
- ifname = sys.argv[1]
- path = wpas.GetInterface(ifname)
- if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
- if_obj.Set(WPAS_DBUS_WPS_INTERFACE, 'ProcessCredentials',
- dbus.Boolean(1),
- dbus_interface=dbus.PROPERTIES_IFACE)
- wps = dbus.Interface(if_obj, WPAS_DBUS_WPS_INTERFACE)
- wps.Start({'Role': 'enrollee', 'Type': 'pbc'})
- gobject.MainLoop().run()
- if __name__ == "__main__":
- main()
|