1 from Screen import Screen
2 from Components.ActionMap import ActionMap,NumberActionMap
3 from Screens.MessageBox import MessageBox
4 from Screens.Standby import *
5 from Components.ConfigList import ConfigListScreen
6 from Components.config import config, getConfigListEntry
7 from Components.Network import iNetwork
8 from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
9 from Components.Label import Label,MultiColorLabel
10 from Components.Pixmap import Pixmap,MultiPixmap
11 from Tools.LoadPixmap import LoadPixmap
12 from Components.MenuList import MenuList
13 from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigNothing, ConfigSubsection, ConfigText, ConfigSelection, getConfigListEntry
14 from Components.PluginComponent import plugins
15 from Plugins.Plugin import PluginDescriptor
16 from enigma import eTimer, eConsoleAppContainer,gRGB
18 from Tools.Directories import resolveFilename, SCOPE_PLUGINS
21 return gRGB(int(str[1:], 0x10))
23 class NetworkAdapterSelection(Screen):
24 def __init__(self, session):
25 Screen.__init__(self, session)
26 iNetwork.getInterfaces()
27 self.wlan_errortext = _("No working wireless networkadapter found.\nPlease verify that you have attached a compatible WLAN USB Stick and your Network is configured correctly.")
28 self.lan_errortext = _("No working local networkadapter found.\nPlease verify that you have attached a network cable and your Network is configured correctly.")
29 self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
30 if len(self.adapters) == 0:
31 self.onFirstExecBegin.append(self.NetworkFallback)
33 self["adapterlist"] = MenuList(self.adapters)
34 self["actions"] = ActionMap(["OkCancelActions"],
36 "ok": self.okbuttonClick,
40 if len(self.adapters) == 1:
41 self.onFirstExecBegin.append(self.okbuttonClick)
43 def okbuttonClick(self):
44 selection = self["adapterlist"].getCurrent()
45 if selection is not None:
46 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[1])
48 def AdapterSetupClosed(self, *ret):
51 def NetworkFallback(self):
52 if iNetwork.configuredInterfaces.has_key('wlan0') is True:
53 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
55 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.lan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
57 def ErrorMessageClosed(self, *ret):
58 if iNetwork.configuredInterfaces.has_key('wlan0') is True:
59 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'wlan0')
61 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'eth0')
63 class NameserverSetup(Screen, ConfigListScreen):
64 def __init__(self, session):
65 Screen.__init__(self, session)
66 iNetwork.getInterfaces()
67 self.backupNameserverList = iNetwork.getNameserverList()[:]
68 print "backup-list:", self.backupNameserverList
70 self["ButtonGreentext"] = Label(_("Add"))
71 self["ButtonYellowtext"] = Label(_("Delete"))
72 self["ButtonRedtext"] = Label(_("Close"))
75 self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
78 "cancel": self.cancel,
85 ConfigListScreen.__init__(self, self.list)
88 def createConfig(self):
89 self.nameservers = iNetwork.getNameserverList()
90 self.nameserverEntries = []
92 for nameserver in self.nameservers:
93 self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver)))
95 def createSetup(self):
98 for i in range(len(self.nameserverEntries)):
99 self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
101 self["config"].list = self.list
102 self["config"].l.setList(self.list)
105 iNetwork.clearNameservers()
106 for nameserver in self.nameserverEntries:
107 iNetwork.addNameserver(nameserver.value)
108 iNetwork.writeNameserverConfig()
112 iNetwork.clearNameservers()
113 print "backup-list:", self.backupNameserverList
114 for nameserver in self.backupNameserverList:
115 iNetwork.addNameserver(nameserver)
119 iNetwork.addNameserver([0,0,0,0])
124 print "currentIndex:", self["config"].getCurrentIndex()
126 index = self["config"].getCurrentIndex()
127 if index < len(self.nameservers):
128 iNetwork.removeNameserver(self.nameservers[index])
132 class AdapterSetup(Screen, ConfigListScreen):
133 def __init__(self, session, iface):
134 Screen.__init__(self, session)
135 self.session = session
136 iNetwork.getInterfaces()
137 ## FIXME , workaround against current wizzard not able to send arguments
145 if self.iface == 'wlan0':
146 from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan
147 self.ws = wpaSupplicant()
149 list.append(_("WEP"))
150 list.append(_("WPA"))
151 list.append(_("WPA2"))
152 if iNetwork.getAdapterAttribute('wlan0', 'up') is True:
154 self.w = Wlan('wlan0')
155 aps = self.w.getNetworkList()
158 print "[Wlan.py] got Accespoints!"
163 a['essid'] = a['bssid']
164 nwlist.append( a['essid'])
165 nwlist.sort(key = lambda x: x[0])
168 nwlist.append("No Networks found")
172 nwlist.append("No Networks found")
174 config.plugins.wlan.essid = NoSave(ConfigSelection(nwlist, default = nwlist[0]))
175 config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = False))
176 config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = _("WPA")))
177 config.plugins.wlan.encryption.psk = NoSave(ConfigText(default = "mysecurewlan", fixed_size = False))
180 self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
181 self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=True))
182 self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
183 self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
184 self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
185 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
186 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
187 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
189 self["actions"] = ActionMap(["SetupActions","ShortcutActions"],
192 "cancel": self.cancel,
194 "blue": self.KeyBlue,
198 ConfigListScreen.__init__(self, self.list)
200 self.onLayoutFinish.append(self.layoutFinished)
202 self["DNS1text"] = Label(_("Primary DNS"))
203 self["DNS2text"] = Label(_("Secondary DNS"))
204 self["DNS1"] = Label()
205 self["DNS2"] = Label()
207 self["introduction"] = Label(_("Current settings:"))
209 self["IPtext"] = Label(_("IP Address"))
210 self["Netmasktext"] = Label(_("Netmask"))
211 self["Gatewaytext"] = Label(_("Gateway"))
214 self["Mask"] = Label()
215 self["Gateway"] = Label()
217 self["BottomBG"] = Pixmap()
218 self["Adaptertext"] = Label(_("Network:"))
219 self["Adapter"] = Label()
220 self["introduction2"] = Label(_("Press OK to activate the settings."))
221 self["ButtonRed"] = Pixmap()
222 self["ButtonRedtext"] = Label(_("Close"))
223 self["ButtonBlue"] = Pixmap()
224 self["ButtonBluetext"] = Label(_("Edit DNS"))
226 def layoutFinished(self):
227 self["DNS1"].setText(self.primaryDNS.getText())
228 self["DNS2"].setText(self.secondaryDNS.getText())
229 if self.ipConfigEntry.getText() is not None:
230 self["IP"].setText(self.ipConfigEntry.getText())
232 self["IP"].setText([0,0,0,0])
233 self["Mask"].setText(self.netmaskConfigEntry.getText())
234 self["Gateway"].setText(self.gatewayConfigEntry.getText())
235 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
237 def createSetup(self):
240 self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
241 self.list.append(self.dhcpEntry)
242 if not self.dhcpConfigEntry.value:
243 self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
244 self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
245 self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry))
246 if self.hasGatewayConfigEntry.value:
247 self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
250 self.extendedSetup = None
251 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
252 callFnc = p.__call__["ifaceSupported"](self.iface)
253 if callFnc is not None:
254 self.extended = callFnc
256 if p.__call__.has_key("configStrings"):
257 self.configStrings = p.__call__["configStrings"]
259 self.configStrings = None
261 self.list.append(getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid))
262 self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
263 self.list.append(self.encryptionEnabled)
265 if config.plugins.wlan.encryption.enabled.value:
266 self.list.append(getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type))
267 self.list.append(getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk))
269 self["config"].list = self.list
270 self["config"].l.setList(self.list)
273 self.session.open(NameserverSetup)
276 print self["config"].getCurrent()
277 if self["config"].getCurrent() == self.dhcpEntry:
281 ConfigListScreen.keyLeft(self)
285 ConfigListScreen.keyRight(self)
289 selection = self["config"].getCurrent()
290 if selection == self.extendedSetup:
291 self.extended(self.session, self.iface)
293 iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
294 iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
295 iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
296 if self.hasGatewayConfigEntry.value:
297 iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
299 iNetwork.removeAdapterAttribute(self.iface, "gateway")
301 if self.extended is not None and self.configStrings is not None:
302 iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
303 self.ws.writeConfig()
305 iNetwork.deactivateNetworkConfig()
306 iNetwork.writeNetworkConfig()
307 iNetwork.activateNetworkConfig()
311 iNetwork.getInterfaces()
318 class AdapterSetupConfiguration(Screen):
319 def __init__(self, session,iface):
320 Screen.__init__(self, session)
322 self.session = session
323 self.mainmenu = self.genMainMenu()
324 self["menulist"] = MenuList(self.mainmenu)
325 self["description"] = Label()
326 self["IFtext"] = Label()
328 self["BottomBG"] = Label()
329 self["Statustext"] = Label()
330 self["statuspic"] = MultiPixmap()
331 self["statuspic"].hide()
332 self["BottomBG"] = Pixmap()
333 self["ButtonRed"] = Pixmap()
334 self["ButtonRedtext"] = Label(_("Close"))
336 self.oktext = _("Press OK on your remote control to continue.")
337 self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
338 self.errortext = _("No working wireless interface found.\n Please verify that you have attached a compatible WLAN USB Stick or enable you local network interface.")
340 self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
351 iNetwork.getInterfaces()
352 self.onLayoutFinish.append(self.layoutFinished)
353 self.updateStatusbar()
356 if self["menulist"].getCurrent()[1] == 'edit':
357 if self.iface == 'wlan0':
358 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
359 ifobj = Wireless(self.iface) # a Wireless NIC Object
360 self.wlanresponse = ifobj.getStatistics()
361 if self.wlanresponse[0] != 19: # Wlan Interface found.
362 self.session.open(AdapterSetup,self.iface)
364 # Display Wlan not available Message
365 self.showErrorMessage()
367 self.session.open(AdapterSetup,self.iface)
368 if self["menulist"].getCurrent()[1] == 'test':
369 self.session.open(NetworkAdapterTest,self.iface)
370 if self["menulist"].getCurrent()[1] == 'dns':
371 self.session.open(NameserverSetup)
372 if self["menulist"].getCurrent()[1] == 'scanwlan':
373 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
374 ifobj = Wireless(self.iface) # a Wireless NIC Object
375 self.wlanresponse = ifobj.getStatistics()
376 if self.wlanresponse[0] != 19:
377 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
378 self.session.open(WlanScan,self.iface)
380 # Display Wlan not available Message
381 self.showErrorMessage()
382 if self["menulist"].getCurrent()[1] == 'wlanstatus':
383 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
384 ifobj = Wireless(self.iface) # a Wireless NIC Object
385 self.wlanresponse = ifobj.getStatistics()
386 if self.wlanresponse[0] != 19:
387 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
388 self.session.open(WlanStatus,self.iface)
390 # Display Wlan not available Message
391 self.showErrorMessage()
392 if self["menulist"].getCurrent()[1] == 'lanrestart':
393 self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
394 if self["menulist"].getCurrent()[1] == 'enablewlan':
395 self.session.openWithCallback(self.enableWlan, MessageBox, _("Are you sure you want to enable WLAN support?\nConnect your Wlan USB Stick to your Dreambox and press OK.\n\n") )
396 if self["menulist"].getCurrent()[1] == 'enablelan':
397 self.session.openWithCallback(self.enableLan, MessageBox, (_("Are you sure you want to enable your local network?\n\n") + self.oktext ) )
398 if self["menulist"].getCurrent()[1] == 'openwizard':
399 from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard
400 self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard)
403 self["menulist"].up()
404 self.loadDescription()
407 self["menulist"].down()
408 self.loadDescription()
411 self["menulist"].pageUp()
412 self.loadDescription()
415 self["menulist"].pageDown()
416 self.loadDescription()
418 def layoutFinished(self):
420 self["menulist"].moveToIndex(idx)
421 self.loadDescription()
423 def loadDescription(self):
424 if self["menulist"].getCurrent()[1] == 'edit':
425 self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
426 if self["menulist"].getCurrent()[1] == 'test':
427 self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
428 if self["menulist"].getCurrent()[1] == 'enablelan':
429 self["description"].setText(_("Enable the local network of your Dreambox.\n\n" ) + self.oktext )
430 if self["menulist"].getCurrent()[1] == 'dns':
431 self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
432 if self["menulist"].getCurrent()[1] == 'scanwlan':
433 self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your WLAN USB Stick\n" ) + self.oktext )
434 if self["menulist"].getCurrent()[1] == 'wlanstatus':
435 self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
436 if self["menulist"].getCurrent()[1] == 'lanrestart':
437 self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
438 if self["menulist"].getCurrent()[1] == 'enablewlan':
439 self["description"].setText(_("Pressing OK enables the built in wireless LAN support of your Dreambox.\nWlan USB Sticks with Zydas ZD1211B and RAlink RT73 Chipset are supported.\nConnect your Wlan USB Stick to your Dreambox before pressing OK.\n\n" ) + self.reboottext )
440 if self["menulist"].getCurrent()[1] == 'openwizard':
441 self["description"].setText(_("Use the Networkwizard to configure your Network\n" ) + self.oktext )
443 def updateStatusbar(self):
444 self["IFtext"].setText(_("Network:"))
445 self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
446 self["Statustext"].setText(_("Link:"))
448 if self.iface == 'wlan0':
450 from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan, WlanList, wpaSupplicant
452 stats = w.getStatus()
453 if stats['BSSID'] == "00:00:00:00:00:00":
454 self["statuspic"].setPixmapNum(1)
456 self["statuspic"].setPixmapNum(0)
457 self["statuspic"].show()
459 self["statuspic"].setPixmapNum(1)
460 self["statuspic"].show()
462 self.getLinkState(self.iface)
467 def genMainMenu(self):
469 menu.append((_("Adapter settings"), "edit"))
470 menu.append((_("Nameserver settings"), "dns"))
471 menu.append((_("Network test"), "test"))
472 menu.append((_("Restart network"), "lanrestart"))
475 self.extendedSetup = None
476 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
477 callFnc = p.__call__["ifaceSupported"](self.iface)
478 if callFnc is not None:
479 menu.append((_("Scan Wireless Networks"), "scanwlan"))
480 menu.append((_("Show WLAN Status"), "wlanstatus"))
481 menu.append((_("Enable LAN"), "enablelan"))
482 if callFnc is None and iNetwork.ifaces.has_key('wlan0') is False:
483 menu.append((_("Enable WLAN"), "enablewlan"))
484 if callFnc is None and iNetwork.ifaces.has_key('wlan0') is True:
485 menu.append((_("Enable LAN"), "enablelan"))
487 if os.path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
488 menu.append((_("NetworkWizard"), "openwizard"));
491 def AdapterSetupClosed(self, *ret):
492 self.mainmenu = self.genMainMenu()
493 self["menulist"].l.setList(self.mainmenu)
495 def enableWlan(self, ret = False):
497 iNetwork.resetNetworkConfig('wlan')
498 iNetwork.getInterfaces()
499 if iNetwork.getAdapterAttribute('wlan0', 'up') is True:
501 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, 'wlan0')
503 self.session.openWithCallback(self.restartDreambox, MessageBox, _("Your wireless LAN Adapter could not be started.\nDo you want to reboot your Dreambox to apply the new configuration?\n"))
505 def enableLan(self, ret = False):
507 iNetwork.resetNetworkConfig('lan')
508 iNetwork.getInterfaces()
509 if iNetwork.getAdapterAttribute('eth0', 'up') is True:
511 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, 'eth0')
513 self.session.openWithCallback(self.restartDreambox, MessageBox, _("Your wired LAN Adapter could not be started.\nDo you want to reboot your Dreambox to apply the new configuration?\n"))
515 def restartLan(self, ret = False):
517 iNetwork.restartNetwork()
519 def restartDreambox(self, ret = False):
521 TryQuitMainloop(self.session,2)
523 def getLinkState(self,iface):
524 iNetwork.getLinkState(iface,self.dataAvail)
526 def dataAvail(self,data):
527 self.output = data.strip()
528 result = self.output.split('\n')
529 pattern = re.compile("Link detected: yes")
531 if re.search(pattern, item):
532 self["statuspic"].setPixmapNum(0)
534 self["statuspic"].setPixmapNum(1)
535 self["statuspic"].show()
537 def showErrorMessage(self):
538 self.session.open(MessageBox, self.errortext, type = MessageBox.TYPE_INFO,timeout = 10 )
541 class NetworkAdapterTest(Screen):
542 def __init__(self, session,iface):
543 Screen.__init__(self, session)
545 iNetwork.getInterfaces()
548 self["updown_actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
552 "up": lambda: self.updownhandler('up'),
553 "down": lambda: self.updownhandler('down'),
557 self["shortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
562 self["infoshortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
564 "red": self.closeInfo,
565 "back": self.closeInfo,
567 self["shortcutsgreen"] = ActionMap(["ShortcutActions"],
569 "green": self.KeyGreen,
571 self["shortcutsgreen_restart"] = ActionMap(["ShortcutActions"],
573 "green": self.KeyGreenRestart,
575 self["shortcutsyellow"] = ActionMap(["ShortcutActions"],
577 "yellow": self.KeyYellow,
580 self["shortcutsgreen_restart"].setEnabled(False)
581 self["updown_actions"].setEnabled(False)
582 self["infoshortcuts"].setEnabled(False)
583 self.onClose.append(self.delTimer)
584 self.onLayoutFinish.append(self.layoutFinished)
585 self.steptimer = False
587 self.activebutton = 0
588 self.nextStepTimer = eTimer()
589 self.nextStepTimer.callback.append(self.nextStepTimerFire)
592 self["shortcuts"].setEnabled(True)
593 self["infoshortcuts"].setEnabled(False)
594 self["InfoText"].hide()
595 self["InfoTextBorder"].hide()
596 self["ButtonRedtext"].setText(_("Close"))
600 del self.nextStepTimer
602 def nextStepTimerFire(self):
603 self.nextStepTimer.stop()
604 self.steptimer = False
607 def updownhandler(self,direction):
608 if direction == 'up':
609 if self.activebutton >=2:
610 self.activebutton -= 1
612 self.activebutton = 6
613 self.setActiveButton(self.activebutton)
614 if direction == 'down':
615 if self.activebutton <=5:
616 self.activebutton += 1
618 self.activebutton = 1
619 self.setActiveButton(self.activebutton)
621 def setActiveButton(self,button):
623 self["EditSettingsButton"].setPixmapNum(0)
624 self["NetworkInfo"].setPixmapNum(0)
625 self["AdapterInfo"].setPixmapNum(1)
627 self["AdapterInfo"].setPixmapNum(0)
628 self["DhcpInfo"].setPixmapNum(0)
629 self["NetworkInfo"].setPixmapNum(1)
631 self["NetworkInfo"].setPixmapNum(0)
632 self["IPInfo"].setPixmapNum(0)
633 self["DhcpInfo"].setPixmapNum(1)
635 self["DhcpInfo"].setPixmapNum(0)
636 self["DNSInfo"].setPixmapNum(0)
637 self["IPInfo"].setPixmapNum(1)
639 self["IPInfo"].setPixmapNum(0)
640 self["EditSettingsButton"].setPixmapNum(0)
641 self["DNSInfo"].setPixmapNum(1)
643 self["DNSInfo"].setPixmapNum(0)
644 self["EditSettingsButton"].setPixmapNum(1)
645 self["AdapterInfo"].setPixmapNum(0)
663 self.steptimer = True
664 self.nextStepTimer.start(3000)
667 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
668 self["Adapter"].setForegroundColorNum(2)
669 self["Adaptertext"].setForegroundColorNum(1)
670 self["AdapterInfo_Text"].setForegroundColorNum(1)
671 self["AdapterInfo_OK"].show()
672 self.steptimer = True
673 self.nextStepTimer.start(3000)
676 self["Networktext"].setForegroundColorNum(1)
677 self.getLinkState(self.iface)
678 self["NetworkInfo_Text"].setForegroundColorNum(1)
679 self.steptimer = True
680 self.nextStepTimer.start(3000)
683 self["Dhcptext"].setForegroundColorNum(1)
684 if iNetwork.getAdapterAttribute(self.iface, 'dhcp') is True:
685 self["Dhcp"].setForegroundColorNum(2)
686 self["Dhcp"].setText(_("enabled"))
687 self["DhcpInfo_Check"].setPixmapNum(0)
689 self["Dhcp"].setForegroundColorNum(1)
690 self["Dhcp"].setText(_("disabled"))
691 self["DhcpInfo_Check"].setPixmapNum(1)
692 self["DhcpInfo_Check"].show()
693 self["DhcpInfo_Text"].setForegroundColorNum(1)
694 self.steptimer = True
695 self.nextStepTimer.start(3000)
698 self["IPtext"].setForegroundColorNum(1)
699 ret = iNetwork.checkNetworkState()
701 self["IP"].setForegroundColorNum(2)
702 self["IP"].setText(_("confirmed"))
703 self["IPInfo_Check"].setPixmapNum(0)
705 self["IP"].setForegroundColorNum(1)
706 self["IP"].setText(_("unconfirmed"))
707 self["IPInfo_Check"].setPixmapNum(1)
708 self["IPInfo_Check"].show()
709 self["IPInfo_Text"].setForegroundColorNum(1)
710 self.steptimer = True
711 self.nextStepTimer.start(3000)
714 self.steptimer = False
715 self.nextStepTimer.stop()
716 self["DNStext"].setForegroundColorNum(1)
717 ret = iNetwork.checkDNSLookup()
719 self["DNS"].setForegroundColorNum(2)
720 self["DNS"].setText(_("confirmed"))
721 self["DNSInfo_Check"].setPixmapNum(0)
723 self["DNS"].setForegroundColorNum(1)
724 self["DNS"].setText(_("unconfirmed"))
725 self["DNSInfo_Check"].setPixmapNum(1)
726 self["DNSInfo_Check"].show()
727 self["DNSInfo_Text"].setForegroundColorNum(1)
729 self["EditSettings_Text"].show()
730 self["EditSettingsButton"].setPixmapNum(1)
731 self["EditSettingsButton"].show()
732 self["ButtonYellow_Check"].setPixmapNum(1)
733 self["ButtonGreentext"].setText(_("Restart test"))
734 self["ButtonGreen_Check"].setPixmapNum(0)
735 self["shortcutsgreen"].setEnabled(False)
736 self["shortcutsgreen_restart"].setEnabled(True)
737 self["shortcutsyellow"].setEnabled(False)
738 self["updown_actions"].setEnabled(True)
739 self.activebutton = 6
742 self["shortcutsgreen"].setEnabled(False)
743 self["shortcutsyellow"].setEnabled(True)
744 self["updown_actions"].setEnabled(False)
745 self["ButtonYellow_Check"].setPixmapNum(0)
746 self["ButtonGreen_Check"].setPixmapNum(1)
747 self.steptimer = True
748 self.nextStepTimer.start(1000)
750 def KeyGreenRestart(self):
752 self.layoutFinished()
753 self["Adapter"].setText((""))
754 self["Network"].setText((""))
755 self["Dhcp"].setText((""))
756 self["IP"].setText((""))
757 self["DNS"].setText((""))
758 self["AdapterInfo_Text"].setForegroundColorNum(0)
759 self["NetworkInfo_Text"].setForegroundColorNum(0)
760 self["DhcpInfo_Text"].setForegroundColorNum(0)
761 self["IPInfo_Text"].setForegroundColorNum(0)
762 self["DNSInfo_Text"].setForegroundColorNum(0)
763 self["shortcutsgreen_restart"].setEnabled(False)
764 self["shortcutsgreen"].setEnabled(False)
765 self["shortcutsyellow"].setEnabled(True)
766 self["updown_actions"].setEnabled(False)
767 self["ButtonYellow_Check"].setPixmapNum(0)
768 self["ButtonGreen_Check"].setPixmapNum(1)
769 self.steptimer = True
770 self.nextStepTimer.start(1000)
773 self["infoshortcuts"].setEnabled(True)
774 self["shortcuts"].setEnabled(False)
775 if self.activebutton == 1: # Adapter Check
776 self["InfoText"].setText(_("This test detects your configured LAN-Adapter."))
777 self["InfoTextBorder"].show()
778 self["InfoText"].show()
779 self["ButtonRedtext"].setText(_("Back"))
780 if self.activebutton == 2: #LAN Check
781 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"))
782 self["InfoTextBorder"].show()
783 self["InfoText"].show()
784 self["ButtonRedtext"].setText(_("Back"))
785 if self.activebutton == 3: #DHCP Check
786 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."))
787 self["InfoTextBorder"].show()
788 self["InfoText"].show()
789 self["ButtonRedtext"].setText(_("Back"))
790 if self.activebutton == 4: # IP Check
791 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"))
792 self["InfoTextBorder"].show()
793 self["InfoText"].show()
794 self["ButtonRedtext"].setText(_("Back"))
795 if self.activebutton == 5: # DNS Check
796 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"))
797 self["InfoTextBorder"].show()
798 self["InfoText"].show()
799 self["ButtonRedtext"].setText(_("Back"))
800 if self.activebutton == 6: # Edit Settings
801 self.session.open(AdapterSetup,self.iface)
805 self["shortcutsgreen_restart"].setEnabled(True)
806 self["shortcutsgreen"].setEnabled(False)
807 self["shortcutsyellow"].setEnabled(False)
808 self["ButtonGreentext"].setText(_("Restart test"))
809 self["ButtonYellow_Check"].setPixmapNum(1)
810 self["ButtonGreen_Check"].setPixmapNum(0)
811 self.steptimer = False
812 self.nextStepTimer.stop()
814 def layoutFinished(self):
815 self["shortcutsyellow"].setEnabled(False)
816 self["AdapterInfo_OK"].hide()
817 self["NetworkInfo_Check"].hide()
818 self["DhcpInfo_Check"].hide()
819 self["IPInfo_Check"].hide()
820 self["DNSInfo_Check"].hide()
821 self["EditSettings_Text"].hide()
822 self["EditSettingsButton"].hide()
823 self["InfoText"].hide()
824 self["InfoTextBorder"].hide()
827 self["Adaptertext"] = MultiColorLabel(_("LAN Adapter"))
828 self["Adapter"] = MultiColorLabel()
829 self["AdapterInfo"] = MultiPixmap()
830 self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info"))
831 self["AdapterInfo_OK"] = Pixmap()
833 if self.iface == 'wlan0':
834 self["Networktext"] = MultiColorLabel(_("Wireless Network"))
836 self["Networktext"] = MultiColorLabel(_("Local Network"))
838 self["Network"] = MultiColorLabel()
839 self["NetworkInfo"] = MultiPixmap()
840 self["NetworkInfo_Text"] = MultiColorLabel(_("Show Info"))
841 self["NetworkInfo_Check"] = MultiPixmap()
843 self["Dhcptext"] = MultiColorLabel(_("DHCP"))
844 self["Dhcp"] = MultiColorLabel()
845 self["DhcpInfo"] = MultiPixmap()
846 self["DhcpInfo_Text"] = MultiColorLabel(_("Show Info"))
847 self["DhcpInfo_Check"] = MultiPixmap()
849 self["IPtext"] = MultiColorLabel(_("IP Address"))
850 self["IP"] = MultiColorLabel()
851 self["IPInfo"] = MultiPixmap()
852 self["IPInfo_Text"] = MultiColorLabel(_("Show Info"))
853 self["IPInfo_Check"] = MultiPixmap()
855 self["DNStext"] = MultiColorLabel(_("Nameserver"))
856 self["DNS"] = MultiColorLabel()
857 self["DNSInfo"] = MultiPixmap()
858 self["DNSInfo_Text"] = MultiColorLabel(_("Show Info"))
859 self["DNSInfo_Check"] = MultiPixmap()
861 self["EditSettings_Text"] = Label(_("Edit settings"))
862 self["EditSettingsButton"] = MultiPixmap()
864 self["ButtonRedtext"] = Label(_("Close"))
865 self["ButtonRed"] = Pixmap()
867 self["ButtonGreentext"] = Label(_("Start test"))
868 self["ButtonGreen_Check"] = MultiPixmap()
870 self["ButtonYellowtext"] = Label(_("Stop test"))
871 self["ButtonYellow_Check"] = MultiPixmap()
873 self["InfoTextBorder"] = Pixmap()
874 self["InfoText"] = Label()
876 def getLinkState(self,iface):
879 from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
881 stats = w.getStatus()
882 if stats['BSSID'] == "00:00:00:00:00:00":
883 self["Network"].setForegroundColorNum(1)
884 self["Network"].setText(_("disconnected"))
885 self["NetworkInfo_Check"].setPixmapNum(1)
886 self["NetworkInfo_Check"].show()
888 self["Network"].setForegroundColorNum(2)
889 self["Network"].setText(_("connected"))
890 self["NetworkInfo_Check"].setPixmapNum(0)
891 self["NetworkInfo_Check"].show()
893 self["Network"].setForegroundColorNum(1)
894 self["Network"].setText(_("disconnected"))
895 self["NetworkInfo_Check"].setPixmapNum(1)
896 self["NetworkInfo_Check"].show()
898 iNetwork.getLinkState(iface,self.dataAvail)
900 def dataAvail(self,data):
901 self.output = data.strip()
902 result = self.output.split('\n')
903 pattern = re.compile("Link detected: yes")
905 if re.search(pattern, item):
906 self["Network"].setForegroundColorNum(2)
907 self["Network"].setText(_("connected"))
908 self["NetworkInfo_Check"].setPixmapNum(0)
910 self["Network"].setForegroundColorNum(1)
911 self["Network"].setText(_("disconnected"))
912 self["NetworkInfo_Check"].setPixmapNum(1)
913 self["NetworkInfo_Check"].show()