summaryrefslogtreecommitdiffstats
path: root/src/connections/wireless-dbus
diff options
context:
space:
mode:
Diffstat (limited to 'src/connections/wireless-dbus')
-rwxr-xr-xsrc/connections/wireless-dbus137
1 files changed, 0 insertions, 137 deletions
diff --git a/src/connections/wireless-dbus b/src/connections/wireless-dbus
deleted file mode 100755
index d954577..0000000
--- a/src/connections/wireless-dbus
+++ /dev/null
@@ -1,137 +0,0 @@
-#! /usr/bin/env python
-import sys
-import dbus
-import shlex
-import subprocess
-from signal import SIGTERM
-from os import kill
-from time import sleep
-
-# dbus constants.
-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"
-WPAS_DBUS_NETWORKS_INTERFACE = "fi.epitest.hostap.WPASupplicant.Network"
-
-def read_config(config):
- cfg = shlex.split(open(config, "r").read())
- options = {}
- for line in cfg:
- (var, delim, value) = line.partition('=')
- if not delim:
- raise SyntaxError, 'Bad configuration file'
- options[var] = value
- return options
-
-def start(profile):
- # TODO: Add check if it's even a wireless interface
- # Interface up...
- try:
- subprocess.check_call(["ifconfig", profile['INTERFACE'], "up"])
- except CalledProcessError:
- print " - Could not bring interface up"
- return False
-
- # Manually set any iwconfig options, ignoring errors
- if profile.has_key('IWCONFIG'):
- subprocess.call(["iwconfig", profile['INTERFACE'], profile['IWCONFIG']])
-
-
- # Base arguments
- args=["wpa_supplicant", "-Bu", "-P/var/run/wpa_supplicant.pid"]
-
- try:
- args.append(profile['WPA_OPTS'])
- except KeyError:
- args.append("-Dwext")
-
- if profile['SECURITY'] == "wpa-config":
- try:
- args.append("-c" + profile["WPA_CONF"])
- except KeyError:
- args.append("-c/etc/wpa_supplicant.conf")
- elif not profile['SECURITY'] in ['yes', 'wpa', 'wep']:
- print " - Invalid security chosen"
- return False
-
- # Start wpa_supplicant
- supplicant = subprocess.Popen(args,stderr=subprocess.STDOUT,stdout=subprocess.PIPE)
- output = supplicant.communicate()[0]
- if supplicant.returncode not in [255,0]:
- print output
- print " - Could not start wpa_supplicant"
- return False
-
- # Connect to wpa_supplicant
- bus = dbus.SystemBus()
- wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
- wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
-
- # Add/Get interface path
- try:
- driver=profile["WPA_DRIVER"]
- except KeyError:
- driver="wext"
-
- try:
- path = wpas.getInterface("ipw0")
- except dbus.exceptions.DBusException:
- path = wpas.addInterface("ipw0", {"driver":dbus.String(driver,variant_level=1)})
-
- # Get interface object
- if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
- iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE);
-
- # Connect
- if profile['SECURITY'] in ['wpa','yes','wep']:
- # Add+select the network
- path = iface.addNetwork()
- net_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
- rnet = dbus.Interface(net_obj, WPAS_DBUS_NETWORKS_INTERFACE)
- iface.selectNetwork(rnet)
- # Set the options
- opts = dbus.Dictionary({"ssid": dbus.ByteArray(profile['ESSID']), "psk": dbus.String(profile['KEY'])}, signature="sv")
- rnet.set(opts)
-
- # Determine timeout
- try:
- timeout = profile["TIMEOUT"]
- except KeyError:
- timeout = 15
-
- # Check for association
- n=0
- while n <= timeout:
- n+=1
- sleep(1)
- state = iface.state()
- if state == "COMPLETED":
- break
-
- if n == timeout:
- print " - Association/Authentication failed:", state
- return False
-
- # Run ethernet and get an ip.
- try:
- subprocess.check_call(["/usr/lib/network/connections/ethernet", "up", sys.argv[2]])
- except CalledProcessError:
- return False
- return True
-
-def stop(profile):
- subprocess.call(["/usr/lib/network/connections/ethernet", "down", sys.argv[2]])
- kill(int(open("/var/run/wpa_supplicant.pid").read()),SIGTERM)
- return True
-
-if __name__ == "__main__":
- profile = read_config("/etc/network.d/"+sys.argv[2])
-
- if sys.argv[1] == "up":
- sys.exit(not start(profile))
- elif sys.argv[1] == "down":
- sys.exit(not stop(profile))