diff options
author | James Rayner <james@archlinux.org> | 2009-04-28 14:15:43 +0200 |
---|---|---|
committer | James Rayner <james@archlinux.org> | 2009-04-28 14:15:43 +0200 |
commit | 7b31dcd7b6da4f26db8f09924adc059f5a6ee589 (patch) | |
tree | b58eacd9ad091bb42d242af6946e259d0623888d /src-wireless | |
parent | 9f8ec61efe91504d6cad6c4b99a748ce316187f6 (diff) | |
download | netctl-7b31dcd7b6da4f26db8f09924adc059f5a6ee589.tar.gz netctl-7b31dcd7b6da4f26db8f09924adc059f5a6ee589.tar.xz |
Add WEP support to wireless-dbus, remove broken interface type check in wireless
Diffstat (limited to 'src-wireless')
-rwxr-xr-x | src-wireless/wireless-dbus | 58 |
1 files changed, 46 insertions, 12 deletions
diff --git a/src-wireless/wireless-dbus b/src-wireless/wireless-dbus index 2a60fc4..0e241a9 100755 --- a/src-wireless/wireless-dbus +++ b/src-wireless/wireless-dbus @@ -26,6 +26,25 @@ def read_config(config): options[var] = value return options + +def wep_hex2dec(key): + if len(key) not in [10, 26]: + print "Bad key" + raise SyntaxError + + x=0 + new_key=[] + while x<len(key): + new_key.append(str(int(key[x:x+2],16)).zfill(3)) + # Convert hex pair to decimal + #part = int(key[x:x+2],16) + # Convert to string with 00's filled and append + #new_key+=str(part).zfill(3) + # Increment to get next pair + x+=2 + + return new_key + def start(profile): # TODO: Add check if it's even a wireless interface # Interface up - probably redundant, should be 'ip' instead. @@ -52,7 +71,7 @@ def start(profile): args.append("-c" + profile["WPA_CONF"]) except KeyError: args.append("-c/etc/wpa_supplicant.conf") - elif not profile['SECURITY'] in ['wpa', 'wep']: + elif not profile['SECURITY'] in ['wpa', 'wep', 'none']: print " - Invalid security chosen" return False @@ -84,27 +103,42 @@ def start(profile): if_obj = bus.get_object(WPAS_DBUS_SERVICE, path) iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE); - # Connect - - if profile['SECURITY'] in ['wpa','wep']: - # Add+select the network + # Add and select the network. Networks already specified for wpa-config + if profile['SECURITY'] in ['wpa','wep','none']: + path = iface.addNetwork() net_obj = bus.get_object(WPAS_DBUS_SERVICE, path) rnet = dbus.Interface(net_obj, WPAS_DBUS_NETWORKS_INTERFACE) iface.selectNetwork(rnet) - if profile['SECURITY'] == "wpa": - # Set the options - opts = dbus.Dictionary({"ssid": dbus.ByteArray(profile['ESSID']), "psk": dbus.String(profile['KEY'])}, signature="sv") - elif profile['SECURITY'] == "wep": - opts = dbus.Dictionary({"ssid": dbus.ByteArray(profile['ESSID']), "wpa_key0": dbus.String(profile['KEY'])}, signature="sv") + if profile['SECURITY'] == "wpa": + opts = dbus.Dictionary({"ssid": dbus.ByteArray(profile['ESSID']), + "psk": dbus.String(profile['KEY'])}, + signature="sv") + rnet.set(opts) + elif profile['SECURITY'] == "wep": + key=profile['KEY'] + if key[:2] == "s:": # String key prefixed by "s:" + key=key[2:] + else: # Hex key + key=wep_hex2dec(key) + + print key + opts = dbus.Dictionary({"ssid": dbus.ByteArray(profile['ESSID']), + "key_mgmt": dbus.String("NONE"), + "wep_tx_keyidx": dbus.Int32(1), + "wep_key0": dbus.ByteArray(key)}, + signature="sv") + rnet.set(opts) + elif profile['SECURITY'] == "none": + opts = dbus.Dictionary({"ssid": dbus.ByteArray(profile['ESSID'])}, + signature="sv") rnet.set(opts) - # Determine timeout try: - timeout = profile["TIMEOUT"] + timeout = int(profile["TIMEOUT"]) except KeyError: timeout = 15 |