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
20 class NetworkAdapterSelection(Screen):
21 def __init__(self, session):
22 Screen.__init__(self, session)
23 iNetwork.getInterfaces()
24 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.")
25 self.lan_errortext = _("No working local networkadapter found.\nPlease verify that you have attached a network cable and your Network is configured correctly.")
26 self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
27 if len(self.adapters) == 0:
28 self.onFirstExecBegin.append(self.NetworkFallback)
30 self["adapterlist"] = MenuList(self.adapters)
31 self["actions"] = ActionMap(["OkCancelActions"],
33 "ok": self.okbuttonClick,
37 if len(self.adapters) == 1:
38 self.onFirstExecBegin.append(self.okbuttonClick)
40 def okbuttonClick(self):
41 selection = self["adapterlist"].getCurrent()
42 if selection is not None:
43 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[1])
45 def AdapterSetupClosed(self, *ret):
48 def NetworkFallback(self):
49 if iNetwork.configuredInterfaces.has_key('wlan0') is True:
50 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
52 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.lan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
54 def ErrorMessageClosed(self, *ret):
55 if iNetwork.configuredInterfaces.has_key('wlan0') is True:
56 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'wlan0')
58 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'eth0')
60 class NameserverSetup(Screen, ConfigListScreen):
61 def __init__(self, session):
62 Screen.__init__(self, session)
63 iNetwork.getInterfaces()
64 self.backupNameserverList = iNetwork.getNameserverList()[:]
65 print "backup-list:", self.backupNameserverList
67 self["ButtonGreentext"] = Label(_("Add"))
68 self["ButtonYellowtext"] = Label(_("Delete"))
69 self["ButtonRedtext"] = Label(_("Close"))
72 self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
75 "cancel": self.cancel,
82 ConfigListScreen.__init__(self, self.list)
85 def createConfig(self):
86 self.nameservers = iNetwork.getNameserverList()
87 self.nameserverEntries = []
89 for nameserver in self.nameservers:
90 self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver)))
92 def createSetup(self):
95 for i in range(len(self.nameserverEntries)):
96 self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
98 self["config"].list = self.list
99 self["config"].l.setList(self.list)
102 iNetwork.clearNameservers()
103 for nameserver in self.nameserverEntries:
104 iNetwork.addNameserver(nameserver.value)
105 iNetwork.writeNameserverConfig()
109 iNetwork.clearNameservers()
110 print "backup-list:", self.backupNameserverList
111 for nameserver in self.backupNameserverList:
112 iNetwork.addNameserver(nameserver)
116 iNetwork.addNameserver([0,0,0,0])
121 print "currentIndex:", self["config"].getCurrentIndex()
123 index = self["config"].getCurrentIndex()
124 if index < len(self.nameservers):
125 iNetwork.removeNameserver(self.nameservers[index])
129 class AdapterSetup(Screen, ConfigListScreen):
130 def __init__(self, session, iface,essid=None, aplist=None):
131 Screen.__init__(self, session)
132 self.session = session
133 iNetwork.getInterfaces()
136 ## FIXME , workaround against current wizzard not able to send arguments
144 if self.iface == 'wlan0':
145 from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan
146 self.ws = wpaSupplicant()
148 list.append(_("WEP"))
149 list.append(_("WPA"))
150 list.append(_("WPA2"))
151 if self.aplist is not None:
152 self.nwlist = self.aplist
153 self.nwlist.sort(key = lambda x: x[0])
155 if iNetwork.getAdapterAttribute('wlan0', 'up') is True:
158 self.w = Wlan('wlan0')
159 aps = self.w.getNetworkList()
161 print "[Wlan.py] got Accespoints!"
166 a['essid'] = a['bssid']
167 self.nwlist.append( a['essid'])
168 self.nwlist.sort(key = lambda x: x[0])
170 self.nwlist.append("No Networks found")
172 self.nwlist.append("No Networks found")
174 wsconfig = self.ws.loadConfig()
175 config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = self.essid or wsconfig['ssid'] ))
176 config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = wsconfig['encryption'] ))
177 config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = wsconfig['encryption_type'] ))
178 config.plugins.wlan.encryption.psk = NoSave(ConfigText(default = wsconfig['key'], fixed_size = False,visible_width = 30))
179 #self.ws.loadConfig()
181 self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
182 self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=True))
183 self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
184 self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
185 self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
186 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
187 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
188 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
190 self["actions"] = ActionMap(["SetupActions","ShortcutActions"],
193 "cancel": self.cancel,
195 "blue": self.KeyBlue,
199 ConfigListScreen.__init__(self, self.list)
201 self.onLayoutFinish.append(self.layoutFinished)
203 self["DNS1text"] = Label(_("Primary DNS"))
204 self["DNS2text"] = Label(_("Secondary DNS"))
205 self["DNS1"] = Label()
206 self["DNS2"] = Label()
208 self["introduction"] = Label(_("Current settings:"))
210 self["IPtext"] = Label(_("IP Address"))
211 self["Netmasktext"] = Label(_("Netmask"))
212 self["Gatewaytext"] = Label(_("Gateway"))
215 self["Mask"] = Label()
216 self["Gateway"] = Label()
218 self["BottomBG"] = Pixmap()
219 self["Adaptertext"] = Label(_("Network:"))
220 self["Adapter"] = Label()
221 self["introduction2"] = Label(_("Press OK to activate the settings."))
222 self["ButtonRed"] = Pixmap()
223 self["ButtonRedtext"] = Label(_("Close"))
224 self["ButtonBlue"] = Pixmap()
225 self["ButtonBluetext"] = Label(_("Edit DNS"))
227 def layoutFinished(self):
228 self["DNS1"].setText(self.primaryDNS.getText())
229 self["DNS2"].setText(self.secondaryDNS.getText())
230 if self.ipConfigEntry.getText() is not None:
231 self["IP"].setText(self.ipConfigEntry.getText())
233 self["IP"].setText([0,0,0,0])
234 self["Mask"].setText(self.netmaskConfigEntry.getText())
235 self["Gateway"].setText(self.gatewayConfigEntry.getText())
236 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
238 def createSetup(self):
241 self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
242 self.list.append(self.dhcpEntry)
243 if not self.dhcpConfigEntry.value:
244 self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
245 self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
246 self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry))
247 if self.hasGatewayConfigEntry.value:
248 self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
251 self.extendedSetup = None
252 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
253 callFnc = p.__call__["ifaceSupported"](self.iface)
254 if callFnc is not None:
255 self.extended = callFnc
257 if p.__call__.has_key("configStrings"):
258 self.configStrings = p.__call__["configStrings"]
260 self.configStrings = None
262 self.list.append(getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid))
263 self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
264 self.list.append(self.encryptionEnabled)
266 if config.plugins.wlan.encryption.enabled.value:
267 self.list.append(getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type))
268 self.list.append(getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk))
270 self["config"].list = self.list
271 self["config"].l.setList(self.list)
274 self.session.open(NameserverSetup)
277 print self["config"].getCurrent()
278 if self["config"].getCurrent() == self.dhcpEntry:
282 ConfigListScreen.keyLeft(self)
286 ConfigListScreen.keyRight(self)
290 selection = self["config"].getCurrent()
291 if selection == self.extendedSetup:
292 self.extended(self.session, self.iface)
294 iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
295 iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
296 iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
297 if self.hasGatewayConfigEntry.value:
298 iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
300 iNetwork.removeAdapterAttribute(self.iface, "gateway")
302 if self.extended is not None and self.configStrings is not None:
303 iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
304 self.ws.writeConfig()
306 iNetwork.deactivateNetworkConfig()
307 iNetwork.writeNetworkConfig()
308 iNetwork.activateNetworkConfig()
312 iNetwork.getInterfaces()
319 class AdapterSetupConfiguration(Screen):
320 def __init__(self, session,iface):
321 Screen.__init__(self, session)
323 self.session = session
324 self.mainmenu = self.genMainMenu()
325 self["menulist"] = MenuList(self.mainmenu)
326 self["description"] = Label()
327 self["IFtext"] = Label()
329 self["BottomBG"] = Label()
330 self["Statustext"] = Label()
331 self["statuspic"] = MultiPixmap()
332 self["statuspic"].hide()
333 self["BottomBG"] = Pixmap()
334 self["ButtonRed"] = Pixmap()
335 self["ButtonRedtext"] = Label(_("Close"))
337 self.oktext = _("Press OK on your remote control to continue.")
338 self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
339 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.")
341 self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
352 iNetwork.getInterfaces()
353 self.onLayoutFinish.append(self.layoutFinished)
354 self.updateStatusbar()
357 if self["menulist"].getCurrent()[1] == 'edit':
358 if self.iface == 'wlan0':
359 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
360 ifobj = Wireless(self.iface) # a Wireless NIC Object
361 self.wlanresponse = ifobj.getStatistics()
362 if self.wlanresponse[0] != 19: # Wlan Interface found.
363 self.session.open(AdapterSetup,self.iface)
365 # Display Wlan not available Message
366 self.showErrorMessage()
368 self.session.open(AdapterSetup,self.iface)
369 if self["menulist"].getCurrent()[1] == 'test':
370 self.session.open(NetworkAdapterTest,self.iface)
371 if self["menulist"].getCurrent()[1] == 'dns':
372 self.session.open(NameserverSetup)
373 if self["menulist"].getCurrent()[1] == 'scanwlan':
374 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
375 ifobj = Wireless(self.iface) # a Wireless NIC Object
376 self.wlanresponse = ifobj.getStatistics()
377 if self.wlanresponse[0] != 19:
378 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
379 self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
381 # Display Wlan not available Message
382 self.showErrorMessage()
383 if self["menulist"].getCurrent()[1] == 'wlanstatus':
384 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
385 ifobj = Wireless(self.iface) # a Wireless NIC Object
386 self.wlanresponse = ifobj.getStatistics()
387 if self.wlanresponse[0] != 19:
388 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
389 self.session.open(WlanStatus,self.iface)
391 # Display Wlan not available Message
392 self.showErrorMessage()
393 if self["menulist"].getCurrent()[1] == 'lanrestart':
394 self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
395 if self["menulist"].getCurrent()[1] == 'enablewlan':
396 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") )
397 if self["menulist"].getCurrent()[1] == 'enablelan':
398 self.session.openWithCallback(self.enableLan, MessageBox, (_("Are you sure you want to enable your local network?\n\n") + self.oktext ) )
399 if self["menulist"].getCurrent()[1] == 'openwizard':
400 from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard
401 self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard)
404 self["menulist"].up()
405 self.loadDescription()
408 self["menulist"].down()
409 self.loadDescription()
412 self["menulist"].pageUp()
413 self.loadDescription()
416 self["menulist"].pageDown()
417 self.loadDescription()
419 def layoutFinished(self):
421 self["menulist"].moveToIndex(idx)
422 self.loadDescription()
424 def loadDescription(self):
425 if self["menulist"].getCurrent()[1] == 'edit':
426 self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
427 if self["menulist"].getCurrent()[1] == 'test':
428 self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
429 if self["menulist"].getCurrent()[1] == 'enablelan':
430 self["description"].setText(_("Enable the local network of your Dreambox.\n\n" ) + self.oktext )
431 if self["menulist"].getCurrent()[1] == 'dns':
432 self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
433 if self["menulist"].getCurrent()[1] == 'scanwlan':
434 self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your WLAN USB Stick\n" ) + self.oktext )
435 if self["menulist"].getCurrent()[1] == 'wlanstatus':
436 self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
437 if self["menulist"].getCurrent()[1] == 'lanrestart':
438 self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
439 if self["menulist"].getCurrent()[1] == 'enablewlan':
440 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 )
441 if self["menulist"].getCurrent()[1] == 'openwizard':
442 self["description"].setText(_("Use the Networkwizard to configure your Network\n" ) + self.oktext )
444 def updateStatusbar(self):
445 self["IFtext"].setText(_("Network:"))
446 self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
447 self["Statustext"].setText(_("Link:"))
449 if self.iface == 'wlan0':
451 from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
453 stats = w.getStatus()
454 if stats['BSSID'] == "00:00:00:00:00:00":
455 self["statuspic"].setPixmapNum(1)
457 self["statuspic"].setPixmapNum(0)
458 self["statuspic"].show()
460 self["statuspic"].setPixmapNum(1)
461 self["statuspic"].show()
463 self.getLinkState(self.iface)
468 def genMainMenu(self):
470 menu.append((_("Adapter settings"), "edit"))
471 menu.append((_("Nameserver settings"), "dns"))
472 menu.append((_("Network test"), "test"))
473 menu.append((_("Restart network"), "lanrestart"))
476 self.extendedSetup = None
477 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
478 callFnc = p.__call__["ifaceSupported"](self.iface)
479 if callFnc is not None:
480 menu.append((_("Scan Wireless Networks"), "scanwlan"))
481 menu.append((_("Show WLAN Status"), "wlanstatus"))
482 menu.append((_("Enable LAN"), "enablelan"))
483 if callFnc is None and iNetwork.ifaces.has_key('wlan0') is False:
484 menu.append((_("Enable WLAN"), "enablewlan"))
485 if callFnc is None and iNetwork.ifaces.has_key('wlan0') is True:
486 menu.append((_("Enable LAN"), "enablelan"))
488 if os.path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
489 menu.append((_("NetworkWizard"), "openwizard"));
492 def AdapterSetupClosed(self, *ret):
493 self.mainmenu = self.genMainMenu()
494 self["menulist"].l.setList(self.mainmenu)
495 self.updateStatusbar()
497 def WlanScanClosed(self,*ret):
498 if ret[0] is not None:
499 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, 'wlan0',ret[0],ret[1])
501 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, 'wlan0',None,ret[0])
503 def enableWlan(self, ret = False):
505 iNetwork.resetNetworkConfig('wlan')
506 iNetwork.getInterfaces()
507 if iNetwork.getAdapterAttribute('wlan0', 'up') is True:
510 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
512 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
514 self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
516 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"))
518 def enableLan(self, ret = False):
520 iNetwork.resetNetworkConfig('lan')
521 iNetwork.getInterfaces()
522 if iNetwork.getAdapterAttribute('eth0', 'up') is True:
524 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, 'eth0')
526 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"))
528 def restartLan(self, ret = False):
530 iNetwork.restartNetwork()
532 def restartDreambox(self, ret = False):
534 TryQuitMainloop(self.session,2)
536 def getLinkState(self,iface):
537 iNetwork.getLinkState(iface,self.dataAvail)
539 def dataAvail(self,data):
540 self.output = data.strip()
541 result = self.output.split('\n')
542 pattern = re.compile("Link detected: yes")
544 if re.search(pattern, item):
545 self["statuspic"].setPixmapNum(0)
547 self["statuspic"].setPixmapNum(1)
548 self["statuspic"].show()
550 def showErrorMessage(self):
551 self.session.open(MessageBox, self.errortext, type = MessageBox.TYPE_INFO,timeout = 10 )
554 class NetworkAdapterTest(Screen):
555 def __init__(self, session,iface):
556 Screen.__init__(self, session)
558 iNetwork.getInterfaces()
561 self["updown_actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
565 "up": lambda: self.updownhandler('up'),
566 "down": lambda: self.updownhandler('down'),
570 self["shortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
575 self["infoshortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
577 "red": self.closeInfo,
578 "back": self.closeInfo,
580 self["shortcutsgreen"] = ActionMap(["ShortcutActions"],
582 "green": self.KeyGreen,
584 self["shortcutsgreen_restart"] = ActionMap(["ShortcutActions"],
586 "green": self.KeyGreenRestart,
588 self["shortcutsyellow"] = ActionMap(["ShortcutActions"],
590 "yellow": self.KeyYellow,
593 self["shortcutsgreen_restart"].setEnabled(False)
594 self["updown_actions"].setEnabled(False)
595 self["infoshortcuts"].setEnabled(False)
596 self.onClose.append(self.delTimer)
597 self.onLayoutFinish.append(self.layoutFinished)
598 self.steptimer = False
600 self.activebutton = 0
601 self.nextStepTimer = eTimer()
602 self.nextStepTimer.callback.append(self.nextStepTimerFire)
605 self["shortcuts"].setEnabled(True)
606 self["infoshortcuts"].setEnabled(False)
607 self["InfoText"].hide()
608 self["InfoTextBorder"].hide()
609 self["ButtonRedtext"].setText(_("Close"))
613 del self.nextStepTimer
615 def nextStepTimerFire(self):
616 self.nextStepTimer.stop()
617 self.steptimer = False
620 def updownhandler(self,direction):
621 if direction == 'up':
622 if self.activebutton >=2:
623 self.activebutton -= 1
625 self.activebutton = 6
626 self.setActiveButton(self.activebutton)
627 if direction == 'down':
628 if self.activebutton <=5:
629 self.activebutton += 1
631 self.activebutton = 1
632 self.setActiveButton(self.activebutton)
634 def setActiveButton(self,button):
636 self["EditSettingsButton"].setPixmapNum(0)
637 self["EditSettings_Text"].setForegroundColorNum(0)
638 self["NetworkInfo"].setPixmapNum(0)
639 self["NetworkInfo_Text"].setForegroundColorNum(1)
640 self["AdapterInfo"].setPixmapNum(1) # active
641 self["AdapterInfo_Text"].setForegroundColorNum(2) # active
643 self["AdapterInfo_Text"].setForegroundColorNum(1)
644 self["AdapterInfo"].setPixmapNum(0)
645 self["DhcpInfo"].setPixmapNum(0)
646 self["DhcpInfo_Text"].setForegroundColorNum(1)
647 self["NetworkInfo"].setPixmapNum(1) # active
648 self["NetworkInfo_Text"].setForegroundColorNum(2) # active
650 self["NetworkInfo"].setPixmapNum(0)
651 self["NetworkInfo_Text"].setForegroundColorNum(1)
652 self["IPInfo"].setPixmapNum(0)
653 self["IPInfo_Text"].setForegroundColorNum(1)
654 self["DhcpInfo"].setPixmapNum(1) # active
655 self["DhcpInfo_Text"].setForegroundColorNum(2) # active
657 self["DhcpInfo"].setPixmapNum(0)
658 self["DhcpInfo_Text"].setForegroundColorNum(1)
659 self["DNSInfo"].setPixmapNum(0)
660 self["DNSInfo_Text"].setForegroundColorNum(1)
661 self["IPInfo"].setPixmapNum(1) # active
662 self["IPInfo_Text"].setForegroundColorNum(2) # active
664 self["IPInfo"].setPixmapNum(0)
665 self["IPInfo_Text"].setForegroundColorNum(1)
666 self["EditSettingsButton"].setPixmapNum(0)
667 self["EditSettings_Text"].setForegroundColorNum(0)
668 self["DNSInfo"].setPixmapNum(1) # active
669 self["DNSInfo_Text"].setForegroundColorNum(2) # active
671 self["DNSInfo"].setPixmapNum(0)
672 self["DNSInfo_Text"].setForegroundColorNum(1)
673 self["EditSettingsButton"].setPixmapNum(1) # active
674 self["EditSettings_Text"].setForegroundColorNum(2) # active
675 self["AdapterInfo"].setPixmapNum(0)
676 self["AdapterInfo_Text"].setForegroundColorNum(1)
695 self.steptimer = True
696 self.nextStepTimer.start(3000)
699 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
700 self["Adapter"].setForegroundColorNum(2)
701 self["Adaptertext"].setForegroundColorNum(1)
702 self["AdapterInfo_Text"].setForegroundColorNum(1)
703 self["AdapterInfo_OK"].show()
704 self.steptimer = True
705 self.nextStepTimer.start(3000)
708 self["Networktext"].setForegroundColorNum(1)
709 self.getLinkState(self.iface)
710 self["NetworkInfo_Text"].setForegroundColorNum(1)
711 self.steptimer = True
712 self.nextStepTimer.start(3000)
715 self["Dhcptext"].setForegroundColorNum(1)
716 if iNetwork.getAdapterAttribute(self.iface, 'dhcp') is True:
717 self["Dhcp"].setForegroundColorNum(2)
718 self["Dhcp"].setText(_("enabled"))
719 self["DhcpInfo_Check"].setPixmapNum(0)
721 self["Dhcp"].setForegroundColorNum(1)
722 self["Dhcp"].setText(_("disabled"))
723 self["DhcpInfo_Check"].setPixmapNum(1)
724 self["DhcpInfo_Check"].show()
725 self["DhcpInfo_Text"].setForegroundColorNum(1)
726 self.steptimer = True
727 self.nextStepTimer.start(3000)
730 self["IPtext"].setForegroundColorNum(1)
731 ret = iNetwork.checkNetworkState()
733 self["IP"].setForegroundColorNum(2)
734 self["IP"].setText(_("confirmed"))
735 self["IPInfo_Check"].setPixmapNum(0)
737 self["IP"].setForegroundColorNum(1)
738 self["IP"].setText(_("unconfirmed"))
739 self["IPInfo_Check"].setPixmapNum(1)
740 self["IPInfo_Check"].show()
741 self["IPInfo_Text"].setForegroundColorNum(1)
742 self.steptimer = True
743 self.nextStepTimer.start(3000)
746 self.steptimer = False
747 self.nextStepTimer.stop()
748 self["DNStext"].setForegroundColorNum(1)
749 ret = iNetwork.checkDNSLookup()
751 self["DNS"].setForegroundColorNum(2)
752 self["DNS"].setText(_("confirmed"))
753 self["DNSInfo_Check"].setPixmapNum(0)
755 self["DNS"].setForegroundColorNum(1)
756 self["DNS"].setText(_("unconfirmed"))
757 self["DNSInfo_Check"].setPixmapNum(1)
758 self["DNSInfo_Check"].show()
759 self["DNSInfo_Text"].setForegroundColorNum(1)
761 self["EditSettings_Text"].show()
762 self["EditSettingsButton"].setPixmapNum(1)
763 self["EditSettings_Text"].setForegroundColorNum(2) # active
764 self["EditSettingsButton"].show()
765 self["ButtonYellow_Check"].setPixmapNum(1)
766 self["ButtonGreentext"].setText(_("Restart test"))
767 self["ButtonGreen_Check"].setPixmapNum(0)
768 self["shortcutsgreen"].setEnabled(False)
769 self["shortcutsgreen_restart"].setEnabled(True)
770 self["shortcutsyellow"].setEnabled(False)
771 self["updown_actions"].setEnabled(True)
772 self.activebutton = 6
775 self["shortcutsgreen"].setEnabled(False)
776 self["shortcutsyellow"].setEnabled(True)
777 self["updown_actions"].setEnabled(False)
778 self["ButtonYellow_Check"].setPixmapNum(0)
779 self["ButtonGreen_Check"].setPixmapNum(1)
780 self.steptimer = True
781 self.nextStepTimer.start(1000)
783 def KeyGreenRestart(self):
785 self.layoutFinished()
786 self["Adapter"].setText((""))
787 self["Network"].setText((""))
788 self["Dhcp"].setText((""))
789 self["IP"].setText((""))
790 self["DNS"].setText((""))
791 self["AdapterInfo_Text"].setForegroundColorNum(0)
792 self["NetworkInfo_Text"].setForegroundColorNum(0)
793 self["DhcpInfo_Text"].setForegroundColorNum(0)
794 self["IPInfo_Text"].setForegroundColorNum(0)
795 self["DNSInfo_Text"].setForegroundColorNum(0)
796 self["shortcutsgreen_restart"].setEnabled(False)
797 self["shortcutsgreen"].setEnabled(False)
798 self["shortcutsyellow"].setEnabled(True)
799 self["updown_actions"].setEnabled(False)
800 self["ButtonYellow_Check"].setPixmapNum(0)
801 self["ButtonGreen_Check"].setPixmapNum(1)
802 self.steptimer = True
803 self.nextStepTimer.start(1000)
806 self["infoshortcuts"].setEnabled(True)
807 self["shortcuts"].setEnabled(False)
808 if self.activebutton == 1: # Adapter Check
809 self["InfoText"].setText(_("This test detects your configured LAN-Adapter."))
810 self["InfoTextBorder"].show()
811 self["InfoText"].show()
812 self["ButtonRedtext"].setText(_("Back"))
813 if self.activebutton == 2: #LAN Check
814 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"))
815 self["InfoTextBorder"].show()
816 self["InfoText"].show()
817 self["ButtonRedtext"].setText(_("Back"))
818 if self.activebutton == 3: #DHCP Check
819 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."))
820 self["InfoTextBorder"].show()
821 self["InfoText"].show()
822 self["ButtonRedtext"].setText(_("Back"))
823 if self.activebutton == 4: # IP Check
824 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"))
825 self["InfoTextBorder"].show()
826 self["InfoText"].show()
827 self["ButtonRedtext"].setText(_("Back"))
828 if self.activebutton == 5: # DNS Check
829 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"))
830 self["InfoTextBorder"].show()
831 self["InfoText"].show()
832 self["ButtonRedtext"].setText(_("Back"))
833 if self.activebutton == 6: # Edit Settings
834 self.session.open(AdapterSetup,self.iface)
838 self["shortcutsgreen_restart"].setEnabled(True)
839 self["shortcutsgreen"].setEnabled(False)
840 self["shortcutsyellow"].setEnabled(False)
841 self["ButtonGreentext"].setText(_("Restart test"))
842 self["ButtonYellow_Check"].setPixmapNum(1)
843 self["ButtonGreen_Check"].setPixmapNum(0)
844 self.steptimer = False
845 self.nextStepTimer.stop()
847 def layoutFinished(self):
848 self["shortcutsyellow"].setEnabled(False)
849 self["AdapterInfo_OK"].hide()
850 self["NetworkInfo_Check"].hide()
851 self["DhcpInfo_Check"].hide()
852 self["IPInfo_Check"].hide()
853 self["DNSInfo_Check"].hide()
854 self["EditSettings_Text"].hide()
855 self["EditSettingsButton"].hide()
856 self["InfoText"].hide()
857 self["InfoTextBorder"].hide()
860 self["Adaptertext"] = MultiColorLabel(_("LAN Adapter"))
861 self["Adapter"] = MultiColorLabel()
862 self["AdapterInfo"] = MultiPixmap()
863 self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info"))
864 self["AdapterInfo_OK"] = Pixmap()
866 if self.iface == 'wlan0':
867 self["Networktext"] = MultiColorLabel(_("Wireless Network"))
869 self["Networktext"] = MultiColorLabel(_("Local Network"))
871 self["Network"] = MultiColorLabel()
872 self["NetworkInfo"] = MultiPixmap()
873 self["NetworkInfo_Text"] = MultiColorLabel(_("Show Info"))
874 self["NetworkInfo_Check"] = MultiPixmap()
876 self["Dhcptext"] = MultiColorLabel(_("DHCP"))
877 self["Dhcp"] = MultiColorLabel()
878 self["DhcpInfo"] = MultiPixmap()
879 self["DhcpInfo_Text"] = MultiColorLabel(_("Show Info"))
880 self["DhcpInfo_Check"] = MultiPixmap()
882 self["IPtext"] = MultiColorLabel(_("IP Address"))
883 self["IP"] = MultiColorLabel()
884 self["IPInfo"] = MultiPixmap()
885 self["IPInfo_Text"] = MultiColorLabel(_("Show Info"))
886 self["IPInfo_Check"] = MultiPixmap()
888 self["DNStext"] = MultiColorLabel(_("Nameserver"))
889 self["DNS"] = MultiColorLabel()
890 self["DNSInfo"] = MultiPixmap()
891 self["DNSInfo_Text"] = MultiColorLabel(_("Show Info"))
892 self["DNSInfo_Check"] = MultiPixmap()
894 self["EditSettings_Text"] = MultiColorLabel(_("Edit settings"))
895 self["EditSettingsButton"] = MultiPixmap()
897 self["ButtonRedtext"] = Label(_("Close"))
898 self["ButtonRed"] = Pixmap()
900 self["ButtonGreentext"] = Label(_("Start test"))
901 self["ButtonGreen_Check"] = MultiPixmap()
903 self["ButtonYellowtext"] = Label(_("Stop test"))
904 self["ButtonYellow_Check"] = MultiPixmap()
906 self["InfoTextBorder"] = Pixmap()
907 self["InfoText"] = Label()
909 def getLinkState(self,iface):
912 from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
914 stats = w.getStatus()
915 if stats['BSSID'] == "00:00:00:00:00:00":
916 self["Network"].setForegroundColorNum(1)
917 self["Network"].setText(_("disconnected"))
918 self["NetworkInfo_Check"].setPixmapNum(1)
919 self["NetworkInfo_Check"].show()
921 self["Network"].setForegroundColorNum(2)
922 self["Network"].setText(_("connected"))
923 self["NetworkInfo_Check"].setPixmapNum(0)
924 self["NetworkInfo_Check"].show()
926 self["Network"].setForegroundColorNum(1)
927 self["Network"].setText(_("disconnected"))
928 self["NetworkInfo_Check"].setPixmapNum(1)
929 self["NetworkInfo_Check"].show()
931 iNetwork.getLinkState(iface,self.dataAvail)
933 def dataAvail(self,data):
934 self.output = data.strip()
935 result = self.output.split('\n')
936 pattern = re.compile("Link detected: yes")
938 if re.search(pattern, item):
939 self["Network"].setForegroundColorNum(2)
940 self["Network"].setText(_("connected"))
941 self["NetworkInfo_Check"].setPixmapNum(0)
943 self["Network"].setForegroundColorNum(1)
944 self["Network"].setText(_("disconnected"))
945 self["NetworkInfo_Check"].setPixmapNum(1)
946 self["NetworkInfo_Check"].show()