def IPaddrFinished(self, result, retval, extra_args):
(iface, callback ) = extra_args
- data = { 'up': False, 'dhcp': False, 'preup' : False, 'predown' : False }
+ data = { 'up': False, 'dhcp': False, 'preup' : False, 'predown' : False, 'dns-nameservers' : False }
globalIPpattern = re_compile("scope global")
ipRegexp = '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
netRegexp = '[0-9]{1,2}'
fp.write(iface["preup"])
if iface["predown"] is not False and not iface.has_key("configStrings"):
fp.write(iface["predown"])
+ if iface["dns-nameservers"] is not False and len(iface["dns-nameservers"])>0:
+ fp.write("%s" % (iface["dns-nameservers"]))
fp.write("\n")
fp.close()
self.configuredNetworkAdapters = self.configuredInterfaces
- self.writeNameserverConfig()
+# self.writeNameserverConfig()
def writeNameserverConfig(self):
fp = file('/etc/resolv.conf', 'w')
if (split[0] in ("pre-down","post-down")):
if self.ifaces[currif].has_key("predown"):
self.ifaces[currif]["predown"] = i
+ if (split[0] == "dns-nameservers"):
+ if self.ifaces[currif].has_key("dns-nameservers"):
+ self.ifaces[currif]["dns-nameservers"] = i
for ifacename, iface in ifaces.items():
if self.ifaces.has_key(ifacename):
if self.config_ready is not None:
for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKCONFIG_READ):
p(reason=self.config_ready)
-
+
+ def getInterfacesNameserverList(self, iface):
+ result = []
+ nameservers = self.getAdapterAttribute(iface, "dns-nameservers")
+ if nameservers:
+ ipRegexp = '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
+ ipPattern = re_compile(ipRegexp)
+ for x in nameservers.split()[1:]:
+ ip = self.regExpMatch(ipPattern, x)
+ if ip:
+ result.append( [ int(n) for n in ip.split('.') ] )
+ return result
+
iNetwork = Network()
def InitNetwork():
menu = []
menu.append((_("Adapter settings"), "setting"))
menu.append((_("Scan Wireless AP"), "scanap"))
- menu.append((_("Nameserver settings"), "dns"))
+# menu.append((_("Nameserver settings"), "dns"))
if iNetwork.getAdapterAttribute(self.iface, "up"):
menu.append((_("Show WLAN Status"), "status"))
menu.append((_("Network test"), "test"))
<widget source="key_red" render="Label" position="10,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" foregroundColor="#ffffff" transparent="1" />
<widget source="key_green" render="Label" position="360,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" foregroundColor="#ffffff" transparent="1" />
- <widget name="config" position="10,10" backgroundColor="#371e1c1a" transparent="1" size="480,210" scrollbarMode="showOnDemand" />
- <ePixmap pixmap="skin_default/div-h.png" position="0,225" zPosition="1" size="550,2" />
- <eLabel text="IP Address : " position="100,250" size="190,21" font="Regular;19" />
- <widget source="ipaddress" render="Label" position="300,250" zPosition="1" size="150,26" font="Regular;20" halign="center" valign="center" />
- <eLabel text="NetMask : " position="100,275" size="190,21" font="Regular;19" />
- <widget source="netmask" render="Label" position="300,275" zPosition="1" size="150,26" font="Regular;20" halign="center" valign="center" />
- <eLabel text="Gateway : " position="100,300" size="190,21" font="Regular;19" />
- <widget source="gateway" render="Label" position="300,300" zPosition="1" size="150,26" font="Regular;20" halign="center" valign="center" />
+ <widget name="config" position="10,10" backgroundColor="#371e1c1a" transparent="1" size="480,195" scrollbarMode="showOnDemand" />
+ <ePixmap pixmap="skin_default/div-h.png" position="0,210" zPosition="1" size="560,2" />
+ <widget source="ipaddresstext" render="Label" position="100,220" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="ipaddress" render="Label" position="300,220" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget source="netmasktext" render="Label" position="100,245" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="netmask" render="Label" position="300,245" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget source="gatewaytext" render="Label" position="100,270" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="gateway" render="Label" position="300,270" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget source="DNS1text" render="Label" position="100,295" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="DNS1" render="Label" position="300,295" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget source="DNS2text" render="Label" position="100,320" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="DNS2" render="Label" position="300,320" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
<widget name="VKeyIcon" pixmap="skin_default/buttons/key_text.png" position="460,230" zPosition="10" size="35,25" transparent="1" alphatest="on" />
<widget name="HelpWindow" pixmap="skin_default/buttons/key_text.png" position="383,420" zPosition="1" size="1,1" transparent="1" alphatest="on" />
</screen>
self.session = session
self["key_red"] = StaticText(_("Close"))
self["key_green"] = StaticText(_("Ok"))
+ self["ipaddresstext"] = StaticText(_("IP Address"))
self["ipaddress"] = StaticText(_("[ N/A ]"))
- self["netmask"] = StaticText(_("[ N/A ]"))
+ self["netmasktext"] = StaticText(_("NetMask"))
+ self["netmask"] = StaticText(_("[ N/A ]"))
+ self["gatewaytext"] = StaticText(_("Gateway"))
self["gateway"] = StaticText(_("[ N/A ]"))
+ self["DNS1text"] = StaticText(_("Primary DNS"))
+ self["DNS1"] = StaticText(_("[ N/A ]"))
+ self["DNS2text"] = StaticText(_("Secondary DNS"))
+ self["DNS2"] = StaticText(_("[ N/A ]"))
self["OkCancelActions"] = ActionMap(["ShortcutActions", "SetupActions" ],
{
"ok": self.saveWlanConfig,
default_tmp = "off"
wlanconfig.usedhcp = ConfigSelection(default=default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
+ if iNetwork.getAdapterAttribute(self.iface, "dns-nameservers"):
+ self.dnsconfigdefault="on"
+ else:
+ self.dnsconfigdefault="off"
+ wlanconfig.hasdnsconfigentry = ConfigSelection(default=self.dnsconfigdefault, choices = [("off", _("no")), ("on", _("yes"))])
+
wlanconfig.ip = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0]
wlanconfig.netmask = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0])
self["netmask"].setText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "netmask"))))
self["gateway"].setText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "gateway"))))
+ 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["DNS1"].setText(self.primaryDNS.getText())
+ self["DNS2"].setText(self.secondaryDNS.getText())
+
if self.encryption_key is not None:
default_tmp = "on"
else:
self.usegatewayEntry = getConfigListEntry(_("Use Gateway"), wlanconfig.usegateway)
self.gatewayEntry = getConfigListEntry(_("Gateway"), wlanconfig.gateway)
+ 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]))
+ self.DNSConfigEntry = getConfigListEntry(_("Use Manual dns-nameserver"), wlanconfig.hasdnsconfigentry)
+ self.primaryDNSConfigEntry = getConfigListEntry(_('Primary DNS'), self.manualPrimaryDNS)
+ self.secondaryDNSConfigEntry = getConfigListEntry(_('Secondary DNS'), self.manualSecondaryDNS)
+
self.configList.append( self.usedeviceEntry )
if wlanconfig.usedevice.value is "on":
self.configList.append( self.usedhcpEntry )
self.configList.append(self.usegatewayEntry)
if wlanconfig.usegateway.value is "on":
self.configList.append(self.gatewayEntry)
+ if wlanconfig.usedhcp.value is "on":
+ self.configList.append(self.DNSConfigEntry)
+ if wlanconfig.hasdnsconfigentry.value is "on" or wlanconfig.usedhcp.value is "off":
+ self.configList.append(self.primaryDNSConfigEntry)
+ self.configList.append(self.secondaryDNSConfigEntry)
+
self.configList.append( self.essidEntry )
if wlanconfig.essid.value == 'Input hidden ESSID':
self.configList.append( self.hiddenessidEntry )
def newConfig(self):
if self["config"].getCurrent() == self.usedeviceEntry or self["config"].getCurrent() == self.encryptEntry \
or self["config"].getCurrent() == self.usedhcpEntry or self["config"].getCurrent() == self.usegatewayEntry \
- or self["config"].getCurrent() == self.essidEntry or self["config"].getCurrent() == self.methodEntry:
+ or self["config"].getCurrent() == self.essidEntry or self["config"].getCurrent() == self.methodEntry \
+ or self["config"].getCurrent() == self.DNSConfigEntry:
self.createConfig()
def saveWlanConfig(self):
print "content = \n"+contents
wpafd.write(contents)
wpafd.close()
- self.writeNetConfig(0)
+ self.writeNetConfig()
else :
self.session.open(MessageBox, _("wpa_supplicant.conf open error."), type = MessageBox.TYPE_ERROR, timeout = 10)
- self.writeNetConfig(-1)
+ return
else:
- self.writeNetConfig(-2)
-
- def writeNetConfig(self,ret = -1):
- if ret == -1:
- self.session.open(MessageBox, _("wpa_supplicant.conf open error."), type = MessageBox.TYPE_ERROR, timeout = 10)
- return
- elif ret == -2:
self.session.open(MessageBox, _("Can NOT generate passphrase"), type = MessageBox.TYPE_ERROR, timeout = 10)
return
+ def writeNetConfig(self):
if wlanconfig.usedevice.value=="on":
iNetwork.setAdapterAttribute(self.iface, "up", True)
if wlanconfig.usedhcp.value =="on":
iNetwork.setAdapterAttribute(self.iface, "netmask", wlanconfig.netmask.value)
if wlanconfig.usegateway.value == "on":
iNetwork.setAdapterAttribute(self.iface, "gateway", wlanconfig.gateway.value)
+ if wlanconfig.hasdnsconfigentry.value == "on" or wlanconfig.usedhcp.value == "off":
+ 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)
else:
iNetwork.setAdapterAttribute(self.iface, "up", False)
iNetwork.deactivateInterface(self.iface)
contents = "\tpre-up wpa_supplicant -i"+self.iface+" -c/etc/wpa_supplicant.conf -B -D"+iNetwork.detectWlanModule(self.iface)+"\n"
- contents += "\tpost-down wpa_cli terminate\n\n"
+ contents += "\tpost-down wpa_cli terminate\n"
iNetwork.setAdapterAttribute(self.iface, "configStrings", contents)
iNetwork.writeNetworkConfig()
iNetwork.restartNetwork(self.updateCurrentInterfaces)
self.configurationmsg = None
self.configurationmsg = self.session.openWithCallback(self.configFinished, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False)
+ 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
def updateCurrentInterfaces(self,ret):
if ret is True:
self["ColorActions"] = HelpableActionMap(self, "ColorActions",
{
"red": (self.keyCancel, _("exit network adapter configuration")),
- "blue": (self.KeyBlue, _("open nameserver configuration")),
})
self["actions"] = NumberActionMap(["SetupActions"],
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.InterfaceEntry = None
self.dhcpEntry = None
self.gatewayEntry = None
+ self.DNSConfigEntry = None
self.hiddenSSID = None
self.wlanSSID = None
self.encryption = None
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]))
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):
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()
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.encryption:
self.createSetup()
else:
iNetwork.removeAdapterAttribute(self.iface, "gateway")
+ 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 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):
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"))