update network setup
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Fri, 11 Jul 2008 12:24:23 +0000 (12:24 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Fri, 11 Jul 2008 12:24:23 +0000 (12:24 +0000)
cleanup imports

data/skin_default.xml
lib/python/Components/Network.py
lib/python/Screens/NetworkSetup.py

index 0b34c449c514dd0617fa70a23144957037b320d5..c7f5bcce7ae1b080639c420c9c020d90f287798d 100644 (file)
@@ -538,6 +538,7 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                <ePixmap pixmap="skin_default/buttons/button_green.png" position="30,325" zPosition="10" size="15,16" transparent="1" alphatest="on" />
                <widget name="ButtonYellowtext" position="60,355" size="150,21" zPosition="10" font="Regular;21" transparent="1" />
                <ePixmap pixmap="skin_default/buttons/button_yellow.png" position="30,355" zPosition="10" size="15,16" transparent="1" alphatest="on" />
+               <widget name="introduction" position="140,360" size="300,20" zPosition="10" font="Regular;21" halign="center" transparent="1" />
        </screen>
        <!-- Network adapter selection -->
        <screen name="NetworkAdapterSelection" position="130,140" size="460,330" title="Select Network Adapter">
index 06e81eaf21d8f6dc41947b4aa7956d768c3e48dc..3abfc34c6c68d2dd7104c5dc44d7d4b3c79e0605 100644 (file)
@@ -1,7 +1,7 @@
-import os
-import re
+from os import system, popen
+from re import compile as re_compile
 from socket import *
-from enigma import eTimer, eConsoleAppContainer
+from enigma import eConsoleAppContainer
 
 class Network:
        def __init__(self):
@@ -13,7 +13,7 @@ class Network:
                self.container = eConsoleAppContainer()
 
        def getInterfaces(self):
-               devicesPattern = re.compile('[a-z]+[0-9]+')
+               devicesPattern = re_compile('[a-z]+[0-9]+')
 
                fp = file('/proc/net/dev', 'r')
                result = fp.readlines()
@@ -23,8 +23,8 @@ class Network:
                                device = devicesPattern.search(line).group()
                                self.ifaces[device] = self.getDataForInterface(device)
                                # Show only UP Interfaces in E2
-                               if self.getAdapterAttribute(device, 'up') is False:
-                                       del self.ifaces[device]
+                               #if self.getAdapterAttribute(device, 'up') is False:
+                               #       del self.ifaces[device]
                        except AttributeError:
                                pass
 
@@ -55,14 +55,14 @@ class Network:
        def getDataForInterface(self, iface):
                #ipRegexp = '[0-9]{1,2,3}\.[0-9]{1,2,3}\.[0-9]{1,2,3}\.[0-9]{1,2,3}'
                ipRegexp = '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
-               ipLinePattern = re.compile('inet addr:' + ipRegexp)
-               netmaskLinePattern = re.compile('Mask:' + ipRegexp)
-               bcastLinePattern = re.compile('Bcast:' + ipRegexp)
-               ipPattern = re.compile(ipRegexp)
-               upPattern = re.compile('UP ')
-               macPattern = re.compile('[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}')
-
-               fp = os.popen("ifconfig " + iface)
+               ipLinePattern = re_compile('inet addr:' + ipRegexp)
+               netmaskLinePattern = re_compile('Mask:' + ipRegexp)
+               bcastLinePattern = re_compile('Bcast:' + ipRegexp)
+               ipPattern = re_compile(ipRegexp)
+               upPattern = re_compile('UP ')
+               macPattern = re_compile('[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}')
+               
+               fp = popen("ifconfig " + iface)
                result = fp.readlines()
                fp.close()
                data = { 'up': False, 'dhcp': False }
@@ -87,8 +87,8 @@ class Network:
                        data['ip'] = [192, 168, 1, 2]
                        data['netmask'] = [255, 255, 255, 0]
                        data['gateway'] = [192, 168, 1, 1]
-
-               fp = os.popen("route -n | grep  " + iface)
+                       
+               fp = popen("route -n | grep  " + iface)
                result = fp.readlines()
                fp.close()
                for line in result:
@@ -104,24 +104,22 @@ class Network:
                fp.write("# automatically generated by enigma 2\n# do NOT change manually!\n\n")
                fp.write("auto lo\n")
                fp.write("iface lo inet loopback\n\n")
-
                for ifacename, iface in self.ifaces.items():
                        if iface['up'] == True:
                                fp.write("auto " + ifacename + "\n")
-                       if iface['dhcp'] == True:
-                               fp.write("iface "+ ifacename +" inet dhcp\n")
-                       else:
-                               fp.write("iface "+ ifacename +" inet static\n")
-                               if iface.has_key('ip'):
-                                       print tuple(iface['ip'])
-                                       fp.write("      address %d.%d.%d.%d\n" % tuple(iface['ip']))
-                                       fp.write("      netmask %d.%d.%d.%d\n" % tuple(iface['netmask']))
-                                       if iface.has_key('gateway'):
-                                               fp.write("      gateway %d.%d.%d.%d\n" % tuple(iface['gateway']))
-
-                       if iface.has_key("configStrings"):
-                               fp.write("\n" + iface["configStrings"] + "\n")
-                       fp.write("\n")
+                               if iface['dhcp'] == True:
+                                       fp.write("iface "+ ifacename +" inet dhcp\n")
+                               if iface['dhcp'] == False:
+                                       fp.write("iface "+ ifacename +" inet static\n")
+                                       if iface.has_key('ip'):
+                                               print tuple(iface['ip'])
+                                               fp.write("      address %d.%d.%d.%d\n" % tuple(iface['ip']))
+                                               fp.write("      netmask %d.%d.%d.%d\n" % tuple(iface['netmask']))
+                                               if iface.has_key('gateway'):
+                                                       fp.write("      gateway %d.%d.%d.%d\n" % tuple(iface['gateway']))
+                               if iface.has_key("configStrings"):
+                                       fp.write("\n" + iface["configStrings"] + "\n")
+                               fp.write("\n")                          
                fp.close()
                self.writeNameserverConfig()
 
@@ -171,8 +169,8 @@ class Network:
 
        def loadNameserverConfig(self):
                ipRegexp = "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
-               nameserverPattern = re.compile("nameserver +" + ipRegexp)
-               ipPattern = re.compile(ipRegexp)
+               nameserverPattern = re_compile("nameserver +" + ipRegexp)
+               ipPattern = re_compile(ipRegexp)
 
                resolv = []
                try:
@@ -193,13 +191,13 @@ class Network:
 
        def deactivateNetworkConfig(self):
                for iface in self.ifaces.keys():
-                       os.system("ip addr flush " + iface)
-               os.system("/etc/init.d/networking stop")
-               os.system("killall -9 udhcpc")
-               os.system("rm /var/run/udhcpc*")
+                       system("ip addr flush " + iface)
+               system("/etc/init.d/networking stop")
+               system("killall -9 udhcpc")
+               system("rm /var/run/udhcpc*")
 
        def activateNetworkConfig(self):
-               os.system("/etc/init.d/networking start")
+               system("/etc/init.d/networking start")
                self.getInterfaces()
 
        def getNumberOfAdapters(self):
@@ -209,7 +207,8 @@ class Network:
                # maybe this needs to be replaced by an external list.
                friendlyNames = {
                        "eth0": _("Integrated Ethernet"),
-                       "wlan0": _("Wireless")
+                       "wlan0": _("Wireless"),
+                       "ath0": _("Integrated Wireless")
                }
                return friendlyNames.get(x, x) # when we have no friendly name, use adapter name
 
@@ -266,7 +265,10 @@ class Network:
                if mode == 'wlan':
                        fp.write("auto wlan0\n")
                        fp.write("iface wlan0 inet dhcp\n")
-               else:
+               if mode == 'wlan-mpci':
+                       fp.write("auto ath0\n")
+                       fp.write("iface eth0 inet dhcp\n")
+               if mode == 'lan':
                        fp.write("auto eth0\n")
                        fp.write("iface eth0 inet dhcp\n")
                fp.write("\n")
@@ -276,21 +278,28 @@ class Network:
                self.deactivateNetworkConfig()
                self.writeDefaultNetworkConfig(mode)
                if mode == 'wlan':
-                       os.system("ifconfig eth0 down")
-                       os.system("ifconfig wlan0 up")
-               else:
-                       os.system("ifconfig eth0 up")
-                       os.system("ifconfig wlan0 down")
+                       system("ifconfig eth0 down")
+                       system("ifconfig ath0 down")
+                       system("ifconfig wlan0 up")
+               if mode == 'wlan-mpci':
+                       system("ifconfig eth0 down")
+                       system("ifconfig wlan0 down")
+                       system("ifconfig ath0 up")              
+               if mode == 'lan':                       
+                       system("ifconfig eth0 up")
+                       system("ifconfig wlan0 down")
+                       system("ifconfig ath0 down")
+               self.getInterfaces()    
 
        def checkNetworkState(self):
                ok_counter = 0
-               ret1=os.system("ping -c 1 www.dream-multimedia-tv.de")
+               ret1=system("ping -c 1 www.dream-multimedia-tv.de")
                if ret1 != 0:
                        ok_counter = ok_counter + 1
-               ret2=os.system("ping -c 1 www.heise.de")
+               ret2=system("ping -c 1 www.heise.de")
                if ret2 != 0:
                        ok_counter = ok_counter + 1
-               ret3=os.system("ping -c 1 www.google.de")
+               ret3=system("ping -c 1 www.google.de")
                if ret2 != 0:
                        ok_counter = ok_counter + 1             
                if ok_counter <= 2:
@@ -314,21 +323,25 @@ class Network:
                self.container.dataAvail.get().remove(self.dataAvail)
 
        def checkforInterface(self,iface):
-               ret=os.system("ifconfig " + iface + " up")
-               if ret == 0:
+               if self.getAdapterAttribute(iface, 'up') is True:
                        return True
                else:
-                       return False
-
+                       ret=system("ifconfig " + iface + " up")
+                       system("ifconfig " + iface + " down")
+                       if ret == 0:
+                               return True
+                       else:
+                               return False
+               
        def checkDNSLookup(self):
                ok_counter = 0
-               ret1=os.system("nslookup www.dream-multimedia-tv.de")
+               ret1=system("nslookup www.dream-multimedia-tv.de")
                if ret1 != 0:
                        ok_counter = ok_counter + 1
-               ret2=os.system("nslookup www.heise.de")
+               ret2=system("nslookup www.heise.de")
                if ret2 != 0:
                        ok_counter = ok_counter + 1
-               ret3=os.system("nslookup www.google.de")
+               ret3=system("nslookup www.google.de")
                if ret2 != 0:
                        ok_counter = ok_counter + 1             
                if ok_counter <= 2:
@@ -336,6 +349,26 @@ class Network:
                else:
                        return False
                
+       def deactivateInterface(self,iface):
+               system("ifconfig " + iface + " down")
+               
+       def detectWlanModule(self):
+               self.wlanmodule = None
+               rt73_dir = "/sys/bus/usb/drivers/rt73/"
+               zd1211b_dir = "/sys/bus/usb/drivers/zd1211b/"
+               if os_path.exists(rt73_dir):
+                       files = []
+                       files = listdir(rt73_dir)
+                       if len(files) >= 1:
+                               self.wlanmodule = 'ralink'
+               if os_path.exists(zd1211b_dir):
+                       files = []
+                       files = listdir(zd1211b_dir)
+                       if len(files) != 0:
+                               self.wlanmodule = 'zydas'
+               return self.wlanmodule
+       
+       
 iNetwork = Network()
 
 def InitNetwork():
index a3f39d67d6f47a4570eafa4c6a6e06c711262109..d18d82d43114c38ab3554dabcb64c795592e1780 100644 (file)
@@ -5,16 +5,16 @@ from Screens.Standby import *
 from Components.ConfigList import ConfigListScreen
 from Components.config import config, getConfigListEntry
 from Components.Network import iNetwork
-from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
+from Tools.Directories import resolveFilename
 from Components.Label import Label,MultiColorLabel
 from Components.Pixmap import Pixmap,MultiPixmap
-from Tools.LoadPixmap import LoadPixmap
 from Components.MenuList import MenuList
-from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigNothing, ConfigSubsection, ConfigText, ConfigSelection, getConfigListEntry
+from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigText, ConfigSelection, getConfigListEntry
 from Components.PluginComponent import plugins
 from Plugins.Plugin import PluginDescriptor
-from enigma import eTimer, eConsoleAppContainer,gRGB
-import time, os, re
+from enigma import eTimer
+from os import path as os_path
+from re import compile as re_compile, search as re_search
 from Tools.Directories import resolveFilename, SCOPE_PLUGINS
 
 class NetworkAdapterSelection(Screen):
@@ -43,17 +43,22 @@ class NetworkAdapterSelection(Screen):
                        self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[1])
 
        def AdapterSetupClosed(self, *ret):
-               self.close()
+               if len(self.adapters) == 1:
+                       self.close()
 
        def NetworkFallback(self):
                if iNetwork.configuredInterfaces.has_key('wlan0') is True:
                        self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
+               if iNetwork.configuredInterfaces.has_key('ath0') is True:
+                       self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
                else:
                        self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.lan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
 
        def ErrorMessageClosed(self, *ret):
                if iNetwork.configuredInterfaces.has_key('wlan0') is True:
                        self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'wlan0')
+               elif iNetwork.configuredInterfaces.has_key('ath0') is True:
+                       self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'ath0')
                else:
                        self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'eth0')
 
@@ -67,6 +72,7 @@ class NameserverSetup(Screen, ConfigListScreen):
                self["ButtonGreentext"] = Label(_("Add"))
                self["ButtonYellowtext"] = Label(_("Delete"))
                self["ButtonRedtext"] = Label(_("Close"))
+               self["introduction"] = Label(_("Press OK to activate the settings."))
                self.createConfig()
                
                self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
@@ -125,23 +131,18 @@ class NameserverSetup(Screen, ConfigListScreen):
                        iNetwork.removeNameserver(self.nameservers[index])
                        self.createConfig()
                        self.createSetup()
-
+       
 class AdapterSetup(Screen, ConfigListScreen):
        def __init__(self, session, iface,essid=None, aplist=None):
                Screen.__init__(self, session)
                self.session = session
-               iNetwork.getInterfaces()
+               self.iface = iface
                self.essid = essid
                self.aplist = aplist
-               ## FIXME , workaround against current wizzard not able to send arguments
-               if iface == 0:
-                       self.iface = "eth0"
-               elif iface == 1:
-                       self.iface = "wlan0"
-               else:
-                       self.iface = iface
-               
-               if self.iface == 'wlan0':
+               self.extended = None
+               iNetwork.getInterfaces()
+
+               if self.iface == "wlan0" or self.iface == "ath0" :
                        from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan
                        self.ws = wpaSupplicant()
                        list = []
@@ -152,25 +153,24 @@ class AdapterSetup(Screen, ConfigListScreen):
                                self.nwlist = self.aplist
                                self.nwlist.sort(key = lambda x: x[0])
                        else:
-                               if iNetwork.getAdapterAttribute('wlan0', 'up') is True:
-                                       self.nwlist = []
-                                       try:
-                                               self.w = Wlan('wlan0')
-                                               aps = self.w.getNetworkList()
-                                               if aps is not None:
-                                                       print "[Wlan.py] got Accespoints!"
-                                                       for ap in aps:
-                                                               a = aps[ap]
-                                                               if a['active']:
-                                                                       if a['essid'] == "":
-                                                                               a['essid'] = a['bssid']
-                                                                       self.nwlist.append( a['essid'])
-                                               self.nwlist.sort(key = lambda x: x[0])
-                                       except:
-                                               self.nwlist.append("No Networks found")
-                               else:
+                               self.nwlist = []
+                               self.w = None
+                               self.aps = None
+                               try:
+                                       self.w = Wlan(self.iface)
+                                       self.aps = self.w.getNetworkList()
+                                       if self.aps is not None:
+                                               print "[Wlan.py] got Accespoints!"
+                                               for ap in aps:
+                                                       a = aps[ap]
+                                                       if a['active']:
+                                                               if a['essid'] == "":
+                                                                       a['essid'] = a['bssid']
+                                                               self.nwlist.append( a['essid'])
+                                       self.nwlist.sort(key = lambda x: x[0])
+                               except:
                                        self.nwlist.append("No Networks found")
-                               
+
                        wsconfig = self.ws.loadConfig()
                        default = self.essid or wsconfig['ssid']
                        if default not in self.nwlist:
@@ -179,12 +179,16 @@ class AdapterSetup(Screen, ConfigListScreen):
                        config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = wsconfig['encryption'] ))
                        config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = wsconfig['encryption_type'] ))
                        config.plugins.wlan.encryption.psk = NoSave(ConfigText(default = wsconfig['key'], fixed_size = False,visible_width = 30))
-                       #self.ws.loadConfig()
                
+               self.activateInterfaceEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "up") or False))
                self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
-               self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=True))
                self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
                self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
+               if iNetwork.getAdapterAttribute(self.iface, "gateway"):
+                       self.dhcpdefault=True
+               else:
+                       self.dhcpdefault=False
+               self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=self.dhcpdefault or False))
                self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
                nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
                self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
@@ -235,46 +239,50 @@ class AdapterSetup(Screen, ConfigListScreen):
                else:
                        self["IP"].setText([0,0,0,0])
                self["Mask"].setText(self.netmaskConfigEntry.getText())
-               self["Gateway"].setText(self.gatewayConfigEntry.getText())
+               if iNetwork.getAdapterAttribute(self.iface, "gateway"):
+                       self["Gateway"].setText(self.gatewayConfigEntry.getText())
+               else:
+                       self["Gateway"].hide()
+                       self["Gatewaytext"].hide()
                self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
 
+
        def createSetup(self):
                self.list = []
-               
-               self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
-               self.list.append(self.dhcpEntry)
-               if not self.dhcpConfigEntry.value:
-                       self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
-                       self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
-                       self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry))
-                       if self.hasGatewayConfigEntry.value:
-                               self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
-               
-               self.extended = None
-               self.extendedSetup = None
-               for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
-                       callFnc = p.__call__["ifaceSupported"](self.iface)
-                       if callFnc is not None:
-                               self.extended = callFnc
-                               print p.__call__
-                               if p.__call__.has_key("configStrings"):
-                                       self.configStrings = p.__call__["configStrings"]
-                               else:
-                                       self.configStrings = None
-                               
-                               self.list.append(getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid))
-                               self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
-                               self.list.append(self.encryptionEnabled)
-                               
-                               if config.plugins.wlan.encryption.enabled.value:
-                                       self.list.append(getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type))
-                                       self.list.append(getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk))
+               self.InterfaceEntry = getConfigListEntry(_("Use Interface"), self.activateInterfaceEntry)
+               self.list.append(self.InterfaceEntry)
+               if self.activateInterfaceEntry.value:
+                       self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
+                       self.list.append(self.dhcpEntry)
+                       if not self.dhcpConfigEntry.value:
+                               self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
+                               self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
+                               self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry))
+                               if self.hasGatewayConfigEntry.value:
+                                       self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
+                                       
+                       for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
+                               callFnc = p.__call__["ifaceSupported"](self.iface)
+                               if callFnc is not None:
+                                       self.extended = callFnc
+                                       if p.__call__.has_key("configStrings"):
+                                               self.configStrings = p.__call__["configStrings"]
+                                       else:
+                                               self.configStrings = None
+                                               
+                                       self.list.append(getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid))
+                                       self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
+                                       self.list.append(self.encryptionEnabled)
+                                       
+                                       if config.plugins.wlan.encryption.enabled.value:
+                                               self.list.append(getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type))
+                                               self.list.append(getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk))
                
                self["config"].list = self.list
                self["config"].l.setList(self.list)
 
        def KeyBlue(self):
-               self.session.open(NameserverSetup)
+               self.session.openWithCallback(self.NameserverSetupClosed, NameserverSetup)
 
        def newConfig(self):
                print self["config"].getCurrent()
@@ -290,10 +298,8 @@ class AdapterSetup(Screen, ConfigListScreen):
                self.createSetup()
 
        def ok(self):
-               selection = self["config"].getCurrent()
-               if selection == self.extendedSetup:
-                       self.extended(self.session, self.iface)
-               else:
+               iNetwork.setAdapterAttribute(self.iface, "up", self.activateInterfaceEntry.value)
+               if self.activateInterfaceEntry.value is True:
                        iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
                        iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
                        iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
@@ -301,29 +307,44 @@ class AdapterSetup(Screen, ConfigListScreen):
                                iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
                        else:
                                iNetwork.removeAdapterAttribute(self.iface, "gateway")
-                       
+                               
                        if self.extended is not None and self.configStrings is not None:
                                iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
                                self.ws.writeConfig()
-                       
-                       iNetwork.deactivateNetworkConfig()
-                       iNetwork.writeNetworkConfig()
-                       iNetwork.activateNetworkConfig()
-                       self.close()
+               else:
+                       iNetwork.removeAdapterAttribute(self.iface, "ip")
+                       iNetwork.removeAdapterAttribute(self.iface, "netmask")
+                       iNetwork.removeAdapterAttribute(self.iface, "gateway")
+                       iNetwork.deactivateInterface(self.iface)
+
+               iNetwork.deactivateNetworkConfig()
+               iNetwork.writeNetworkConfig()
+               iNetwork.activateNetworkConfig()
+               self.close()
 
        def cancel(self):
+               if self.activateInterfaceEntry.value is False:
+                       iNetwork.deactivateInterface(self.iface)
                iNetwork.getInterfaces()
                self.close()
 
        def run(self):
                self.ok()
 
+       def NameserverSetupClosed(self, *ret):
+               iNetwork.loadNameserverConfig()
+               nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
+               self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
+               self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
+               self.createSetup()
+               self.layoutFinished()
+       
 
 class AdapterSetupConfiguration(Screen):
        def __init__(self, session,iface):
                Screen.__init__(self, session)
-               self.iface = iface
                self.session = session
+               self.iface = iface
                self.mainmenu = self.genMainMenu()
                self["menulist"] = MenuList(self.mainmenu)
                self["description"] = Label()
@@ -339,7 +360,7 @@ class AdapterSetupConfiguration(Screen):
                
                self.oktext = _("Press OK on your remote control to continue.")
                self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
-               self.errortext = _("No working wireless interface found.\n Please verify that you have attached a compatible WLAN USB Stick or enable you local network interface.")    
+               self.errortext = _("No working wireless interface found.\n Please verify that you have attached a compatible WLAN device or enable you local network interface.")       
                
                self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
                {
@@ -357,48 +378,59 @@ class AdapterSetupConfiguration(Screen):
                self.updateStatusbar()
 
        def ok(self):
+               print "SELF.iFACE im OK Klick",self.iface
+               print "self.menulist.getCurrent()[1]",self["menulist"].getCurrent()[1]
                if self["menulist"].getCurrent()[1] == 'edit':
-                       if self.iface == 'wlan0':
-                               from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
-                               ifobj = Wireless(self.iface) # a Wireless NIC Object
-                               self.wlanresponse = ifobj.getStatistics()
-                               if self.wlanresponse[0] != 19: # Wlan Interface found.
-                                       self.session.open(AdapterSetup,self.iface)
+                       if self.iface == 'wlan0' or self.iface == 'ath0':
+                               try:
+                                       from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
+                                       from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
+                               except ImportError:
+                                       self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
                                else:
-                                       # Display Wlan not available Message
-                                       self.showErrorMessage()
+                                       ifobj = Wireless(self.iface) # a Wireless NIC Object
+                                       self.wlanresponse = ifobj.getStatistics()
+                                       if self.wlanresponse[0] != 19: # Wlan Interface found.
+                                               self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
+                                       else:
+                                               # Display Wlan not available Message
+                                               self.showErrorMessage()
                        else:
-                               self.session.open(AdapterSetup,self.iface)
+                               self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
                if self["menulist"].getCurrent()[1] == 'test':
                        self.session.open(NetworkAdapterTest,self.iface)
                if self["menulist"].getCurrent()[1] == 'dns':
                        self.session.open(NameserverSetup)
                if self["menulist"].getCurrent()[1] == 'scanwlan':
-                       from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
-                       ifobj = Wireless(self.iface) # a Wireless NIC Object
-                       self.wlanresponse = ifobj.getStatistics()
-                       if self.wlanresponse[0] != 19:
+                       try:
                                from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
-                               self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
+                               from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
+                       except ImportError:
+                               self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
                        else:
-                               # Display Wlan not available Message
-                               self.showErrorMessage()
+                               ifobj = Wireless(self.iface) # a Wireless NIC Object
+                               self.wlanresponse = ifobj.getStatistics()
+                               if self.wlanresponse[0] != 19:
+                                       self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
+                               else:
+                                       # Display Wlan not available Message
+                                       self.showErrorMessage()
                if self["menulist"].getCurrent()[1] == 'wlanstatus':
-                       from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
-                       ifobj = Wireless(self.iface) # a Wireless NIC Object
-                       self.wlanresponse = ifobj.getStatistics()
-                       if self.wlanresponse[0] != 19:
+                       try:
                                from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
-                               self.session.open(WlanStatus,self.iface)
-                       else:
-                               # Display Wlan not available Message
-                               self.showErrorMessage()
+                               from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
+                       except ImportError:
+                               self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
+                       else:   
+                               ifobj = Wireless(self.iface) # a Wireless NIC Object
+                               self.wlanresponse = ifobj.getStatistics()
+                               if self.wlanresponse[0] != 19:
+                                       self.session.open(WlanStatus,self.iface)
+                               else:
+                                       # Display Wlan not available Message
+                                       self.showErrorMessage()
                if self["menulist"].getCurrent()[1] == 'lanrestart':
                        self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
-               if self["menulist"].getCurrent()[1] == 'enablewlan':
-                       self.session.openWithCallback(self.enableWlan, MessageBox, _("Are you sure you want to enable WLAN support?\nConnect your Wlan USB Stick to your Dreambox and press OK.\n\n") )
-               if self["menulist"].getCurrent()[1] == 'enablelan':
-                       self.session.openWithCallback(self.enableLan, MessageBox, (_("Are you sure you want to enable your local network?\n\n") + self.oktext ) )
                if self["menulist"].getCurrent()[1] == 'openwizard':
                        from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard
                        self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard)
@@ -429,8 +461,6 @@ class AdapterSetupConfiguration(Screen):
                        self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
                if self["menulist"].getCurrent()[1] == 'test':
                        self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
-               if self["menulist"].getCurrent()[1] == 'enablelan':
-                       self["description"].setText(_("Enable the local network of your Dreambox.\n\n" ) + self.oktext )
                if self["menulist"].getCurrent()[1] == 'dns':
                        self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
                if self["menulist"].getCurrent()[1] == 'scanwlan':
@@ -439,8 +469,6 @@ class AdapterSetupConfiguration(Screen):
                        self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
                if self["menulist"].getCurrent()[1] == 'lanrestart':
                        self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
-               if self["menulist"].getCurrent()[1] == 'enablewlan':
-                       self["description"].setText(_("Pressing OK enables the built in wireless LAN support of your Dreambox.\nWlan USB Sticks with Zydas ZD1211B and RAlink RT73 Chipset are supported.\nConnect your Wlan USB Stick to your Dreambox before pressing OK.\n\n" ) + self.reboottext )
                if self["menulist"].getCurrent()[1] == 'openwizard':
                        self["description"].setText(_("Use the Networkwizard to configure your Network\n" ) + self.oktext )
 
@@ -449,7 +477,7 @@ class AdapterSetupConfiguration(Screen):
                self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
                self["Statustext"].setText(_("Link:"))
                
-               if self.iface == 'wlan0':
+               if self.iface == 'wlan0' or self.iface == 'ath0':
                        try:
                                from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
                                w = Wlan(self.iface)
@@ -475,76 +503,42 @@ class AdapterSetupConfiguration(Screen):
                menu.append((_("Network test"), "test"))
                menu.append((_("Restart network"), "lanrestart"))
                
-               self.extended = None
-               self.extendedSetup = None
                for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
                        callFnc = p.__call__["ifaceSupported"](self.iface)
                        if callFnc is not None:
                                menu.append((_("Scan Wireless Networks"), "scanwlan"))
                                menu.append((_("Show WLAN Status"), "wlanstatus"))
-                               menu.append((_("Enable LAN"), "enablelan"))
-                       if callFnc is None and iNetwork.ifaces.has_key('wlan0') is False:
-                               menu.append((_("Enable WLAN"), "enablewlan"))
-                       if callFnc is None and iNetwork.ifaces.has_key('wlan0') is True:
-                               menu.append((_("Enable LAN"), "enablelan"))
                                
-               if os.path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
+               if os_path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
                        menu.append((_("NetworkWizard"), "openwizard"));
                return menu
 
        def AdapterSetupClosed(self, *ret):
                self.mainmenu = self.genMainMenu()
                self["menulist"].l.setList(self.mainmenu)
+               iNetwork.getInterfaces()
                self.updateStatusbar()
 
        def WlanScanClosed(self,*ret):
                if ret[0] is not None:
-                       self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, 'wlan0',ret[0],ret[1])
+                       self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1])
                else:
-                       self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, 'wlan0',None,ret[0])
+                       self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,None,ret[0])
 
-       def enableWlan(self, ret = False):
-               if (ret == True):
-                       iNetwork.resetNetworkConfig('wlan')
-                       iNetwork.getInterfaces()
-                       if iNetwork.getAdapterAttribute('wlan0', 'up') is True:
-                               self.iface = 'wlan0'
-                               try:
-                                       from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
-                               except ImportError:
-                                       self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
-                               else:   
-                                       self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
-                       else:
-                               self.session.openWithCallback(self.restartDreambox, MessageBox, _("Your wireless LAN Adapter could not be started.\nDo you want to reboot your Dreambox to apply the new configuration?\n"))
-
-       def enableLan(self, ret = False):
-               if (ret == True):
-                       iNetwork.resetNetworkConfig('lan')
-                       iNetwork.getInterfaces()
-                       if iNetwork.getAdapterAttribute('eth0', 'up') is True:
-                               self.iface = 'eth0'
-                               self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, 'eth0')
-                       else:
-                               self.session.openWithCallback(self.restartDreambox, MessageBox, _("Your wired LAN Adapter could not be started.\nDo you want to reboot your Dreambox to apply the new configuration?\n"))
 
        def restartLan(self, ret = False):
                if (ret == True):
                        iNetwork.restartNetwork()
 
-       def restartDreambox(self, ret = False):
-               if (ret == True):
-                       TryQuitMainloop(self.session,2)
-
        def getLinkState(self,iface):
                iNetwork.getLinkState(iface,self.dataAvail)
 
        def dataAvail(self,data):
                self.output = data.strip()
                result = self.output.split('\n')
-               pattern = re.compile("Link detected: yes")
+               pattern = re_compile("Link detected: yes")
                for item in result:
-                       if re.search(pattern, item):
+                       if re_search(pattern, item):
                                self["statuspic"].setPixmapNum(0)
                        else:
                                self["statuspic"].setPixmapNum(1)
@@ -866,7 +860,7 @@ class NetworkAdapterTest(Screen):
                self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info"))
                self["AdapterInfo_OK"] = Pixmap()
                
-               if self.iface == 'wlan0':
+               if self.iface == 'wlan0' or self.iface == 'ath0':
                        self["Networktext"] = MultiColorLabel(_("Wireless Network"))
                else:
                        self["Networktext"] = MultiColorLabel(_("Local Network"))
@@ -910,7 +904,7 @@ class NetworkAdapterTest(Screen):
                self["InfoText"] = Label()
 
        def getLinkState(self,iface):
-               if iface == 'wlan0':
+               if iface == 'wlan0' or iface == 'ath0':
                        try:
                                from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
                                w = Wlan(iface)
@@ -936,9 +930,9 @@ class NetworkAdapterTest(Screen):
        def dataAvail(self,data):
                self.output = data.strip()
                result = self.output.split('\n')
-               pattern = re.compile("Link detected: yes")
+               pattern = re_compile("Link detected: yes")
                for item in result:
-                       if re.search(pattern, item):
+                       if re_search(pattern, item):
                                self["Network"].setForegroundColorNum(2)
                                self["Network"].setText(_("connected"))
                                self["NetworkInfo_Check"].setPixmapNum(0)