X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/59dece7572bea6bb8aa0391c32774363c62fd71e..d3b93520aa641af4b8da8e0368dfa8392cd385c4:/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..a31b2d49 100755 --- a/lib/python/Plugins/SystemPlugins/NetworkWizard/NetworkWizard.py +++ b/lib/python/Plugins/SystemPlugins/NetworkWizard/NetworkWizard.py @@ -51,7 +51,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) @@ -67,7 +67,10 @@ class NetworkWizard(WizardLanguage, Rc): self.isInterfaceUp = None self.WlanPluginInstalled = None self.ap = None - self.selectedInterface = None + if interface is not None: + self.selectedInterface = interface + else: + self.selectedInterface = None self.NextStep = None self.resetRef = None self.checkRef = None @@ -79,6 +82,7 @@ class NetworkWizard(WizardLanguage, Rc): self.originalAth0State = None self.originalEth0State = None self.originalWlan0State = None + self.originalRa0State = None self.originalInterfaceStateChanged = False self.Text = None self.rescanTimer = eTimer() @@ -94,15 +98,49 @@ class NetworkWizard(WizardLanguage, Rc): def markDone(self): self.rescanTimer.stop() del self.rescanTimer + self.checkOldInterfaceState() pass def getInstalledInterfaceCount(self): self.rescanTimer.stop() self.Adapterlist = iNetwork.getAdapterList() self.InstalledInterfaceCount = len(self.Adapterlist) + if self.Adapterlist is not None: + if self.InstalledInterfaceCount == 1 and self.selectedInterface is None: + self.selectedInterface = self.Adapterlist[0] self.originalAth0State = iNetwork.getAdapterAttribute('ath0', 'up') self.originalEth0State = iNetwork.getAdapterAttribute('eth0', 'up') self.originalWlan0State = iNetwork.getAdapterAttribute('wlan0', 'up') + self.originalRa0State = iNetwork.getAdapterAttribute('ra0', 'up') + + def selectInterface(self): + self.InterfaceState = None + if self.selectedInterface is None and self.InstalledInterfaceCount <= 1: + if self.selectedInterface == 'eth0': + self.NextStep = 'nwconfig' + else: + self.NextStep = 'scanwlan' + self.checkInterface(self.selectedInterface) + elif self.selectedInterface is not None and self.InstalledInterfaceCount <= 1: + if self.selectedInterface == 'eth0': + self.NextStep = 'nwconfig' + else: + self.NextStep = 'scanwlan' + self.checkInterface(self.selectedInterface) + elif self.selectedInterface is None and self.InstalledInterfaceCount > 1: + self.NextStep = 'selectinterface' + self.currStep = self.getStepWithID(self.NextStep) + self.afterAsyncCode() + elif self.selectedInterface is not None and self.InstalledInterfaceCount > 1: + if self.selectedInterface == 'eth0': + self.NextStep = 'nwconfig' + else: + self.NextStep = 'scanwlan' + self.checkInterface(self.selectedInterface) + else: + self.NextStep = 'selectinterface' + self.currStep = self.getStepWithID(self.NextStep) + self.afterAsyncCode() def checkOldInterfaceState(self): # disable up interface if it was originally down and config is unchanged. @@ -115,7 +153,9 @@ class NetworkWizard(WizardLanguage, Rc): if self.originalWlan0State is False and self.originalInterfaceStateChanged is False: if iNetwork.checkforInterface('wlan0') is True: iNetwork.deactivateInterface('wlan0') - + if self.originalRa0State is False and self.originalInterfaceStateChanged is False: + if iNetwork.checkforInterface('ra0') is True: + iNetwork.deactivateInterface('ra0') def listInterfaces(self): self.rescanTimer.stop() self.checkOldInterfaceState() @@ -147,7 +187,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 ('eth0', 'wlan0', 'ath0', 'ra0'): if iface in iNetwork.configuredNetworkAdapters and len(iNetwork.configuredNetworkAdapters) == 1: if iNetwork.getAdapterAttribute(iface, 'up') is True: self.isInterfaceUp = True @@ -196,7 +236,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 +259,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 +279,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) @@ -299,32 +341,38 @@ class NetworkWizard(WizardLanguage, Rc): except ImportError: self.APList.append( ( _("No networks found"),_("unavailable") ) ) return self.APList - else: - self.w = Wlan(self.selectedInterface) - aps = self.w.getNetworkList() - if aps is not None: - print "[NetworkWizard.py] got Accespoints!" - tmplist = [] - complist = [] - for ap in aps: - a = aps[ap] - if a['active']: - tmplist.append( (a['bssid'], a['essid']) ) - complist.append( (a['bssid'], a['essid']) ) - - for entry in tmplist: - if entry[1] == "": - for compentry in complist: - if compentry[0] == entry[0]: - complist.remove(compentry) - 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) - return self.APList + else: + try: + self.w = Wlan(self.selectedInterface) + aps = self.w.getNetworkList() + except ValueError: + self.APList = [] + self.APList.append( ( _("No networks found"),_("unavailable") ) ) + return self.APList + else: + if aps is not None: + print "[NetworkWizard.py] got Accespoints!" + tmplist = [] + complist = [] + for ap in aps: + a = aps[ap] + if a['active']: + tmplist.append( (a['bssid'], a['essid']) ) + complist.append( (a['bssid'], a['essid']) ) + + for entry in tmplist: + if entry[1] == "": + for compentry in complist: + if compentry[0] == entry[0]: + complist.remove(compentry) + 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) + return self.APList def AccessPointsSelectionMade(self, index): self.ap = index @@ -354,3 +402,27 @@ class NetworkWizard(WizardLanguage, Rc): else: self.WlanPluginInstalled = True + def listChoices(self): + self.rescanTimer.stop() + 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 +