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
9 from Components.Label import Label,MultiColorLabel
10 from Components.Pixmap import Pixmap,MultiPixmap
11 from Components.MenuList import MenuList
12 from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigText, ConfigSelection, getConfigListEntry
13 from Components.PluginComponent import plugins
14 from Plugins.Plugin import PluginDescriptor
15 from enigma import eTimer
16 from os import path as os_path
17 from re import compile as re_compile, search as re_search
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):
46 if len(self.adapters) == 1:
49 def NetworkFallback(self):
50 if iNetwork.configuredInterfaces.has_key('wlan0') is True:
51 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
52 if iNetwork.configuredInterfaces.has_key('ath0') 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')
60 elif iNetwork.configuredInterfaces.has_key('ath0') is True:
61 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'ath0')
63 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'eth0')
65 class NameserverSetup(Screen, ConfigListScreen):
66 def __init__(self, session):
67 Screen.__init__(self, session)
68 iNetwork.getInterfaces()
69 self.backupNameserverList = iNetwork.getNameserverList()[:]
70 print "backup-list:", self.backupNameserverList
72 self["ButtonGreentext"] = Label(_("Add"))
73 self["ButtonYellowtext"] = Label(_("Delete"))
74 self["ButtonRedtext"] = Label(_("Close"))
75 self["introduction"] = Label(_("Press OK to activate the settings."))
78 self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
81 "cancel": self.cancel,
88 ConfigListScreen.__init__(self, self.list)
91 def createConfig(self):
92 self.nameservers = iNetwork.getNameserverList()
93 self.nameserverEntries = []
95 for nameserver in self.nameservers:
96 self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver)))
98 def createSetup(self):
101 for i in range(len(self.nameserverEntries)):
102 self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
104 self["config"].list = self.list
105 self["config"].l.setList(self.list)
108 iNetwork.clearNameservers()
109 for nameserver in self.nameserverEntries:
110 iNetwork.addNameserver(nameserver.value)
111 iNetwork.writeNameserverConfig()
118 iNetwork.clearNameservers()
119 print "backup-list:", self.backupNameserverList
120 for nameserver in self.backupNameserverList:
121 iNetwork.addNameserver(nameserver)
125 iNetwork.addNameserver([0,0,0,0])
130 print "currentIndex:", self["config"].getCurrentIndex()
132 index = self["config"].getCurrentIndex()
133 if index < len(self.nameservers):
134 iNetwork.removeNameserver(self.nameservers[index])
138 class AdapterSetup(Screen, ConfigListScreen):
139 def __init__(self, session, iface,essid=None, aplist=None):
140 Screen.__init__(self, session)
141 self.session = session
146 iNetwork.getInterfaces()
148 if self.iface == "wlan0" or self.iface == "ath0" :
149 from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan
150 self.ws = wpaSupplicant()
152 list.append(_("WEP"))
153 list.append(_("WPA"))
154 list.append(_("WPA2"))
155 if self.aplist is not None:
156 self.nwlist = self.aplist
157 self.nwlist.sort(key = lambda x: x[0])
163 self.w = Wlan(self.iface)
164 self.aps = self.w.getNetworkList()
165 if self.aps is not None:
166 print "[Wlan.py] got Accespoints!"
171 a['essid'] = a['bssid']
172 self.nwlist.append( a['essid'])
173 self.nwlist.sort(key = lambda x: x[0])
175 self.nwlist.append("No Networks found")
177 wsconfig = self.ws.loadConfig()
178 default = self.essid or wsconfig['ssid']
179 if default not in self.nwlist:
180 self.nwlist.append(default)
181 config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = default ))
182 config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = wsconfig['encryption'] ))
183 config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = wsconfig['encryption_type'] ))
184 config.plugins.wlan.encryption.psk = NoSave(ConfigText(default = wsconfig['key'], fixed_size = False,visible_width = 30))
186 self.activateInterfaceEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "up") or False))
187 self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
188 self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
189 self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
190 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
191 self.dhcpdefault=True
193 self.dhcpdefault=False
194 self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=self.dhcpdefault or False))
195 self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
196 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
197 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
198 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
200 self["actions"] = ActionMap(["SetupActions","ShortcutActions"],
203 "cancel": self.cancel,
205 "blue": self.KeyBlue,
209 ConfigListScreen.__init__(self, self.list)
211 self.onLayoutFinish.append(self.layoutFinished)
213 self["DNS1text"] = Label(_("Primary DNS"))
214 self["DNS2text"] = Label(_("Secondary DNS"))
215 self["DNS1"] = Label()
216 self["DNS2"] = Label()
218 self["introduction"] = Label(_("Current settings:"))
220 self["IPtext"] = Label(_("IP Address"))
221 self["Netmasktext"] = Label(_("Netmask"))
222 self["Gatewaytext"] = Label(_("Gateway"))
225 self["Mask"] = Label()
226 self["Gateway"] = Label()
228 self["BottomBG"] = Pixmap()
229 self["Adaptertext"] = Label(_("Network:"))
230 self["Adapter"] = Label()
231 self["introduction2"] = Label(_("Press OK to activate the settings."))
232 self["ButtonRed"] = Pixmap()
233 self["ButtonRedtext"] = Label(_("Close"))
234 self["ButtonBlue"] = Pixmap()
235 self["ButtonBluetext"] = Label(_("Edit DNS"))
237 def layoutFinished(self):
238 self["DNS1"].setText(self.primaryDNS.getText())
239 self["DNS2"].setText(self.secondaryDNS.getText())
240 if self.ipConfigEntry.getText() is not None:
241 self["IP"].setText(self.ipConfigEntry.getText())
243 self["IP"].setText([0,0,0,0])
244 self["Mask"].setText(self.netmaskConfigEntry.getText())
245 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
246 self["Gateway"].setText(self.gatewayConfigEntry.getText())
248 self["Gateway"].hide()
249 self["Gatewaytext"].hide()
250 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
253 def createSetup(self):
255 self.InterfaceEntry = getConfigListEntry(_("Use Interface"), self.activateInterfaceEntry)
256 self.list.append(self.InterfaceEntry)
257 if self.activateInterfaceEntry.value:
258 self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
259 self.list.append(self.dhcpEntry)
260 if not self.dhcpConfigEntry.value:
261 self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
262 self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
263 self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry))
264 if self.hasGatewayConfigEntry.value:
265 self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
267 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
268 callFnc = p.__call__["ifaceSupported"](self.iface)
269 if callFnc is not None:
270 self.extended = callFnc
271 if p.__call__.has_key("configStrings"):
272 self.configStrings = p.__call__["configStrings"]
274 self.configStrings = None
276 self.list.append(getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid))
277 self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
278 self.list.append(self.encryptionEnabled)
280 if config.plugins.wlan.encryption.enabled.value:
281 self.list.append(getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type))
282 self.list.append(getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk))
284 self["config"].list = self.list
285 self["config"].l.setList(self.list)
288 self.session.openWithCallback(self.NameserverSetupClosed, NameserverSetup)
291 print self["config"].getCurrent()
292 if self["config"].getCurrent() == self.dhcpEntry:
296 ConfigListScreen.keyLeft(self)
300 ConfigListScreen.keyRight(self)
304 iNetwork.setAdapterAttribute(self.iface, "up", self.activateInterfaceEntry.value)
305 if self.activateInterfaceEntry.value is True:
306 iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
307 iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
308 iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
309 if self.hasGatewayConfigEntry.value:
310 iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
312 iNetwork.removeAdapterAttribute(self.iface, "gateway")
314 if self.extended is not None and self.configStrings is not None:
315 iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
316 self.ws.writeConfig()
318 iNetwork.removeAdapterAttribute(self.iface, "ip")
319 iNetwork.removeAdapterAttribute(self.iface, "netmask")
320 iNetwork.removeAdapterAttribute(self.iface, "gateway")
321 iNetwork.deactivateInterface(self.iface)
323 iNetwork.deactivateNetworkConfig()
324 iNetwork.writeNetworkConfig()
325 iNetwork.activateNetworkConfig()
329 if self.activateInterfaceEntry.value is False:
330 iNetwork.deactivateInterface(self.iface)
331 iNetwork.getInterfaces()
337 def NameserverSetupClosed(self, *ret):
338 iNetwork.loadNameserverConfig()
339 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
340 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
341 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
343 self.layoutFinished()
346 class AdapterSetupConfiguration(Screen):
347 def __init__(self, session,iface):
348 Screen.__init__(self, session)
349 self.session = session
351 self.mainmenu = self.genMainMenu()
352 self["menulist"] = MenuList(self.mainmenu)
353 self["description"] = Label()
354 self["IFtext"] = Label()
356 self["BottomBG"] = Label()
357 self["Statustext"] = Label()
358 self["statuspic"] = MultiPixmap()
359 self["statuspic"].hide()
360 self["BottomBG"] = Pixmap()
361 self["ButtonRed"] = Pixmap()
362 self["ButtonRedtext"] = Label(_("Close"))
364 self.oktext = _("Press OK on your remote control to continue.")
365 self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
366 self.errortext = _("No working wireless interface found.\n Please verify that you have attached a compatible WLAN device or enable you local network interface.")
368 self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
379 iNetwork.getInterfaces()
380 self.onLayoutFinish.append(self.layoutFinished)
381 self.updateStatusbar()
384 print "SELF.iFACE im OK Klick",self.iface
385 print "self.menulist.getCurrent()[1]",self["menulist"].getCurrent()[1]
386 if self["menulist"].getCurrent()[1] == 'edit':
387 if self.iface == 'wlan0' or self.iface == 'ath0':
389 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
390 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
392 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
394 ifobj = Wireless(self.iface) # a Wireless NIC Object
395 self.wlanresponse = ifobj.getStatistics()
396 if self.wlanresponse[0] != 19: # Wlan Interface found.
397 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
399 # Display Wlan not available Message
400 self.showErrorMessage()
402 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
403 if self["menulist"].getCurrent()[1] == 'test':
404 self.session.open(NetworkAdapterTest,self.iface)
405 if self["menulist"].getCurrent()[1] == 'dns':
406 self.session.open(NameserverSetup)
407 if self["menulist"].getCurrent()[1] == 'scanwlan':
409 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
410 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
412 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
414 ifobj = Wireless(self.iface) # a Wireless NIC Object
415 self.wlanresponse = ifobj.getStatistics()
416 if self.wlanresponse[0] != 19:
417 self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
419 # Display Wlan not available Message
420 self.showErrorMessage()
421 if self["menulist"].getCurrent()[1] == 'wlanstatus':
423 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
424 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
426 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
428 ifobj = Wireless(self.iface) # a Wireless NIC Object
429 self.wlanresponse = ifobj.getStatistics()
430 if self.wlanresponse[0] != 19:
431 self.session.open(WlanStatus,self.iface)
433 # Display Wlan not available Message
434 self.showErrorMessage()
435 if self["menulist"].getCurrent()[1] == 'lanrestart':
436 self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
437 if self["menulist"].getCurrent()[1] == 'openwizard':
438 from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard
439 self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard)
442 self["menulist"].up()
443 self.loadDescription()
446 self["menulist"].down()
447 self.loadDescription()
450 self["menulist"].pageUp()
451 self.loadDescription()
454 self["menulist"].pageDown()
455 self.loadDescription()
457 def layoutFinished(self):
459 self["menulist"].moveToIndex(idx)
460 self.loadDescription()
462 def loadDescription(self):
463 if self["menulist"].getCurrent()[1] == 'edit':
464 self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
465 if self["menulist"].getCurrent()[1] == 'test':
466 self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
467 if self["menulist"].getCurrent()[1] == 'dns':
468 self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
469 if self["menulist"].getCurrent()[1] == 'scanwlan':
470 self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your WLAN USB Stick\n" ) + self.oktext )
471 if self["menulist"].getCurrent()[1] == 'wlanstatus':
472 self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
473 if self["menulist"].getCurrent()[1] == 'lanrestart':
474 self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
475 if self["menulist"].getCurrent()[1] == 'openwizard':
476 self["description"].setText(_("Use the Networkwizard to configure your Network\n" ) + self.oktext )
478 def updateStatusbar(self):
479 self["IFtext"].setText(_("Network:"))
480 self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
481 self["Statustext"].setText(_("Link:"))
483 if self.iface == 'wlan0' or self.iface == 'ath0':
485 from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
487 stats = w.getStatus()
488 if stats['BSSID'] == "00:00:00:00:00:00":
489 self["statuspic"].setPixmapNum(1)
491 self["statuspic"].setPixmapNum(0)
492 self["statuspic"].show()
494 self["statuspic"].setPixmapNum(1)
495 self["statuspic"].show()
497 self.getLinkState(self.iface)
502 def genMainMenu(self):
504 menu.append((_("Adapter settings"), "edit"))
505 menu.append((_("Nameserver settings"), "dns"))
506 menu.append((_("Network test"), "test"))
507 menu.append((_("Restart network"), "lanrestart"))
509 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
510 callFnc = p.__call__["ifaceSupported"](self.iface)
511 if callFnc is not None:
512 menu.append((_("Scan Wireless Networks"), "scanwlan"))
513 menu.append((_("Show WLAN Status"), "wlanstatus"))
515 if os_path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
516 menu.append((_("NetworkWizard"), "openwizard"));
519 def AdapterSetupClosed(self, *ret):
520 self.mainmenu = self.genMainMenu()
521 self["menulist"].l.setList(self.mainmenu)
522 iNetwork.getInterfaces()
523 self.updateStatusbar()
525 def WlanScanClosed(self,*ret):
526 if ret[0] is not None:
527 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1])
529 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,None,ret[0])
532 def restartLan(self, ret = False):
534 iNetwork.restartNetwork()
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' or self.iface == 'ath0':
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):
910 if iface == 'wlan0' or iface == 'ath0':
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()