X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FNetworkSetup.py;h=27b54dd1d11c3e55f8e04cca3311669b06caa79b;hp=e7ba6071aee54deff0bbda40d5bb0bf800f6cad3;hb=HEAD;hpb=c3c412e8765520205b7cf8413ddf8abca74f1bc3 diff --git a/lib/python/Screens/NetworkSetup.py b/lib/python/Screens/NetworkSetup.py index e7ba607..27b54dd 100755 --- a/lib/python/Screens/NetworkSetup.py +++ b/lib/python/Screens/NetworkSetup.py @@ -296,18 +296,16 @@ class NameserverSetup(Screen, ConfigListScreen, HelpableScreen): class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): - def __init__(self, session, networkinfo, essid=None, aplist=None): + def __init__(self, session, networkinfo, essid=None): Screen.__init__(self, session) HelpableScreen.__init__(self) self.session = session if isinstance(networkinfo, (list, tuple)): self.iface = networkinfo[0] self.essid = networkinfo[1] - self.aplist = networkinfo[2] else: self.iface = networkinfo self.essid = essid - self.aplist = aplist self.extended = None self.applyConfigRef = None @@ -315,8 +313,6 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.oktext = _("Press OK on your remote control to continue.") self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up") - self.createConfig() - self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": (self.keyCancel, _("exit network adapter configuration")), @@ -326,7 +322,6 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self["ColorActions"] = HelpableActionMap(self, "ColorActions", { "red": (self.keyCancel, _("exit network adapter configuration")), - "blue": (self.KeyBlue, _("open nameserver configuration")), }) self["actions"] = NumberActionMap(["SetupActions"], @@ -336,7 +331,7 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.list = [] ConfigListScreen.__init__(self, self.list,session = self.session) - self.createSetup() + self.initConfig() self.onLayoutFinish.append(self.layoutFinished) self.onClose.append(self.cleanup) @@ -358,13 +353,20 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self["Adapter"] = StaticText() self["introduction2"] = StaticText(_("Press OK to activate the settings.")) self["key_red"] = StaticText(_("Cancel")) - self["key_blue"] = StaticText(_("Edit DNS")) + self["key_blue"] = StaticText() self["VKeyIcon"] = Boolean(False) self["HelpWindow"] = Pixmap() self["HelpWindow"].hide() - def layoutFinished(self): + def updateInterfaces(self,callback = None): + iNetwork.config_ready = False + iNetwork.msgPlugins() + iNetwork.getInterfaces(callback) + + def updateInterfaceCB(self, ret=None): + self.createConfig() + self.createSetup() self["DNS1"].setText(self.primaryDNS.getText()) self["DNS2"].setText(self.secondaryDNS.getText()) if self.ipConfigEntry.getText() is not None: @@ -393,77 +395,48 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self["Gatewaytext"].setText("") self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface)) - def createConfig(self): + def layoutFinished(self): + self.updateInterfaces(self.updateInterfaceCB) + + def initConfig(self): self.InterfaceEntry = None self.dhcpEntry = None self.gatewayEntry = None + self.DNSConfigEntry = None self.hiddenSSID = None self.wlanSSID = None - self.encryptionEnabled = None - self.encryptionKey = None + self.encryption = None self.encryptionType = None - self.nwlist = None + self.encryptionKey = None self.encryptionlist = None self.weplist = None self.wsconfig = None self.default = None - self.hiddenNW = None + def createConfig(self): if iNetwork.isWirelessInterface(self.iface): - from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant, iWlan - iWlan.setInterface(self.iface) - self.w = iWlan.getInterface() + from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant self.ws = wpaSupplicant() self.encryptionlist = [] + self.encryptionlist.append(("Unencrypted", _("Unencrypted"))) self.encryptionlist.append(("WEP", _("WEP"))) self.encryptionlist.append(("WPA", _("WPA"))) + if not iNetwork.useWlCommand(self.iface): + self.encryptionlist.append(("WPA/WPA2", _("WPA or WPA2"))) self.encryptionlist.append(("WPA2", _("WPA2"))) - self.encryptionlist.append(("WPA/WPA2", _("WPA or WPA2"))) self.weplist = [] self.weplist.append("ASCII") self.weplist.append("HEX") - if self.aplist is not None: - self.nwlist = self.aplist - self.nwlist.sort(key = lambda x: x[0]) - else: - self.nwlist = [] - self.aps = None - try: - self.aps = iWlan.getNetworkList() - if self.aps is not None: - for ap in self.aps: - a = self.aps[ap] - if a['active']: - if a['essid'] != '': - self.nwlist.append((a['essid'],a['essid'])) - self.nwlist.sort(key = lambda x: x[0]) - iWlan.stopGetNetworkList() - except: - self.nwlist.append(("No Networks found",_("No Networks found"))) self.wsconfig = self.ws.loadConfig(self.iface) - if self.essid is not None: # ssid from wlan scan - self.default = self.essid - self.hiddenNW = self.wsconfig['hiddenessid'] - if self.essid == '': - self.hiddenNW = True - self.default = self.default = self.wsconfig['ssid'] - else: - self.hiddenNW = self.wsconfig['hiddenessid'] - self.default = self.wsconfig['ssid'] + if self.essid is None: + self.essid = self.wsconfig['ssid'] - if (self.default not in self.nwlist and self.default is not ''): - self.nwlist.append((self.default,self.default)) - - config.plugins.wlan.hiddenessid = NoSave(ConfigYesNo(default = self.hiddenNW)) - if config.plugins.wlan.hiddenessid.value is True: - config.plugins.wlan.essid = NoSave(ConfigText(default = self.default, visible_width = 50, fixed_size = False)) - else: - config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = self.default )) - config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = self.wsconfig['encryption'] )) - config.plugins.wlan.encryption.type = NoSave(ConfigSelection(self.encryptionlist, default = self.wsconfig['encryption_type'] )) - config.plugins.wlan.encryption.wepkeytype = NoSave(ConfigSelection(self.weplist, default = self.wsconfig['encryption_wepkeytype'] )) - config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = self.wsconfig['key'], visible_width = 50, fixed_size = False)) + config.plugins.wlan.hiddenessid = NoSave(ConfigYesNo(default = self.wsconfig['hiddenessid'])) + config.plugins.wlan.essid = NoSave(ConfigText(default = self.essid, visible_width = 50, fixed_size = False)) + config.plugins.wlan.encryption = NoSave(ConfigSelection(self.encryptionlist, default = self.wsconfig['encryption'] )) + config.plugins.wlan.wepkeytype = NoSave(ConfigSelection(self.weplist, default = self.wsconfig['wepkeytype'] )) + config.plugins.wlan.psk = NoSave(ConfigPassword(default = self.wsconfig['key'], visible_width = 50, fixed_size = False)) self.activateInterfaceEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "up") or False)) self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False)) @@ -475,6 +448,14 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): 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])) + if iNetwork.getAdapterAttribute(self.iface, "dns-nameservers"): + self.dnsconfigdefault=True + else: + self.dnsconfigdefault=False + self.hasDNSConfigEntry = NoSave(ConfigYesNo(default=self.dnsconfigdefault or False)) + manualNameservers = (iNetwork.getInterfacesNameserverList(self.iface) + [[0,0,0,0]] * 2)[0:2] + self.manualPrimaryDNS = NoSave(ConfigIP(default=manualNameservers[0])) + self.manualSecondaryDNS = NoSave(ConfigIP(default=manualNameservers[1])) nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2] self.primaryDNS = NoSave(ConfigIP(default=nameserver[0])) self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1])) @@ -495,6 +476,13 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): if self.hasGatewayConfigEntry.value: self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry)) + self.DNSConfigEntry = getConfigListEntry(_("Use Manual dns-nameserver"), self.hasDNSConfigEntry) + if self.dhcpConfigEntry.value: + self.list.append(self.DNSConfigEntry) + if self.hasDNSConfigEntry.value or not self.dhcpConfigEntry.value: + self.list.append(getConfigListEntry(_('Primary DNS'), self.manualPrimaryDNS)) + self.list.append(getConfigListEntry(_('Secondary DNS'), self.manualSecondaryDNS)) + self.extended = None self.configStrings = None for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP): @@ -505,36 +493,23 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): if p.__call__.has_key("configStrings"): self.configStrings = p.__call__["configStrings"] - self.hiddenSSID = getConfigListEntry(_("enter hidden network SSID"), config.plugins.wlan.hiddenessid) + self.hiddenSSID = getConfigListEntry(_("Hidden network"), config.plugins.wlan.hiddenessid) self.list.append(self.hiddenSSID) - - if config.plugins.wlan.hiddenessid.value is True: - config.plugins.wlan.essid = NoSave(ConfigText(default = self.default, visible_width = 50, fixed_size = False)) - self.wlanSSID = getConfigListEntry(_("Hidden network SSID"), config.plugins.wlan.essid) - else: - config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = self.default )) - self.wlanSSID = getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid) + self.wlanSSID = getConfigListEntry(_("Networkname (SSID)"), config.plugins.wlan.essid) self.list.append(self.wlanSSID) - self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled) - self.list.append(self.encryptionEnabled) - - if config.plugins.wlan.encryption.enabled.value: - self.encryptionType = getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type) - self.list.append(self.encryptionType) - if config.plugins.wlan.encryption.type.value == 'WEP': - self.list.append(getConfigListEntry(_("Encryption Keytype"), config.plugins.wlan.encryption.wepkeytype)) - self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk) - self.list.append(self.encryptionKey) - else: - self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk) - self.list.append(self.encryptionKey) + self.encryption = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption) + self.list.append(self.encryption) + self.encryptionType = getConfigListEntry(_("Encryption Keytype"), config.plugins.wlan.wepkeytype) + self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.psk) + + if config.plugins.wlan.encryption.value != "Unencrypted": + if config.plugins.wlan.encryption.value == 'WEP': + self.list.append(self.encryptionType) + self.list.append(self.encryptionKey) self["config"].list = self.list self["config"].l.setList(self.list) - def KeyBlue(self): - self.session.openWithCallback(self.NameserverSetupClosed, NameserverSetup) - def newConfig(self): if self["config"].getCurrent() == self.InterfaceEntry: self.createSetup() @@ -542,12 +517,10 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.createSetup() if self["config"].getCurrent() == self.gatewayEntry: self.createSetup() + if self["config"].getCurrent() == self.DNSConfigEntry: + self.createSetup() if iNetwork.isWirelessInterface(self.iface): - if self["config"].getCurrent() == self.hiddenSSID: - self.createSetup() - if self["config"].getCurrent() == self.encryptionEnabled: - self.createSetup() - if self["config"].getCurrent() == self.encryptionType: + if self["config"].getCurrent() == self.encryption: self.createSetup() def keyLeft(self): @@ -607,16 +580,28 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): 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: + + if self.hasDNSConfigEntry.value or not self.dhcpConfigEntry.value: + interfacesDnsLines = self.makeLineDnsNameservers([self.manualPrimaryDNS.value, self.manualSecondaryDNS.value]) + if interfacesDnsLines == "" : + interfacesDnsLines = False + iNetwork.setAdapterAttribute(self.iface, "dns-nameservers", interfacesDnsLines) + else: + iNetwork.setAdapterAttribute(self.iface, "dns-nameservers", False) + + if (self.extended is not None and self.configStrings is not None): iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface)) self.ws.writeConfig(self.iface) - + if self.activateInterfaceEntry.value is False: iNetwork.deactivateInterface(self.iface,self.deactivateInterfaceCB) iNetwork.writeNetworkConfig() self.applyConfigRef = self.session.openWithCallback(self.applyConfigfinishedCB, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False) else: - iNetwork.deactivateInterface(self.iface,self.activateInterfaceCB) + if self.oldInterfaceState is False: + iNetwork.activateInterface(self.iface,self.deactivateInterfaceCB) + else: + iNetwork.deactivateInterface(self.iface,self.activateInterfaceCB) iNetwork.writeNetworkConfig() self.applyConfigRef = self.session.openWithCallback(self.applyConfigfinishedCB, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False) else: @@ -687,13 +672,19 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): def hideInputHelp(self): current = self["config"].getCurrent() - if current == self.wlanSSID and config.plugins.wlan.hiddenessid.value: + if self.wlanSSID is not None and current == self.wlanSSID: if current[1].help_window.instance is not None: current[1].help_window.instance.hide() - elif current == self.encryptionKey and config.plugins.wlan.encryption.enabled.value: + elif self.encryptionKey is not None and current == self.encryptionKey and config.plugins.wlan.encryption.value is not "Unencrypted": if current[1].help_window.instance is not None: current[1].help_window.instance.hide() + def makeLineDnsNameservers(self, nameservers = []): + line = "" + entry = ' '.join([("%d.%d.%d.%d" % tuple(x)) for x in nameservers if x != [0, 0, 0, 0] ]) + if len(entry): + line+="\tdns-nameservers %s\n" % entry + return line class AdapterSetupConfiguration(Screen, HelpableScreen): def __init__(self, session,iface): @@ -714,7 +705,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): self["statuspic"].hide() self.oktext = _("Press OK on your remote control to continue.") - self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.") + self.reboottext = _("Your STB will restart after pressing OK on your remote control.") self.errortext = _("No working wireless network interface found.\n Please verify that you have attached a compatible WLAN device or enable your local network interface.") self.missingwlanplugintxt = _("The wireless LAN plugin is not installed!\nPlease install it.") @@ -764,7 +755,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): ifobj = Wireless(iface) # a Wireless NIC Object wlanresponse = ifobj.getAPaddr() except IOError, (error_no, error_str): - if error_no in (errno.EOPNOTSUPP, errno.EINVAL, errno.ENODEV, errno.EPERM): + if error_no in (errno.EOPNOTSUPP, errno.ENODEV, errno.EPERM): return False else: print "error: ",error_no,error_str @@ -843,11 +834,11 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): def loadDescription(self): if self["menulist"].getCurrent()[1] == 'edit': - self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext ) + self["description"].setText(_("Edit the network configuration of your STB.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'test': - self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext ) + self["description"].setText(_("Test the network configuration of your STB.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'dns': - self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext ) + self["description"].setText(_("Edit the Nameserver configuration of your STB.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'scanwlan': self["description"].setText(_("Scan your network for wireless access points and connect to them using your selected wireless device.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'wlanstatus': @@ -883,7 +874,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): def genMainMenu(self): menu = [] menu.append((_("Adapter settings"), "edit")) - menu.append((_("Nameserver settings"), "dns")) +# menu.append((_("Nameserver settings"), "dns")) menu.append((_("Network test"), "test")) menu.append((_("Restart network"), "lanrestart")) @@ -939,7 +930,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): def WlanScanClosed(self,*ret): if ret[0] is not None: - self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1]) + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0]) else: from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus iStatus.stopWlanConsole() @@ -998,7 +989,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): if data is not None: if data is True: if status is not None: - if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False: + if status[self.iface]["essid"] == "off" or status[self.iface]["accesspoint"] == "Not-Associated" or status[self.iface]["accesspoint"] == False: self.LinkState = False self["statuspic"].setPixmapNum(1) self["statuspic"].show() @@ -1007,20 +998,22 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): iNetwork.checkNetworkState(self.checkNetworkCB) def checkNetworkCB(self,data): - if iNetwork.getAdapterAttribute(self.iface, "up") is True: - if self.LinkState is True: - if data <= 2: - self["statuspic"].setPixmapNum(0) + try: + if iNetwork.getAdapterAttribute(self.iface, "up") is True: + if self.LinkState is True: + if data <= 2: + self["statuspic"].setPixmapNum(0) + else: + self["statuspic"].setPixmapNum(1) + self["statuspic"].show() else: self["statuspic"].setPixmapNum(1) - self["statuspic"].show() + self["statuspic"].show() else: self["statuspic"].setPixmapNum(1) self["statuspic"].show() - else: - self["statuspic"].setPixmapNum(1) - self["statuspic"].show() - + except: + pass class NetworkAdapterTest(Screen): def __init__(self, session,iface): @@ -1420,7 +1413,7 @@ class NetworkAdapterTest(Screen): if data is not None: if data is True: if status is not None: - if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False: + if status[self.iface]["essid"] == "off" or status[self.iface]["accesspoint"] == "Not-Associated" or status[self.iface]["accesspoint"] == False: self["Network"].setForegroundColorNum(1) self["Network"].setText(_("disconnected")) self["NetworkInfo_Check"].setPixmapNum(1)