X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/089c965d09e2af09a4731ff164e1b68b3daf8047..c3c412e8765520205b7cf8413ddf8abca74f1bc3:/lib/python/Plugins/SystemPlugins/NetworkWizard/NetworkWizard.py
diff --git a/lib/python/Plugins/SystemPlugins/NetworkWizard/NetworkWizard.py b/lib/python/Plugins/SystemPlugins/NetworkWizard/NetworkWizard.py
index 13e7fdde..9f254066 100755
--- a/lib/python/Plugins/SystemPlugins/NetworkWizard/NetworkWizard.py
+++ b/lib/python/Plugins/SystemPlugins/NetworkWizard/NetworkWizard.py
@@ -4,31 +4,10 @@ from Screens.Rc import Rc
from Screens.MessageBox import MessageBox
from Components.Pixmap import Pixmap, MovingPixmap, MultiPixmap
from Components.Sources.Boolean import Boolean
-from Components.config import config, ConfigBoolean, configfile, ConfigYesNo, NoSave, ConfigSubsection, ConfigText, getConfigListEntry, ConfigSelection, ConfigPassword
from Components.Network import iNetwork
from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE
from enigma import eTimer
-
-config.misc.firstrun = ConfigBoolean(default = True)
-list = []
-list.append("WEP")
-list.append("WPA")
-list.append("WPA2")
-list.append("WPA/WPA2")
-
-weplist = []
-weplist.append("ASCII")
-weplist.append("HEX")
-
-config.plugins.wlan = ConfigSubsection()
-config.plugins.wlan.essid = NoSave(ConfigText(default = "home", fixed_size = False))
-config.plugins.wlan.hiddenessid = NoSave(ConfigText(default = "home", fixed_size = False))
-
-config.plugins.wlan.encryption = ConfigSubsection()
-config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = False))
-config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = "WPA/WPA2" ))
-config.plugins.wlan.encryption.wepkeytype = NoSave(ConfigSelection(weplist, default = "ASCII"))
-config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = "mysecurewlan", fixed_size = False))
+from os import system
class NetworkWizard(WizardLanguage, Rc):
skin = """
@@ -51,7 +30,7 @@ class NetworkWizard(WizardLanguage, Rc):
"""
- def __init__(self, session):
+ def __init__(self, session, interface = None):
self.xmlfile = resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")
WizardLanguage.__init__(self, session, showSteps = False, showStepSlider = False)
Rc.__init__(self)
@@ -65,9 +44,13 @@ class NetworkWizard(WizardLanguage, Rc):
self.Adapterlist = None
self.InterfaceState = None
self.isInterfaceUp = None
- self.WlanPluginInstalled = None
+ self.WlanPluginInstalled = False
self.ap = None
- self.selectedInterface = None
+ self.w = None
+ if interface is not None:
+ self.selectedInterface = interface
+ else:
+ self.selectedInterface = None
self.NextStep = None
self.resetRef = None
self.checkRef = None
@@ -76,9 +59,8 @@ class NetworkWizard(WizardLanguage, Rc):
self.newAPlist = None
self.WlanList = None
self.oldlist = None
- self.originalAth0State = None
- self.originalEth0State = None
- self.originalWlan0State = None
+
+ self.originalInterfaceState = {}
self.originalInterfaceStateChanged = False
self.Text = None
self.rescanTimer = eTimer()
@@ -92,32 +74,60 @@ class NetworkWizard(WizardLanguage, Rc):
self.close()
def markDone(self):
- self.rescanTimer.stop()
+ self.stopScan()
del self.rescanTimer
+ self.checkOldInterfaceState()
pass
- def getInstalledInterfaceCount(self):
+ def stopScan(self):
self.rescanTimer.stop()
+ if self.w is not None:
+ from Plugins.SystemPlugins.WirelessLan.Wlan import iWlan
+ iWlan.stopGetNetworkList()
+ self.w = None
+
+ def getInstalledInterfaceCount(self):
+ self.originalInterfaceState = {}
+ self.stopScan()
self.Adapterlist = iNetwork.getAdapterList()
self.InstalledInterfaceCount = len(self.Adapterlist)
- self.originalAth0State = iNetwork.getAdapterAttribute('ath0', 'up')
- self.originalEth0State = iNetwork.getAdapterAttribute('eth0', 'up')
- self.originalWlan0State = iNetwork.getAdapterAttribute('wlan0', 'up')
+ if self.Adapterlist is not None:
+ if self.InstalledInterfaceCount == 1 and self.selectedInterface is None:
+ self.selectedInterface = self.Adapterlist[0]
+ for interface in iNetwork.getAdapterList():
+ self.originalInterfaceState[interface] = {}
+ self.originalInterfaceState[interface]["up"] = iNetwork.getAdapterAttribute(interface, 'up')
+
+ def selectInterface(self):
+ self.InterfaceState = None
+ if self.selectedInterface is None:
+ if self.InstalledInterfaceCount <= 1:
+ if not iNetwork.isWirelessInterface(self.selectedInterface):
+ self.NextStep = 'nwconfig'
+ else:
+ self.NextStep = 'scanwlan'
+ self.checkInterface(self.selectedInterface)
+ else:
+ self.NextStep = 'selectinterface'
+ self.currStep = self.getStepWithID(self.NextStep)
+ self.afterAsyncCode()
+ else:
+ if not iNetwork.isWirelessInterface(self.selectedInterface):
+ self.NextStep = 'nwconfig'
+ else:
+ self.NextStep = 'scanwlan'
+ self.checkInterface(self.selectedInterface)
def checkOldInterfaceState(self):
# disable up interface if it was originally down and config is unchanged.
- if self.originalAth0State is False and self.originalInterfaceStateChanged is False:
- if iNetwork.checkforInterface('ath0') is True:
- iNetwork.deactivateInterface('ath0')
- if self.originalEth0State is False and self.originalInterfaceStateChanged is False:
- if iNetwork.checkforInterface('eth0') is True:
- iNetwork.deactivateInterface('eth0')
- if self.originalWlan0State is False and self.originalInterfaceStateChanged is False:
- if iNetwork.checkforInterface('wlan0') is True:
- iNetwork.deactivateInterface('wlan0')
+ if self.originalInterfaceStateChanged is False:
+ for interface in self.originalInterfaceState.keys():
+ if self.originalInterfaceState[interface]["up"] is False:
+ if iNetwork.checkforInterface(interface) is True:
+ system("ifconfig " + interface + " down")
def listInterfaces(self):
- self.rescanTimer.stop()
+ self.stopScan()
self.checkOldInterfaceState()
list = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
list.append((_("Exit network wizard"), "end"))
@@ -139,7 +149,7 @@ class NetworkWizard(WizardLanguage, Rc):
self.InterfaceSelect(self.selection)
def checkInterface(self,iface):
- self.rescanTimer.stop()
+ self.stopScan()
if self.Adapterlist is None:
self.Adapterlist = iNetwork.getAdapterList()
if self.NextStep is not 'end':
@@ -147,7 +157,7 @@ class NetworkWizard(WizardLanguage, Rc):
#Reset Network to defaults if network broken
iNetwork.resetNetworkConfig('lan', self.resetNetworkConfigCB)
self.resetRef = self.session.openWithCallback(self.resetNetworkConfigFinished, MessageBox, _("Please wait while we prepare your network interfaces..."), type = MessageBox.TYPE_INFO, enable_input = False)
- if iface in ('eth0', 'wlan0', 'ath0'):
+ if iface in iNetwork.getInstalledAdapters():
if iface in iNetwork.configuredNetworkAdapters and len(iNetwork.configuredNetworkAdapters) == 1:
if iNetwork.getAdapterAttribute(iface, 'up') is True:
self.isInterfaceUp = True
@@ -196,7 +206,7 @@ class NetworkWizard(WizardLanguage, Rc):
def AdapterSetupEndCB(self,data):
if data is True:
- if self.selectedInterface in ('wlan0', 'ath0'):
+ if iNetwork.isWirelessInterface(self.selectedInterface):
if self.WlanPluginInstalled == True:
from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus
iStatus.getDataForInterface(self.selectedInterface,self.checkWlanStateCB)
@@ -219,16 +229,18 @@ class NetworkWizard(WizardLanguage, Rc):
if data is True:
if status is not None:
text1 = _("Your Dreambox is now ready to use.\n\nYour internet connection is working now.\n\n")
- text2 = _('Accesspoint:') + "\t" + status[self.selectedInterface]["acesspoint"] + "\n"
- text3 = _('SSID:') + "\t" + status[self.selectedInterface]["essid"] + "\n"
- text4 = _('Link Quality:') + "\t" + status[self.selectedInterface]["quality"]+"%" + "\n"
- text5 = _('Signal Strength:') + "\t" + status[self.selectedInterface]["signal"] + "\n"
- text6 = _('Bitrate:') + "\t" + status[self.selectedInterface]["bitrate"] + "\n"
- text7 = _('Encryption:') + " " + status[self.selectedInterface]["encryption"] + "\n"
+ text2 = _('Accesspoint:') + "\t" + str(status[self.selectedInterface]["acesspoint"]) + "\n"
+ text3 = _('SSID:') + "\t" + str(status[self.selectedInterface]["essid"]) + "\n"
+ text4 = _('Link Quality:') + "\t" + str(status[self.selectedInterface]["quality"])+ "\n"
+ text5 = _('Signal Strength:') + "\t" + str(status[self.selectedInterface]["signal"]) + "\n"
+ text6 = _('Bitrate:') + "\t" + str(status[self.selectedInterface]["bitrate"]) + "\n"
+ text7 = _('Encryption:') + " " + str(status[self.selectedInterface]["encryption"]) + "\n"
text8 = _("Please press OK to continue.")
infotext = text1 + text2 + text3 + text4 + text5 + text7 +"\n" + text8
self.currStep = self.getStepWithID("checkWlanstatusend")
self.Text = infotext
+ if str(status[self.selectedInterface]["acesspoint"]) == "Not-Associated":
+ self.InterfaceState = False
self.afterAsyncCode()
def checkNetwork(self):
@@ -237,7 +249,7 @@ class NetworkWizard(WizardLanguage, Rc):
def checkNetworkCB(self,data):
if data is True:
- if self.selectedInterface in ('wlan0', 'ath0'):
+ if iNetwork.isWirelessInterface(self.selectedInterface):
if self.WlanPluginInstalled == True:
from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus
iStatus.getDataForInterface(self.selectedInterface,self.checkWlanStateCB)
@@ -272,13 +284,13 @@ class NetworkWizard(WizardLanguage, Rc):
newList.append(oldentry)
for newentry in newList:
- if newentry[1] == "hidden...":
+ if newentry[1] == "":
continue
self.newAPlist.append(newentry)
if len(self.newAPlist):
- if "hidden..." not in self.newAPlist:
- self.newAPlist.append(( _("enter hidden network SSID"), "hidden..." ))
+ if "" not in self.newAPlist:
+ self.newAPlist.append(( _("enter hidden network SSID"), "" ))
if (self.wizard[self.currStep].has_key("dynamiclist")):
currentListEntry = self["list"].getCurrent()
@@ -294,14 +306,20 @@ class NetworkWizard(WizardLanguage, Rc):
def listAccessPoints(self):
self.APList = []
- try:
- from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
- except ImportError:
+ if self.WlanPluginInstalled is False:
self.APList.append( ( _("No networks found"),_("unavailable") ) )
return self.APList
- else:
- self.w = Wlan(self.selectedInterface)
- aps = self.w.getNetworkList()
+ else:
+ try:
+ from Plugins.SystemPlugins.WirelessLan.Wlan import iWlan
+ iWlan.setInterface(self.selectedInterface)
+ self.w = iWlan.getInterface()
+ aps = iWlan.getNetworkList()
+ except ValueError:
+ self.APList = []
+ self.APList.append( ( _("No networks found"),_("unavailable") ) )
+ return self.APList
+
if aps is not None:
print "[NetworkWizard.py] got Accespoints!"
tmplist = []
@@ -320,19 +338,19 @@ class NetworkWizard(WizardLanguage, Rc):
for entry in complist:
self.APList.append( (entry[1], entry[1]) )
- if "hidden..." not in self.APList:
- self.APList.append(( _("enter hidden network SSID"), "hidden..." ))
-
- self.rescanTimer.start(3000)
+ if "" not in self.APList:
+ self.APList.append(( _("enter hidden network SSID"), "" ))
+
+ self.rescanTimer.start(5000)
return self.APList
def AccessPointsSelectionMade(self, index):
self.ap = index
self.WlanList = []
- currList = []
if (self.wizard[self.currStep].has_key("dynamiclist")):
- currList = self['list'].list
- for entry in currList:
+ for entry in self['list'].list:
+ if entry[1] == "":
+ continue
self.WlanList.append( (entry[1], entry[0]) )
self.AccessPointsSelect(index)
@@ -343,14 +361,37 @@ class NetworkWizard(WizardLanguage, Rc):
self.AccessPointsSelect(self.selection)
def checkWlanSelection(self):
- self.rescanTimer.stop()
+ self.stopScan()
self.currStep = self.getStepWithID(self.NextStep)
def isWlanPluginInstalled(self):
try:
- from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
+ from Plugins.SystemPlugins.WirelessLan.Wlan import iWlan
except ImportError:
self.WlanPluginInstalled = False
else:
self.WlanPluginInstalled = True
+ def listChoices(self):
+ self.stopScan()
+ list = []
+ if self.WlanPluginInstalled == True:
+ list.append((_("Configure your wireless LAN again"), "scanwlan"))
+ list.append((_("Configure your internal LAN"), "nwconfig"))
+ list.append((_("Exit network wizard"), "end"))
+ return list
+
+ def ChoicesSelectionMade(self, index):
+ self.ChoicesSelect(index)
+
+ def ChoicesSelect(self, index):
+ if index == 'end':
+ self.NextStep = 'end'
+ elif index == 'nwconfig':
+ self.selectedInterface = "eth0"
+ self.NextStep = 'nwconfig'
+ else:
+ self.NextStep = 'scanwlan'
+
+ def ChoicesSelectionMoved(self):
+ pass