1 from Screen import Screen
2 from Screens.MessageBox import MessageBox
3 from Screens.InputBox import InputBox
4 from Screens.Standby import *
5 from Screens.VirtualKeyBoard import VirtualKeyBoard
6 from Screens.HelpMenu import HelpableScreen
7 from Components.Network import iNetwork
8 from Components.Sources.StaticText import StaticText
9 from Components.Sources.Boolean import Boolean
10 from Components.Label import Label,MultiColorLabel
11 from Components.Pixmap import Pixmap,MultiPixmap
12 from Components.MenuList import MenuList
13 from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigText, ConfigPassword, ConfigSelection, getConfigListEntry, ConfigNothing
14 from Components.ConfigList import ConfigListScreen
15 from Components.PluginComponent import plugins
16 from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
17 from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
18 from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_SKIN
19 from Tools.LoadPixmap import LoadPixmap
20 from Plugins.Plugin import PluginDescriptor
21 from enigma import eTimer, ePoint, eSize, RT_HALIGN_LEFT, eListboxPythonMultiContent, gFont
22 from os import path as os_path, system as os_system, unlink
23 from re import compile as re_compile, search as re_search
26 class InterfaceList(MenuList):
27 def __init__(self, list, enableWrapAround=False):
28 MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
29 self.l.setFont(0, gFont("Regular", 20))
30 self.l.setItemHeight(30)
32 def InterfaceEntryComponent(index,name,default,active ):
35 MultiContentEntryText(pos=(80, 5), size=(430, 25), font=0, text=name)
37 num_configured_if = len(iNetwork.getConfiguredAdapters())
38 if num_configured_if >= 2:
40 png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue.png"))
42 png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue_off.png"))
43 res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 5), size=(25, 25), png = png))
45 png2 = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_on.png"))
47 png2 = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_error.png"))
48 res.append(MultiContentEntryPixmapAlphaTest(pos=(40, 1), size=(25, 25), png = png2))
52 class NetworkAdapterSelection(Screen,HelpableScreen):
53 def __init__(self, session):
54 Screen.__init__(self, session)
55 HelpableScreen.__init__(self)
57 self.wlan_errortext = _("No working wireless network adapter found.\nPlease verify that you have attached a compatible WLAN device and your network is configured correctly.")
58 self.lan_errortext = _("No working local network adapter found.\nPlease verify that you have attached a network cable and your network is configured correctly.")
59 self.oktext = _("Press OK on your remote control to continue.")
60 self.edittext = _("Press OK to edit the settings.")
61 self.defaulttext = _("Press yellow to set this interface as default interface.")
62 self.restartLanRef = None
64 self["key_red"] = StaticText(_("Close"))
65 self["key_green"] = StaticText(_("Select"))
66 self["key_yellow"] = StaticText("")
67 self["introduction"] = StaticText(self.edittext)
69 self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
72 self.onFirstExecBegin.append(self.NetworkFallback)
74 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
76 "cancel": (self.close, _("exit network interface list")),
77 "ok": (self.okbuttonClick, _("select interface")),
80 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
82 "red": (self.close, _("exit network interface list")),
83 "green": (self.okbuttonClick, _("select interface")),
86 self["DefaultInterfaceAction"] = HelpableActionMap(self, "ColorActions",
88 "yellow": (self.setDefaultInterface, [_("Set interface as default Interface"),_("* Only available if more than one interface is active.")] ),
92 self["list"] = InterfaceList(self.list)
95 if len(self.adapters) == 1:
96 self.onFirstExecBegin.append(self.okbuttonClick)
97 self.onClose.append(self.cleanup)
100 def updateList(self):
103 num_configured_if = len(iNetwork.getConfiguredAdapters())
104 if num_configured_if >= 2:
105 self["key_yellow"].setText(_("Default"))
106 self["introduction"].setText(self.defaulttext)
107 self["DefaultInterfaceAction"].setEnabled(True)
109 self["key_yellow"].setText("")
110 self["introduction"].setText(self.edittext)
111 self["DefaultInterfaceAction"].setEnabled(False)
113 if num_configured_if < 2 and os_path.exists("/etc/default_gw"):
114 unlink("/etc/default_gw")
116 if os_path.exists("/etc/default_gw"):
117 fp = file('/etc/default_gw', 'r')
122 if len(self.adapters) == 0: # no interface available => display only eth0
123 self.list.append(InterfaceEntryComponent("eth0",iNetwork.getFriendlyAdapterName('eth0'),True,True ))
125 for x in self.adapters:
126 if x[1] == default_gw:
130 if iNetwork.getAdapterAttribute(x[1], 'up') is True:
134 self.list.append(InterfaceEntryComponent(index = x[1],name = _(x[0]),default=default_int,active=active_int ))
136 self["list"].l.setList(self.list)
138 def setDefaultInterface(self):
139 selection = self["list"].getCurrent()
140 num_if = len(self.list)
141 old_default_gw = None
142 num_configured_if = len(iNetwork.getConfiguredAdapters())
143 if os_path.exists("/etc/default_gw"):
144 fp = open('/etc/default_gw', 'r')
145 old_default_gw = fp.read()
147 if num_configured_if > 1 and (not old_default_gw or old_default_gw != selection[0]):
148 fp = open('/etc/default_gw', 'w+')
149 fp.write(selection[0])
152 elif old_default_gw and num_configured_if < 2:
153 unlink("/etc/default_gw")
156 def okbuttonClick(self):
157 selection = self["list"].getCurrent()
158 if selection is not None:
159 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[0])
161 def AdapterSetupClosed(self, *ret):
162 if len(self.adapters) == 1:
167 def NetworkFallback(self):
168 if iNetwork.configuredNetworkAdapters.has_key('wlan0') is True:
169 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
170 if iNetwork.configuredNetworkAdapters.has_key('ath0') is True:
171 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
173 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.lan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
175 def ErrorMessageClosed(self, *ret):
176 if iNetwork.configuredNetworkAdapters.has_key('wlan0') is True:
177 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'wlan0')
178 elif iNetwork.configuredNetworkAdapters.has_key('ath0') is True:
179 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'ath0')
181 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'eth0')
184 iNetwork.stopLinkStateConsole()
185 iNetwork.stopRestartConsole()
186 iNetwork.stopGetInterfacesConsole()
188 def restartLan(self):
189 iNetwork.restartNetwork(self.restartLanDataAvail)
190 self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while we configure your network..."), type = MessageBox.TYPE_INFO, enable_input = False)
192 def restartLanDataAvail(self, data):
194 iNetwork.getInterfaces(self.getInterfacesDataAvail)
196 def getInterfacesDataAvail(self, data):
198 self.restartLanRef.close(True)
200 def restartfinishedCB(self,data):
203 self.session.open(MessageBox, _("Finished configuring your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False)
207 class NameserverSetup(Screen, ConfigListScreen, HelpableScreen):
208 def __init__(self, session):
209 Screen.__init__(self, session)
210 HelpableScreen.__init__(self)
211 self.backupNameserverList = iNetwork.getNameserverList()[:]
212 print "backup-list:", self.backupNameserverList
214 self["key_red"] = StaticText(_("Cancel"))
215 self["key_green"] = StaticText(_("Add"))
216 self["key_yellow"] = StaticText(_("Delete"))
218 self["introduction"] = StaticText(_("Press OK to activate the settings."))
221 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
223 "cancel": (self.cancel, _("exit nameserver configuration")),
224 "ok": (self.ok, _("activate current configuration")),
227 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
229 "red": (self.cancel, _("exit nameserver configuration")),
230 "green": (self.add, _("add a nameserver entry")),
231 "yellow": (self.remove, _("remove a nameserver entry")),
234 self["actions"] = NumberActionMap(["SetupActions"],
240 ConfigListScreen.__init__(self, self.list)
243 def createConfig(self):
244 self.nameservers = iNetwork.getNameserverList()
245 self.nameserverEntries = [ NoSave(ConfigIP(default=nameserver)) for nameserver in self.nameservers]
247 def createSetup(self):
251 for x in self.nameserverEntries:
252 self.list.append(getConfigListEntry(_("Nameserver %d") % (i), x))
255 self["config"].list = self.list
256 self["config"].l.setList(self.list)
259 iNetwork.clearNameservers()
260 for nameserver in self.nameserverEntries:
261 iNetwork.addNameserver(nameserver.value)
262 iNetwork.writeNameserverConfig()
269 iNetwork.clearNameservers()
270 print "backup-list:", self.backupNameserverList
271 for nameserver in self.backupNameserverList:
272 iNetwork.addNameserver(nameserver)
276 iNetwork.addNameserver([0,0,0,0])
281 print "currentIndex:", self["config"].getCurrentIndex()
283 index = self["config"].getCurrentIndex()
284 if index < len(self.nameservers):
285 iNetwork.removeNameserver(self.nameservers[index])
290 class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
291 def __init__(self, session, networkinfo, essid=None, aplist=None):
292 Screen.__init__(self, session)
293 HelpableScreen.__init__(self)
294 self.session = session
295 if isinstance(networkinfo, (list, tuple)):
296 self.iface = networkinfo[0]
297 self.essid = networkinfo[1]
298 self.aplist = networkinfo[2]
300 self.iface = networkinfo
304 self.applyConfigRef = None
305 self.finished_cb = None
306 self.oktext = _("Press OK on your remote control to continue.")
307 self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
311 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
313 "cancel": (self.cancel, _("exit network adapter setup menu")),
314 "ok": (self.ok, _("select menu entry")),
317 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
319 "red": (self.cancel, _("exit network adapter configuration")),
320 "blue": (self.KeyBlue, _("open nameserver configuration")),
323 self["actions"] = NumberActionMap(["SetupActions"],
329 ConfigListScreen.__init__(self, self.list,session = self.session)
331 self.onLayoutFinish.append(self.layoutFinished)
332 self.onClose.append(self.cleanup)
334 self["DNS1text"] = StaticText(_("Primary DNS"))
335 self["DNS2text"] = StaticText(_("Secondary DNS"))
336 self["DNS1"] = StaticText()
337 self["DNS2"] = StaticText()
338 self["introduction"] = StaticText(_("Current settings:"))
340 self["IPtext"] = StaticText(_("IP Address"))
341 self["Netmasktext"] = StaticText(_("Netmask"))
342 self["Gatewaytext"] = StaticText(_("Gateway"))
344 self["IP"] = StaticText()
345 self["Mask"] = StaticText()
346 self["Gateway"] = StaticText()
348 self["Adaptertext"] = StaticText(_("Network:"))
349 self["Adapter"] = StaticText()
350 self["introduction2"] = StaticText(_("Press OK to activate the settings."))
351 self["key_red"] = StaticText(_("Cancel"))
352 self["key_blue"] = StaticText(_("Edit DNS"))
354 self["VKeyIcon"] = Boolean(False)
355 self["HelpWindow"] = Pixmap()
356 self["HelpWindow"].hide()
358 def layoutFinished(self):
359 self["DNS1"].setText(self.primaryDNS.getText())
360 self["DNS2"].setText(self.secondaryDNS.getText())
361 if self.ipConfigEntry.getText() is not None:
362 if self.ipConfigEntry.getText() == "0.0.0.0":
363 self["IP"].setText(_("N/A"))
365 self["IP"].setText(self.ipConfigEntry.getText())
367 self["IP"].setText(_("N/A"))
368 if self.netmaskConfigEntry.getText() is not None:
369 if self.netmaskConfigEntry.getText() == "0.0.0.0":
370 self["Mask"].setText(_("N/A"))
372 self["Mask"].setText(self.netmaskConfigEntry.getText())
374 self["IP"].setText(_("N/A"))
375 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
376 if self.gatewayConfigEntry.getText() == "0.0.0.0":
377 self["Gatewaytext"].setText(_("Gateway"))
378 self["Gateway"].setText(_("N/A"))
380 self["Gatewaytext"].setText(_("Gateway"))
381 self["Gateway"].setText(self.gatewayConfigEntry.getText())
383 self["Gateway"].setText("")
384 self["Gatewaytext"].setText("")
385 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
387 def createConfig(self):
388 self.InterfaceEntry = None
389 self.dhcpEntry = None
390 self.gatewayEntry = None
391 self.hiddenSSID = None
393 self.encryptionEnabled = None
394 self.encryptionKey = None
395 self.encryptionType = None
397 self.encryptionlist = None
402 if self.iface == "wlan0" or self.iface == "ath0" :
403 from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan
404 self.w = Wlan(self.iface)
405 self.ws = wpaSupplicant()
406 self.encryptionlist = []
407 self.encryptionlist.append(("WEP", _("WEP")))
408 self.encryptionlist.append(("WPA", _("WPA")))
409 self.encryptionlist.append(("WPA2", _("WPA2")))
410 self.encryptionlist.append(("WPA/WPA2", _("WPA or WPA2")))
412 self.weplist.append("ASCII")
413 self.weplist.append("HEX")
414 if self.aplist is not None:
415 self.nwlist = self.aplist
416 self.nwlist.sort(key = lambda x: x[0])
421 self.aps = self.w.getNetworkList()
422 if self.aps is not None:
423 print "[NetworkSetup.py] got Accespoints!"
428 self.nwlist.append((a['essid'],a['essid']))
429 self.nwlist.sort(key = lambda x: x[0])
431 self.nwlist.append(("No Networks found",_("No Networks found")))
433 self.wsconfig = self.ws.loadConfig()
434 if self.essid is not None: # ssid from wlan scan
435 self.default = self.essid
437 self.default = self.wsconfig['ssid']
439 if "hidden..." not in self.nwlist:
440 self.nwlist.append(("hidden...",_("hidden network")))
441 if self.default not in self.nwlist:
442 self.nwlist.append((self.default,self.default))
443 config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = self.default ))
444 config.plugins.wlan.hiddenessid = NoSave(ConfigText(default = self.wsconfig['hiddenessid'], visible_width = 50, fixed_size = False))
446 config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = self.wsconfig['encryption'] ))
447 config.plugins.wlan.encryption.type = NoSave(ConfigSelection(self.encryptionlist, default = self.wsconfig['encryption_type'] ))
448 config.plugins.wlan.encryption.wepkeytype = NoSave(ConfigSelection(self.weplist, default = self.wsconfig['encryption_wepkeytype'] ))
449 config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = self.wsconfig['key'], visible_width = 50, fixed_size = False))
451 self.activateInterfaceEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "up") or False))
452 self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
453 self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
454 self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
455 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
456 self.dhcpdefault=True
458 self.dhcpdefault=False
459 self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=self.dhcpdefault or False))
460 self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
461 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
462 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
463 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
465 def createSetup(self):
467 self.InterfaceEntry = getConfigListEntry(_("Use Interface"), self.activateInterfaceEntry)
469 self.list.append(self.InterfaceEntry)
470 if self.activateInterfaceEntry.value:
471 self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
472 self.list.append(self.dhcpEntry)
473 if not self.dhcpConfigEntry.value:
474 self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
475 self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
476 self.gatewayEntry = getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry)
477 self.list.append(self.gatewayEntry)
478 if self.hasGatewayConfigEntry.value:
479 self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
482 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
483 callFnc = p.__call__["ifaceSupported"](self.iface)
484 if callFnc is not None:
485 if p.__call__.has_key("WlanPluginEntry"): # internally used only for WLAN Plugin
486 self.extended = callFnc
487 if p.__call__.has_key("configStrings"):
488 self.configStrings = p.__call__["configStrings"]
490 self.configStrings = None
491 if config.plugins.wlan.essid.value == 'hidden...':
492 self.wlanSSID = getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid)
493 self.list.append(self.wlanSSID)
494 self.hiddenSSID = getConfigListEntry(_("Hidden network SSID"), config.plugins.wlan.hiddenessid)
495 self.list.append(self.hiddenSSID)
497 self.wlanSSID = getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid)
498 self.list.append(self.wlanSSID)
499 self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
500 self.list.append(self.encryptionEnabled)
502 if config.plugins.wlan.encryption.enabled.value:
503 self.encryptionType = getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type)
504 self.list.append(self.encryptionType)
505 if config.plugins.wlan.encryption.type.value == 'WEP':
506 self.list.append(getConfigListEntry(_("Encryption Keytype"), config.plugins.wlan.encryption.wepkeytype))
507 self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk)
508 self.list.append(self.encryptionKey)
510 self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk)
511 self.list.append(self.encryptionKey)
513 self["config"].list = self.list
514 self["config"].l.setList(self.list)
517 self.session.openWithCallback(self.NameserverSetupClosed, NameserverSetup)
520 if self["config"].getCurrent() == self.InterfaceEntry:
522 if self["config"].getCurrent() == self.dhcpEntry:
524 if self["config"].getCurrent() == self.gatewayEntry:
526 if self.iface == "wlan0" or self.iface == "ath0" :
527 if self["config"].getCurrent() == self.wlanSSID:
529 if self["config"].getCurrent() == self.encryptionEnabled:
531 if self["config"].getCurrent() == self.encryptionType:
535 ConfigListScreen.keyLeft(self)
539 ConfigListScreen.keyRight(self)
543 current = self["config"].getCurrent()
544 if current == self.hiddenSSID and config.plugins.wlan.essid.value == 'hidden...':
545 if current[1].help_window.instance is not None:
546 current[1].help_window.instance.hide()
547 elif current == self.encryptionKey and config.plugins.wlan.encryption.enabled.value:
548 if current[1].help_window.instance is not None:
549 current[1].help_window.instance.hide()
550 self.session.openWithCallback(self.applyConfig, MessageBox, (_("Are you sure you want to activate this network configuration?\n\n") + self.oktext ) )
552 def applyConfig(self, ret = False):
554 iNetwork.setAdapterAttribute(self.iface, "up", self.activateInterfaceEntry.value)
555 iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
556 iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
557 iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
558 if self.hasGatewayConfigEntry.value:
559 iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
561 iNetwork.removeAdapterAttribute(self.iface, "gateway")
562 if self.extended is not None and self.configStrings is not None:
563 iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
564 self.ws.writeConfig()
565 if self.activateInterfaceEntry.value is False:
566 iNetwork.deactivateInterface(self.iface)
567 iNetwork.writeNetworkConfig()
568 iNetwork.restartNetwork(self.applyConfigDataAvail)
569 self.applyConfigRef = self.session.openWithCallback(self.applyConfigfinishedCB, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False)
573 def applyConfigDataAvail(self, data):
575 iNetwork.getInterfaces(self.getInterfacesDataAvail)
577 def getInterfacesDataAvail(self, data):
579 self.applyConfigRef.close(True)
581 def applyConfigfinishedCB(self,data):
583 num_configured_if = len(iNetwork.getConfiguredAdapters())
584 if num_configured_if >= 2:
585 self.session.openWithCallback(self.secondIfaceFoundCB, MessageBox, _("Your network configuration has been activated.\nA second configured interface has been found.\n\nDo you want to disable the second network interface?"), default = True)
588 self.session.openWithCallback(lambda x : self.finished_cb(), MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10)
590 self.session.openWithCallback(self.ConfigfinishedCB, MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10)
592 def secondIfaceFoundCB(self,data):
596 configuredInterfaces = iNetwork.getConfiguredAdapters()
597 for interface in configuredInterfaces:
598 if interface == self.iface:
600 iNetwork.setAdapterAttribute(interface, "up", False)
601 iNetwork.deactivateInterface(interface)
602 self.applyConfig(True)
604 def ConfigfinishedCB(self,data):
610 if self.oldInterfaceState is False:
611 iNetwork.deactivateInterface(self.iface,self.cancelCB)
615 def cancelCB(self,data):
620 def runAsync(self, finished_cb):
621 self.finished_cb = finished_cb
624 def NameserverSetupClosed(self, *ret):
625 iNetwork.loadNameserverConfig()
626 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
627 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
628 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
630 self.layoutFinished()
633 iNetwork.stopLinkStateConsole()
636 class AdapterSetupConfiguration(Screen, HelpableScreen):
637 def __init__(self, session,iface):
638 Screen.__init__(self, session)
639 HelpableScreen.__init__(self)
640 self.session = session
642 self.restartLanRef = None
643 self.mainmenu = self.genMainMenu()
644 self["menulist"] = MenuList(self.mainmenu)
645 self["key_red"] = StaticText(_("Close"))
646 self["description"] = StaticText()
647 self["IFtext"] = StaticText()
648 self["IF"] = StaticText()
649 self["Statustext"] = StaticText()
650 self["statuspic"] = MultiPixmap()
651 self["statuspic"].hide()
653 self.oktext = _("Press OK on your remote control to continue.")
654 self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
655 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.")
657 self["WizardActions"] = HelpableActionMap(self, "WizardActions",
659 "up": (self.up, _("move up to previous entry")),
660 "down": (self.down, _("move down to next entry")),
661 "left": (self.left, _("move up to first entry")),
662 "right": (self.right, _("move down to last entry")),
665 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
667 "cancel": (self.close, _("exit networkadapter setup menu")),
668 "ok": (self.ok, _("select menu entry")),
671 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
673 "red": (self.close, _("exit networkadapter setup menu")),
676 self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
687 self.updateStatusbar()
688 self.onLayoutFinish.append(self.layoutFinished)
689 self.onClose.append(self.cleanup)
692 if self["menulist"].getCurrent()[1] == 'edit':
693 if self.iface == 'wlan0' or self.iface == 'ath0':
695 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
696 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
698 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
700 ifobj = Wireless(self.iface) # a Wireless NIC Object
701 self.wlanresponse = ifobj.getStatistics()
702 if self.wlanresponse[0] != 19: # Wlan Interface found.
703 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
705 # Display Wlan not available Message
706 self.showErrorMessage()
708 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
709 if self["menulist"].getCurrent()[1] == 'test':
710 self.session.open(NetworkAdapterTest,self.iface)
711 if self["menulist"].getCurrent()[1] == 'dns':
712 self.session.open(NameserverSetup)
713 if self["menulist"].getCurrent()[1] == 'scanwlan':
715 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
716 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
718 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
720 ifobj = Wireless(self.iface) # a Wireless NIC Object
721 self.wlanresponse = ifobj.getStatistics()
722 if self.wlanresponse[0] != 19:
723 self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
725 # Display Wlan not available Message
726 self.showErrorMessage()
727 if self["menulist"].getCurrent()[1] == 'wlanstatus':
729 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
730 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
732 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
734 ifobj = Wireless(self.iface) # a Wireless NIC Object
735 self.wlanresponse = ifobj.getStatistics()
736 if self.wlanresponse[0] != 19:
737 self.session.openWithCallback(self.WlanStatusClosed, WlanStatus,self.iface)
739 # Display Wlan not available Message
740 self.showErrorMessage()
741 if self["menulist"].getCurrent()[1] == 'lanrestart':
742 self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
743 if self["menulist"].getCurrent()[1] == 'openwizard':
744 from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard
745 self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard)
746 if self["menulist"].getCurrent()[1][0] == 'extendedSetup':
747 self.extended = self["menulist"].getCurrent()[1][2]
748 self.extended(self.session, self.iface)
751 self["menulist"].up()
752 self.loadDescription()
755 self["menulist"].down()
756 self.loadDescription()
759 self["menulist"].pageUp()
760 self.loadDescription()
763 self["menulist"].pageDown()
764 self.loadDescription()
766 def layoutFinished(self):
768 self["menulist"].moveToIndex(idx)
769 self.loadDescription()
771 def loadDescription(self):
772 print self["menulist"].getCurrent()[1]
773 if self["menulist"].getCurrent()[1] == 'edit':
774 self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
775 if self["menulist"].getCurrent()[1] == 'test':
776 self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
777 if self["menulist"].getCurrent()[1] == 'dns':
778 self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
779 if self["menulist"].getCurrent()[1] == 'scanwlan':
780 self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your selected wireless device.\n" ) + self.oktext )
781 if self["menulist"].getCurrent()[1] == 'wlanstatus':
782 self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
783 if self["menulist"].getCurrent()[1] == 'lanrestart':
784 self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
785 if self["menulist"].getCurrent()[1] == 'openwizard':
786 self["description"].setText(_("Use the Networkwizard to configure your Network\n" ) + self.oktext )
787 if self["menulist"].getCurrent()[1][0] == 'extendedSetup':
788 self["description"].setText(_(self["menulist"].getCurrent()[1][1]) + self.oktext )
790 def updateStatusbar(self, data = None):
791 self["IFtext"].setText(_("Network:"))
792 self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
793 self["Statustext"].setText(_("Link:"))
795 if self.iface == 'wlan0' or self.iface == 'ath0':
797 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
799 self["statuspic"].setPixmapNum(1)
800 self["statuspic"].show()
802 iStatus.getDataForInterface(self.iface,self.getInfoCB)
804 iNetwork.getLinkState(self.iface,self.dataAvail)
809 def genMainMenu(self):
811 menu.append((_("Adapter settings"), "edit"))
812 menu.append((_("Nameserver settings"), "dns"))
813 menu.append((_("Network test"), "test"))
814 menu.append((_("Restart network"), "lanrestart"))
817 self.extendedSetup = None
818 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
819 callFnc = p.__call__["ifaceSupported"](self.iface)
820 if callFnc is not None:
821 self.extended = callFnc
823 if p.__call__.has_key("WlanPluginEntry"): # internally used only for WLAN Plugin
824 menu.append((_("Scan Wireless Networks"), "scanwlan"))
825 if iNetwork.getAdapterAttribute(self.iface, "up"):
826 menu.append((_("Show WLAN Status"), "wlanstatus"))
828 if p.__call__.has_key("menuEntryName"):
829 menuEntryName = p.__call__["menuEntryName"](self.iface)
831 menuEntryName = _('Extended Setup...')
832 if p.__call__.has_key("menuEntryDescription"):
833 menuEntryDescription = p.__call__["menuEntryDescription"](self.iface)
835 menuEntryDescription = _('Extended Networksetup Plugin...')
836 self.extendedSetup = ('extendedSetup',menuEntryDescription, self.extended)
837 menu.append((menuEntryName,self.extendedSetup))
839 if os_path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
840 menu.append((_("NetworkWizard"), "openwizard"))
844 def AdapterSetupClosed(self, *ret):
845 if ret is not None and len(ret):
846 if ret[0] == 'ok' and (self.iface == 'wlan0' or self.iface == 'ath0') and iNetwork.getAdapterAttribute(self.iface, "up") is True:
848 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
849 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
851 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
853 ifobj = Wireless(self.iface) # a Wireless NIC Object
854 self.wlanresponse = ifobj.getStatistics()
855 if self.wlanresponse[0] != 19:
856 self.session.openWithCallback(self.WlanStatusClosed, WlanStatus,self.iface)
858 # Display Wlan not available Message
859 self.showErrorMessage()
861 self.mainmenu = self.genMainMenu()
862 self["menulist"].l.setList(self.mainmenu)
863 self.updateStatusbar()
865 self.mainmenu = self.genMainMenu()
866 self["menulist"].l.setList(self.mainmenu)
867 self.updateStatusbar()
869 def WlanStatusClosed(self, *ret):
870 if ret is not None and len(ret):
871 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
872 iStatus.stopWlanConsole()
873 self.mainmenu = self.genMainMenu()
874 self["menulist"].l.setList(self.mainmenu)
875 self.updateStatusbar()
877 def WlanScanClosed(self,*ret):
878 if ret[0] is not None:
879 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1])
881 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
882 iStatus.stopWlanConsole()
883 self.mainmenu = self.genMainMenu()
884 self["menulist"].l.setList(self.mainmenu)
885 self.updateStatusbar()
887 def restartLan(self, ret = False):
889 iNetwork.restartNetwork(self.restartLanDataAvail)
890 self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while your network is restarting..."), type = MessageBox.TYPE_INFO, enable_input = False)
892 def restartLanDataAvail(self, data):
894 iNetwork.getInterfaces(self.getInterfacesDataAvail)
896 def getInterfacesDataAvail(self, data):
898 self.restartLanRef.close(True)
900 def restartfinishedCB(self,data):
902 self.updateStatusbar()
903 self.session.open(MessageBox, _("Finished restarting your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False)
905 def dataAvail(self,data):
906 self.output = data.strip()
907 result = self.output.split('\n')
908 pattern = re_compile("Link detected: yes")
910 if re_search(pattern, item):
911 self["statuspic"].setPixmapNum(0)
913 self["statuspic"].setPixmapNum(1)
914 self["statuspic"].show()
916 def showErrorMessage(self):
917 self.session.open(MessageBox, self.errortext, type = MessageBox.TYPE_INFO,timeout = 10 )
920 iNetwork.stopLinkStateConsole()
921 iNetwork.stopDeactivateInterfaceConsole()
923 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
927 iStatus.stopWlanConsole()
929 def getInfoCB(self,data,status):
932 if status is not None:
933 if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False:
934 self["statuspic"].setPixmapNum(1)
936 self["statuspic"].setPixmapNum(0)
937 self["statuspic"].show()
939 class NetworkAdapterTest(Screen):
940 def __init__(self, session,iface):
941 Screen.__init__(self, session)
943 self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
945 self.onClose.append(self.cleanup)
946 self.onHide.append(self.cleanup)
948 self["updown_actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
952 "up": lambda: self.updownhandler('up'),
953 "down": lambda: self.updownhandler('down'),
957 self["shortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
962 self["infoshortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
964 "red": self.closeInfo,
965 "back": self.closeInfo,
967 self["shortcutsgreen"] = ActionMap(["ShortcutActions"],
969 "green": self.KeyGreen,
971 self["shortcutsgreen_restart"] = ActionMap(["ShortcutActions"],
973 "green": self.KeyGreenRestart,
975 self["shortcutsyellow"] = ActionMap(["ShortcutActions"],
977 "yellow": self.KeyYellow,
980 self["shortcutsgreen_restart"].setEnabled(False)
981 self["updown_actions"].setEnabled(False)
982 self["infoshortcuts"].setEnabled(False)
983 self.onClose.append(self.delTimer)
984 self.onLayoutFinish.append(self.layoutFinished)
985 self.steptimer = False
987 self.activebutton = 0
988 self.nextStepTimer = eTimer()
989 self.nextStepTimer.callback.append(self.nextStepTimerFire)
992 if self.oldInterfaceState is False:
993 iNetwork.setAdapterAttribute(self.iface, "up", self.oldInterfaceState)
994 iNetwork.deactivateInterface(self.iface)
998 self["shortcuts"].setEnabled(True)
999 self["infoshortcuts"].setEnabled(False)
1000 self["InfoText"].hide()
1001 self["InfoTextBorder"].hide()
1002 self["key_red"].setText(_("Close"))
1006 del self.nextStepTimer
1008 def nextStepTimerFire(self):
1009 self.nextStepTimer.stop()
1010 self.steptimer = False
1013 def updownhandler(self,direction):
1014 if direction == 'up':
1015 if self.activebutton >=2:
1016 self.activebutton -= 1
1018 self.activebutton = 6
1019 self.setActiveButton(self.activebutton)
1020 if direction == 'down':
1021 if self.activebutton <=5:
1022 self.activebutton += 1
1024 self.activebutton = 1
1025 self.setActiveButton(self.activebutton)
1027 def setActiveButton(self,button):
1029 self["EditSettingsButton"].setPixmapNum(0)
1030 self["EditSettings_Text"].setForegroundColorNum(0)
1031 self["NetworkInfo"].setPixmapNum(0)
1032 self["NetworkInfo_Text"].setForegroundColorNum(1)
1033 self["AdapterInfo"].setPixmapNum(1) # active
1034 self["AdapterInfo_Text"].setForegroundColorNum(2) # active
1036 self["AdapterInfo_Text"].setForegroundColorNum(1)
1037 self["AdapterInfo"].setPixmapNum(0)
1038 self["DhcpInfo"].setPixmapNum(0)
1039 self["DhcpInfo_Text"].setForegroundColorNum(1)
1040 self["NetworkInfo"].setPixmapNum(1) # active
1041 self["NetworkInfo_Text"].setForegroundColorNum(2) # active
1043 self["NetworkInfo"].setPixmapNum(0)
1044 self["NetworkInfo_Text"].setForegroundColorNum(1)
1045 self["IPInfo"].setPixmapNum(0)
1046 self["IPInfo_Text"].setForegroundColorNum(1)
1047 self["DhcpInfo"].setPixmapNum(1) # active
1048 self["DhcpInfo_Text"].setForegroundColorNum(2) # active
1050 self["DhcpInfo"].setPixmapNum(0)
1051 self["DhcpInfo_Text"].setForegroundColorNum(1)
1052 self["DNSInfo"].setPixmapNum(0)
1053 self["DNSInfo_Text"].setForegroundColorNum(1)
1054 self["IPInfo"].setPixmapNum(1) # active
1055 self["IPInfo_Text"].setForegroundColorNum(2) # active
1057 self["IPInfo"].setPixmapNum(0)
1058 self["IPInfo_Text"].setForegroundColorNum(1)
1059 self["EditSettingsButton"].setPixmapNum(0)
1060 self["EditSettings_Text"].setForegroundColorNum(0)
1061 self["DNSInfo"].setPixmapNum(1) # active
1062 self["DNSInfo_Text"].setForegroundColorNum(2) # active
1064 self["DNSInfo"].setPixmapNum(0)
1065 self["DNSInfo_Text"].setForegroundColorNum(1)
1066 self["EditSettingsButton"].setPixmapNum(1) # active
1067 self["EditSettings_Text"].setForegroundColorNum(2) # active
1068 self["AdapterInfo"].setPixmapNum(0)
1069 self["AdapterInfo_Text"].setForegroundColorNum(1)
1072 next = self.nextstep
1088 self.steptimer = True
1089 self.nextStepTimer.start(3000)
1090 self["key_yellow"].setText(_("Stop test"))
1093 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
1094 self["Adapter"].setForegroundColorNum(2)
1095 self["Adaptertext"].setForegroundColorNum(1)
1096 self["AdapterInfo_Text"].setForegroundColorNum(1)
1097 self["AdapterInfo_OK"].show()
1098 self.steptimer = True
1099 self.nextStepTimer.start(3000)
1102 self["Networktext"].setForegroundColorNum(1)
1103 self["Network"].setText(_("Please wait..."))
1104 self.getLinkState(self.iface)
1105 self["NetworkInfo_Text"].setForegroundColorNum(1)
1106 self.steptimer = True
1107 self.nextStepTimer.start(3000)
1110 self["Dhcptext"].setForegroundColorNum(1)
1111 if iNetwork.getAdapterAttribute(self.iface, 'dhcp') is True:
1112 self["Dhcp"].setForegroundColorNum(2)
1113 self["Dhcp"].setText(_("enabled"))
1114 self["DhcpInfo_Check"].setPixmapNum(0)
1116 self["Dhcp"].setForegroundColorNum(1)
1117 self["Dhcp"].setText(_("disabled"))
1118 self["DhcpInfo_Check"].setPixmapNum(1)
1119 self["DhcpInfo_Check"].show()
1120 self["DhcpInfo_Text"].setForegroundColorNum(1)
1121 self.steptimer = True
1122 self.nextStepTimer.start(3000)
1125 self["IPtext"].setForegroundColorNum(1)
1126 self["IP"].setText(_("Please wait..."))
1127 iNetwork.checkNetworkState(self.NetworkStatedataAvail)
1130 self.steptimer = False
1131 self.nextStepTimer.stop()
1132 self["DNStext"].setForegroundColorNum(1)
1133 self["DNS"].setText(_("Please wait..."))
1134 iNetwork.checkDNSLookup(self.DNSLookupdataAvail)
1137 self["shortcutsgreen"].setEnabled(False)
1138 self["shortcutsyellow"].setEnabled(True)
1139 self["updown_actions"].setEnabled(False)
1140 self["key_yellow"].setText("")
1141 self["key_green"].setText("")
1142 self.steptimer = True
1143 self.nextStepTimer.start(1000)
1145 def KeyGreenRestart(self):
1147 self.layoutFinished()
1148 self["Adapter"].setText((""))
1149 self["Network"].setText((""))
1150 self["Dhcp"].setText((""))
1151 self["IP"].setText((""))
1152 self["DNS"].setText((""))
1153 self["AdapterInfo_Text"].setForegroundColorNum(0)
1154 self["NetworkInfo_Text"].setForegroundColorNum(0)
1155 self["DhcpInfo_Text"].setForegroundColorNum(0)
1156 self["IPInfo_Text"].setForegroundColorNum(0)
1157 self["DNSInfo_Text"].setForegroundColorNum(0)
1158 self["shortcutsgreen_restart"].setEnabled(False)
1159 self["shortcutsgreen"].setEnabled(False)
1160 self["shortcutsyellow"].setEnabled(True)
1161 self["updown_actions"].setEnabled(False)
1162 self["key_yellow"].setText("")
1163 self["key_green"].setText("")
1164 self.steptimer = True
1165 self.nextStepTimer.start(1000)
1168 self["infoshortcuts"].setEnabled(True)
1169 self["shortcuts"].setEnabled(False)
1170 if self.activebutton == 1: # Adapter Check
1171 self["InfoText"].setText(_("This test detects your configured LAN-Adapter."))
1172 self["InfoTextBorder"].show()
1173 self["InfoText"].show()
1174 self["key_red"].setText(_("Back"))
1175 if self.activebutton == 2: #LAN Check
1176 self["InfoText"].setText(_("This test checks whether a network cable is connected to your LAN-Adapter.\nIf you get a \"disconnected\" message:\n- verify that a network cable is attached\n- verify that the cable is not broken"))
1177 self["InfoTextBorder"].show()
1178 self["InfoText"].show()
1179 self["key_red"].setText(_("Back"))
1180 if self.activebutton == 3: #DHCP Check
1181 self["InfoText"].setText(_("This test checks whether your LAN Adapter is set up for automatic IP Address configuration with DHCP.\nIf you get a \"disabled\" message:\n - then your LAN Adapter is configured for manual IP Setup\n- verify thay you have entered correct IP informations in the AdapterSetup dialog.\nIf you get an \"enabeld\" message:\n-verify that you have a configured and working DHCP Server in your network."))
1182 self["InfoTextBorder"].show()
1183 self["InfoText"].show()
1184 self["key_red"].setText(_("Back"))
1185 if self.activebutton == 4: # IP Check
1186 self["InfoText"].setText(_("This test checks whether a valid IP Address is found for your LAN Adapter.\nIf you get a \"unconfirmed\" message:\n- no valid IP Address was found\n- please check your DHCP, cabling and adapter setup"))
1187 self["InfoTextBorder"].show()
1188 self["InfoText"].show()
1189 self["key_red"].setText(_("Back"))
1190 if self.activebutton == 5: # DNS Check
1191 self["InfoText"].setText(_("This test checks for configured Nameservers.\nIf you get a \"unconfirmed\" message:\n- please check your DHCP, cabling and Adapter setup\n- if you configured your Nameservers manually please verify your entries in the \"Nameserver\" Configuration"))
1192 self["InfoTextBorder"].show()
1193 self["InfoText"].show()
1194 self["key_red"].setText(_("Back"))
1195 if self.activebutton == 6: # Edit Settings
1196 self.session.open(AdapterSetup,self.iface)
1198 def KeyYellow(self):
1200 self["shortcutsgreen_restart"].setEnabled(True)
1201 self["shortcutsgreen"].setEnabled(False)
1202 self["shortcutsyellow"].setEnabled(False)
1203 self["key_green"].setText(_("Restart test"))
1204 self["key_yellow"].setText("")
1205 self.steptimer = False
1206 self.nextStepTimer.stop()
1208 def layoutFinished(self):
1209 self["shortcutsyellow"].setEnabled(False)
1210 self["AdapterInfo_OK"].hide()
1211 self["NetworkInfo_Check"].hide()
1212 self["DhcpInfo_Check"].hide()
1213 self["IPInfo_Check"].hide()
1214 self["DNSInfo_Check"].hide()
1215 self["EditSettings_Text"].hide()
1216 self["EditSettingsButton"].hide()
1217 self["InfoText"].hide()
1218 self["InfoTextBorder"].hide()
1219 self["key_yellow"].setText("")
1221 def setLabels(self):
1222 self["Adaptertext"] = MultiColorLabel(_("LAN Adapter"))
1223 self["Adapter"] = MultiColorLabel()
1224 self["AdapterInfo"] = MultiPixmap()
1225 self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info"))
1226 self["AdapterInfo_OK"] = Pixmap()
1228 if self.iface == 'wlan0' or self.iface == 'ath0':
1229 self["Networktext"] = MultiColorLabel(_("Wireless Network"))
1231 self["Networktext"] = MultiColorLabel(_("Local Network"))
1233 self["Network"] = MultiColorLabel()
1234 self["NetworkInfo"] = MultiPixmap()
1235 self["NetworkInfo_Text"] = MultiColorLabel(_("Show Info"))
1236 self["NetworkInfo_Check"] = MultiPixmap()
1238 self["Dhcptext"] = MultiColorLabel(_("DHCP"))
1239 self["Dhcp"] = MultiColorLabel()
1240 self["DhcpInfo"] = MultiPixmap()
1241 self["DhcpInfo_Text"] = MultiColorLabel(_("Show Info"))
1242 self["DhcpInfo_Check"] = MultiPixmap()
1244 self["IPtext"] = MultiColorLabel(_("IP Address"))
1245 self["IP"] = MultiColorLabel()
1246 self["IPInfo"] = MultiPixmap()
1247 self["IPInfo_Text"] = MultiColorLabel(_("Show Info"))
1248 self["IPInfo_Check"] = MultiPixmap()
1250 self["DNStext"] = MultiColorLabel(_("Nameserver"))
1251 self["DNS"] = MultiColorLabel()
1252 self["DNSInfo"] = MultiPixmap()
1253 self["DNSInfo_Text"] = MultiColorLabel(_("Show Info"))
1254 self["DNSInfo_Check"] = MultiPixmap()
1256 self["EditSettings_Text"] = MultiColorLabel(_("Edit settings"))
1257 self["EditSettingsButton"] = MultiPixmap()
1259 self["key_red"] = StaticText(_("Close"))
1260 self["key_green"] = StaticText(_("Start test"))
1261 self["key_yellow"] = StaticText(_("Stop test"))
1263 self["InfoTextBorder"] = Pixmap()
1264 self["InfoText"] = Label()
1266 def getLinkState(self,iface):
1267 if iface == 'wlan0' or iface == 'ath0':
1269 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
1271 self["Network"].setForegroundColorNum(1)
1272 self["Network"].setText(_("disconnected"))
1273 self["NetworkInfo_Check"].setPixmapNum(1)
1274 self["NetworkInfo_Check"].show()
1276 iStatus.getDataForInterface(self.iface,self.getInfoCB)
1278 iNetwork.getLinkState(iface,self.LinkStatedataAvail)
1280 def LinkStatedataAvail(self,data):
1281 self.output = data.strip()
1282 result = self.output.split('\n')
1283 pattern = re_compile("Link detected: yes")
1285 if re_search(pattern, item):
1286 self["Network"].setForegroundColorNum(2)
1287 self["Network"].setText(_("connected"))
1288 self["NetworkInfo_Check"].setPixmapNum(0)
1290 self["Network"].setForegroundColorNum(1)
1291 self["Network"].setText(_("disconnected"))
1292 self["NetworkInfo_Check"].setPixmapNum(1)
1293 self["NetworkInfo_Check"].show()
1295 def NetworkStatedataAvail(self,data):
1297 self["IP"].setForegroundColorNum(2)
1298 self["IP"].setText(_("confirmed"))
1299 self["IPInfo_Check"].setPixmapNum(0)
1301 self["IP"].setForegroundColorNum(1)
1302 self["IP"].setText(_("unconfirmed"))
1303 self["IPInfo_Check"].setPixmapNum(1)
1304 self["IPInfo_Check"].show()
1305 self["IPInfo_Text"].setForegroundColorNum(1)
1306 self.steptimer = True
1307 self.nextStepTimer.start(3000)
1309 def DNSLookupdataAvail(self,data):
1311 self["DNS"].setForegroundColorNum(2)
1312 self["DNS"].setText(_("confirmed"))
1313 self["DNSInfo_Check"].setPixmapNum(0)
1315 self["DNS"].setForegroundColorNum(1)
1316 self["DNS"].setText(_("unconfirmed"))
1317 self["DNSInfo_Check"].setPixmapNum(1)
1318 self["DNSInfo_Check"].show()
1319 self["DNSInfo_Text"].setForegroundColorNum(1)
1320 self["EditSettings_Text"].show()
1321 self["EditSettingsButton"].setPixmapNum(1)
1322 self["EditSettings_Text"].setForegroundColorNum(2) # active
1323 self["EditSettingsButton"].show()
1324 self["key_yellow"].setText("")
1325 self["key_green"].setText(_("Restart test"))
1326 self["shortcutsgreen"].setEnabled(False)
1327 self["shortcutsgreen_restart"].setEnabled(True)
1328 self["shortcutsyellow"].setEnabled(False)
1329 self["updown_actions"].setEnabled(True)
1330 self.activebutton = 6
1332 def getInfoCB(self,data,status):
1333 if data is not None:
1335 if status is not None:
1336 if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False:
1337 self["Network"].setForegroundColorNum(1)
1338 self["Network"].setText(_("disconnected"))
1339 self["NetworkInfo_Check"].setPixmapNum(1)
1340 self["NetworkInfo_Check"].show()
1342 self["Network"].setForegroundColorNum(2)
1343 self["Network"].setText(_("connected"))
1344 self["NetworkInfo_Check"].setPixmapNum(0)
1345 self["NetworkInfo_Check"].show()
1348 iNetwork.stopLinkStateConsole()
1349 iNetwork.stopDNSConsole()
1351 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
1355 iStatus.stopWlanConsole()