remove @EAP_LDFLAGS@, no longer exists
[mech_eap.orig] / libeap / wpa_supplicant / examples / wpas-test.py
diff --git a/libeap/wpa_supplicant/examples/wpas-test.py b/libeap/wpa_supplicant/examples/wpas-test.py
new file mode 100755 (executable)
index 0000000..fd7f73d
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/python
+
+import dbus
+import sys, os
+import time
+
+WPAS_DBUS_SERVICE = "fi.epitest.hostap.WPASupplicant"
+WPAS_DBUS_INTERFACE = "fi.epitest.hostap.WPASupplicant"
+WPAS_DBUS_OPATH = "/fi/epitest/hostap/WPASupplicant"
+
+WPAS_DBUS_INTERFACES_INTERFACE = "fi.epitest.hostap.WPASupplicant.Interface"
+WPAS_DBUS_INTERFACES_OPATH = "/fi/epitest/hostap/WPASupplicant/Interfaces"
+WPAS_DBUS_BSSID_INTERFACE = "fi.epitest.hostap.WPASupplicant.BSSID"
+
+def byte_array_to_string(s):
+       import urllib
+       r = ""    
+       for c in s:
+               if c >= 32 and c < 127:
+                       r += "%c" % c
+               else:
+                       r += urllib.quote(chr(c))
+       return r
+
+def main():
+       if len(sys.argv) != 2:
+               print "Usage: wpas-test.py <interface>"
+               os._exit(1)
+
+       ifname = sys.argv[1]
+
+       bus = dbus.SystemBus()
+       wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
+       wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
+
+       # See if wpa_supplicant already knows about this interface
+       path = None
+       try:
+               path = wpas.getInterface(ifname)
+       except dbus.dbus_bindings.DBusException, exc:
+               if str(exc) != "wpa_supplicant knows nothing about this interface.":
+                       raise exc
+               try:
+                       path = wpas.addInterface(ifname, {'driver': dbus.Variant('wext')})
+               except dbus.dbus_bindings.DBusException, exc:
+                       if str(exc) != "wpa_supplicant already controls this interface.":
+                               raise exc
+
+       if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
+       iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
+       iface.scan()
+       # Should really wait for the "scanResults" signal instead of sleeping
+       time.sleep(5)
+       res = iface.scanResults()
+
+       print "Scanned wireless networks:"
+       for opath in res:
+               net_obj = bus.get_object(WPAS_DBUS_SERVICE, opath)
+               net = dbus.Interface(net_obj, WPAS_DBUS_BSSID_INTERFACE)
+               props = net.properties()
+
+               # Convert the byte-array for SSID and BSSID to printable strings
+               bssid = ""
+               for item in props["bssid"]:
+                       bssid = bssid + ":%02x" % item
+               bssid = bssid[1:]
+               ssid = byte_array_to_string(props["ssid"])
+               wpa = "no"
+               if props.has_key("wpaie"):
+                       wpa = "yes"
+               wpa2 = "no"
+               if props.has_key("rsnie"):
+                       wpa2 = "yes"
+               freq = 0
+               if props.has_key("frequency"):
+                       freq = props["frequency"]
+               caps = props["capabilities"]
+               qual = props["quality"]
+               level = props["level"]
+               noise = props["noise"]
+               maxrate = props["maxrate"] / 1000000
+
+               print "  %s  ::  ssid='%s'  wpa=%s  wpa2=%s  quality=%d%%  rate=%d  freq=%d" % (bssid, ssid, wpa, wpa2, qual, maxrate, freq)
+
+       wpas.removeInterface(dbus.ObjectPath(path))
+       # Should fail here with unknown interface error
+       iface.scan()
+
+if __name__ == "__main__":
+       main()
+