xref: /netbsd-src/external/bsd/wpa/dist/wpa_supplicant/examples/wpas-dbus-new-wps.py (revision 3d6c0713cbbf51a549dcd172f2c1ea93f7781249)
18dbcf02cSchristos#!/usr/bin/python
28dbcf02cSchristos
38dbcf02cSchristosimport dbus
48dbcf02cSchristosimport sys, os
58dbcf02cSchristosimport time
68dbcf02cSchristosimport gobject
78dbcf02cSchristosfrom dbus.mainloop.glib import DBusGMainLoop
88dbcf02cSchristos
98dbcf02cSchristosWPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
108dbcf02cSchristosWPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1"
118dbcf02cSchristosWPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1"
128dbcf02cSchristos
138dbcf02cSchristosWPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
148dbcf02cSchristosWPAS_DBUS_WPS_INTERFACE = "fi.w1.wpa_supplicant1.Interface.WPS"
158dbcf02cSchristos
168dbcf02cSchristosdef propertiesChanged(properties):
178dbcf02cSchristos	if properties.has_key("State"):
18*3d6c0713Schristos		print("PropertiesChanged: State: %s" % (properties["State"]))
198dbcf02cSchristos
208dbcf02cSchristosdef scanDone(success):
21*3d6c0713Schristos	print("Scan done: success=%s" % success)
228dbcf02cSchristos
238dbcf02cSchristosdef bssAdded(bss, properties):
24*3d6c0713Schristos	print("BSS added: %s" % (bss))
258dbcf02cSchristos
268dbcf02cSchristosdef bssRemoved(bss):
27*3d6c0713Schristos	print("BSS removed: %s" % (bss))
288dbcf02cSchristos
298dbcf02cSchristosdef wpsEvent(name, args):
30*3d6c0713Schristos	print("WPS event: %s" % (name))
31*3d6c0713Schristos	print(args)
328dbcf02cSchristos
338dbcf02cSchristosdef credentials(cred):
34*3d6c0713Schristos	print("WPS credentials: %s" % (cred))
358dbcf02cSchristos
368dbcf02cSchristosdef main():
378dbcf02cSchristos	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
388dbcf02cSchristos	global bus
398dbcf02cSchristos	bus = dbus.SystemBus()
408dbcf02cSchristos	wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
418dbcf02cSchristos
428dbcf02cSchristos	if len(sys.argv) != 2:
43*3d6c0713Schristos		print("Missing ifname argument")
448dbcf02cSchristos		os._exit(1)
458dbcf02cSchristos
468dbcf02cSchristos	wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
478dbcf02cSchristos	bus.add_signal_receiver(scanDone,
488dbcf02cSchristos				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
498dbcf02cSchristos				signal_name="ScanDone")
508dbcf02cSchristos	bus.add_signal_receiver(bssAdded,
518dbcf02cSchristos				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
528dbcf02cSchristos				signal_name="BSSAdded")
538dbcf02cSchristos	bus.add_signal_receiver(bssRemoved,
548dbcf02cSchristos				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
558dbcf02cSchristos				signal_name="BSSRemoved")
568dbcf02cSchristos	bus.add_signal_receiver(propertiesChanged,
578dbcf02cSchristos				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
588dbcf02cSchristos				signal_name="PropertiesChanged")
598dbcf02cSchristos	bus.add_signal_receiver(wpsEvent,
608dbcf02cSchristos				dbus_interface=WPAS_DBUS_WPS_INTERFACE,
618dbcf02cSchristos				signal_name="Event")
628dbcf02cSchristos	bus.add_signal_receiver(credentials,
638dbcf02cSchristos				dbus_interface=WPAS_DBUS_WPS_INTERFACE,
648dbcf02cSchristos				signal_name="Credentials")
658dbcf02cSchristos
668dbcf02cSchristos	ifname = sys.argv[1]
678dbcf02cSchristos
688dbcf02cSchristos	path = wpas.GetInterface(ifname)
698dbcf02cSchristos	if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
708dbcf02cSchristos	if_obj.Set(WPAS_DBUS_WPS_INTERFACE, 'ProcessCredentials',
718dbcf02cSchristos		   dbus.Boolean(1),
728dbcf02cSchristos		   dbus_interface=dbus.PROPERTIES_IFACE)
738dbcf02cSchristos	wps = dbus.Interface(if_obj, WPAS_DBUS_WPS_INTERFACE)
748dbcf02cSchristos	wps.Start({'Role': 'enrollee', 'Type': 'pbc'})
758dbcf02cSchristos
768dbcf02cSchristos	gobject.MainLoop().run()
778dbcf02cSchristos
788dbcf02cSchristosif __name__ == "__main__":
798dbcf02cSchristos	main()
808dbcf02cSchristos
81