1 from Screen import Screen
2 from Screens.MessageBox import MessageBox
3 from Screens.InputBox import InputBox
4 from Screens.Standby import *
5 from Screens.VirtualKeyBoard import VirtualKeyBoard
6 from Screens.HelpMenu import HelpableScreen
7 from Components.Network import iNetwork
8 from Components.Label import Label,MultiColorLabel
9 from Components.Pixmap import Pixmap,MultiPixmap
10 from Components.MenuList import MenuList
11 from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigText, ConfigPassword, ConfigSelection, getConfigListEntry, ConfigNothing
12 from Components.ConfigList import ConfigListScreen
13 from Components.PluginComponent import plugins
14 from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
15 from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
16 from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE
17 from Tools.LoadPixmap import LoadPixmap
18 from Plugins.Plugin import PluginDescriptor
19 from enigma import eTimer, ePoint, eSize, RT_HALIGN_LEFT, eListboxPythonMultiContent, gFont
20 from os import path as os_path, system as os_system, unlink
21 from re import compile as re_compile, search as re_search
24 class InterfaceList(MenuList):
25 def __init__(self, list, enableWrapAround=False):
26 MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
27 self.l.setFont(0, gFont("Regular", 20))
28 self.l.setItemHeight(30)
30 def InterfaceEntryComponent(index,name,default,active ):
32 res.append(MultiContentEntryText(pos=(80, 5), size=(430, 25), font=0, text=name))
33 num_configured_if = len(iNetwork.getConfiguredAdapters())
34 if num_configured_if >= 2:
36 png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/buttons/button_blue.png"))
38 png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/buttons/button_blue_off.png"))
39 res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 5), size=(25, 25), png = png))
41 png2 = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/lock_on.png"))
43 png2 = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/lock_error.png"))
44 res.append(MultiContentEntryPixmapAlphaTest(pos=(40, 1), size=(25, 25), png = png2))
48 class NetworkAdapterSelection(Screen,HelpableScreen):
49 def __init__(self, session):
50 Screen.__init__(self, session)
51 HelpableScreen.__init__(self)
53 self.wlan_errortext = _("No working wireless network adapter found.\nPlease verify that you have attached a compatible WLAN device and your network is configured correctly.")
54 self.lan_errortext = _("No working local network adapter found.\nPlease verify that you have attached a network cable and your network is configured correctly.")
55 self.oktext = _("Press OK on your remote control to continue.")
56 self.restartLanRef = None
58 self["ButtonBluetext"] = Label(_("Set as default Interface"))
59 self["ButtonBlue"] = Pixmap()
60 self["ButtonRedtext"] = Label(_("Close"))
61 self["introduction"] = Label(_("Press OK to edit the settings."))
63 self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
65 if len(self.adapters) == 0:
66 self.onFirstExecBegin.append(self.NetworkFallback)
68 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
70 "cancel": (self.close, _("exit network interface list")),
71 "ok": (self.okbuttonClick, _("select interface")),
74 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
76 "red": (self.close, _("exit network interface list")),
79 self["DefaultInterfaceAction"] = HelpableActionMap(self, "ColorActions",
81 "blue": (self.setDefaultInterface, [_("Set interface as default Interface"),_("* Only available if more than one interface is active.")] ),
85 self["list"] = InterfaceList(self.list)
88 if len(self.adapters) == 1:
89 self.onFirstExecBegin.append(self.okbuttonClick)
90 self.onClose.append(self.cleanup)
93 iNetwork.getInterfaces()
96 num_configured_if = len(iNetwork.getConfiguredAdapters())
97 if num_configured_if >= 2:
98 self["ButtonBlue"].show()
99 self["ButtonBluetext"].show()
100 self["DefaultInterfaceAction"].setEnabled(True)
102 self["ButtonBlue"].hide()
103 self["ButtonBluetext"].hide()
104 self["DefaultInterfaceAction"].setEnabled(False)
106 if num_configured_if < 2 and os_path.exists("/etc/default_gw"):
107 unlink("/etc/default_gw")
109 if os_path.exists("/etc/default_gw"):
110 fp = file('/etc/default_gw', 'r')
115 if len(self.adapters) == 0: # no interface available => display only eth0
116 self.list.append(InterfaceEntryComponent("eth0",iNetwork.getFriendlyAdapterName('eth0'),True,True ))
118 for x in self.adapters:
119 if x[1] == default_gw:
123 if iNetwork.getAdapterAttribute(x[1], 'up') is True:
127 self.list.append(InterfaceEntryComponent(index = x[1],name = _(x[0]),default=default_int,active=active_int ))
128 self["list"].l.setList(self.list)
130 def setDefaultInterface(self):
131 selection = self["list"].getCurrent()
132 num_if = len(self.list)
133 old_default_gw = None
134 num_configured_if = len(iNetwork.getConfiguredAdapters())
135 if os_path.exists("/etc/default_gw"):
136 fp = open('/etc/default_gw', 'r')
137 old_default_gw = fp.read()
139 if num_configured_if > 1 and (not old_default_gw or old_default_gw != selection[0]):
140 fp = open('/etc/default_gw', 'w+')
141 fp.write(selection[0])
144 elif old_default_gw and num_configured_if < 2:
145 unlink("/etc/default_gw")
148 def okbuttonClick(self):
149 selection = self["list"].getCurrent()
150 if selection is not None:
151 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[0])
153 def AdapterSetupClosed(self, *ret):
154 if len(self.adapters) == 1:
159 def NetworkFallback(self):
160 if iNetwork.configuredNetworkAdapters.has_key('wlan0') is True:
161 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
162 if iNetwork.configuredNetworkAdapters.has_key('ath0') is True:
163 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
165 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.lan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
167 def ErrorMessageClosed(self, *ret):
168 if iNetwork.configuredNetworkAdapters.has_key('wlan0') is True:
169 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'wlan0')
170 elif iNetwork.configuredNetworkAdapters.has_key('ath0') is True:
171 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'ath0')
173 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'eth0')
176 iNetwork.stopLinkStateConsole()
177 iNetwork.stopRestartConsole()
179 def restartLan(self):
180 iNetwork.restartNetwork(self.restartLanDataAvail)
181 self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while we configure your network..."), type = MessageBox.TYPE_INFO, enable_input = False)
183 def restartLanDataAvail(self, data):
185 iNetwork.getInterfaces(self.getInterfacesDataAvail)
187 def getInterfacesDataAvail(self, data):
189 self.restartLanRef.close(True)
191 def restartfinishedCB(self,data):
194 self.session.open(MessageBox, _("Finished configuring your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False)
197 class NameserverSetup(Screen, ConfigListScreen, HelpableScreen):
198 def __init__(self, session):
199 Screen.__init__(self, session)
200 HelpableScreen.__init__(self)
201 self.backupNameserverList = iNetwork.getNameserverList()[:]
202 print "backup-list:", self.backupNameserverList
204 self["ButtonGreentext"] = Label(_("Add"))
205 self["ButtonYellowtext"] = Label(_("Delete"))
206 self["ButtonRedtext"] = Label(_("Close"))
207 self["introduction"] = Label(_("Press OK to activate the settings."))
210 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
212 "cancel": (self.cancel, _("exit nameserver configuration")),
213 "ok": (self.ok, _("activate current configuration")),
216 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
218 "red": (self.cancel, _("exit nameserver configuration")),
219 "green": (self.add, _("add a nameserver entry")),
220 "yellow": (self.remove, _("remove a nameserver entry")),
225 ConfigListScreen.__init__(self, self.list)
228 def createConfig(self):
229 self.nameservers = iNetwork.getNameserverList()
230 self.nameserverEntries = []
232 for nameserver in self.nameservers:
233 self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver)))
235 def createSetup(self):
238 for i in range(len(self.nameserverEntries)):
239 self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
241 self["config"].list = self.list
242 self["config"].l.setList(self.list)
245 iNetwork.clearNameservers()
246 for nameserver in self.nameserverEntries:
247 iNetwork.addNameserver(nameserver.value)
248 iNetwork.writeNameserverConfig()
255 iNetwork.clearNameservers()
256 print "backup-list:", self.backupNameserverList
257 for nameserver in self.backupNameserverList:
258 iNetwork.addNameserver(nameserver)
262 iNetwork.addNameserver([0,0,0,0])
267 print "currentIndex:", self["config"].getCurrentIndex()
269 index = self["config"].getCurrentIndex()
270 if index < len(self.nameservers):
271 iNetwork.removeNameserver(self.nameservers[index])
275 class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
276 def __init__(self, session, networkinfo, essid=None, aplist=None):
277 Screen.__init__(self, session)
278 HelpableScreen.__init__(self)
279 self.session = session
280 if isinstance(networkinfo, (list, tuple)):
281 self.iface = networkinfo[0]
282 self.essid = networkinfo[1]
283 self.aplist = networkinfo[2]
285 self.iface = networkinfo
289 self.applyConfigRef = None
290 self.finished_cb = None
291 self.oktext = _("Press OK on your remote control to continue.")
292 self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
296 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
298 "cancel": (self.cancel, _("exit network adapter setup menu")),
299 "ok": (self.ok, _("select menu entry")),
302 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
304 "red": (self.cancel, _("exit network adapter configuration")),
305 "blue": (self.KeyBlue, _("open nameserver configuration")),
308 self["VirtualKB"] = HelpableActionMap(self, "ColorActions",
310 "green": (self.KeyGreen, [_("open virtual keyboard input help"),_("* Only available when entering hidden SSID or network key")] ),
313 self["actions"] = NumberActionMap(["SetupActions"],
320 ConfigListScreen.__init__(self, self.list,session = self.session)
322 self.onLayoutFinish.append(self.layoutFinished)
323 self.onClose.append(self.cleanup)
325 self["DNS1text"] = Label(_("Primary DNS"))
326 self["DNS2text"] = Label(_("Secondary DNS"))
327 self["DNS1"] = Label()
328 self["DNS2"] = Label()
330 self["introduction"] = Label(_("Current settings:"))
332 self["IPtext"] = Label(_("IP Address"))
333 self["Netmasktext"] = Label(_("Netmask"))
334 self["Gatewaytext"] = Label(_("Gateway"))
337 self["Mask"] = Label()
338 self["Gateway"] = Label()
340 self["BottomBG"] = Pixmap()
341 self["Adaptertext"] = Label(_("Network:"))
342 self["Adapter"] = Label()
343 self["introduction2"] = Label(_("Press OK to activate the settings."))
344 self["ButtonRed"] = Pixmap()
345 self["ButtonRedtext"] = Label(_("Close"))
346 self["ButtonBlue"] = Pixmap()
347 self["ButtonBluetext"] = Label(_("Edit DNS"))
348 self["ButtonGreen"] = Pixmap()
349 self["VKeyIcon"] = Pixmap()
350 self["HelpWindow"] = Pixmap()
352 def layoutFinished(self):
353 self["DNS1"].setText(self.primaryDNS.getText())
354 self["DNS2"].setText(self.secondaryDNS.getText())
355 if self.ipConfigEntry.getText() is not None:
356 if self.ipConfigEntry.getText() == "0.0.0.0":
357 self["IP"].setText(_("N/A"))
359 self["IP"].setText(self.ipConfigEntry.getText())
361 self["IP"].setText(_("N/A"))
362 if self.netmaskConfigEntry.getText() is not None:
363 if self.netmaskConfigEntry.getText() == "0.0.0.0":
364 self["Mask"].setText(_("N/A"))
366 self["Mask"].setText(self.netmaskConfigEntry.getText())
368 self["IP"].setText(_("N/A"))
369 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
370 if self.gatewayConfigEntry.getText() == "0.0.0.0":
371 self["Gateway"].setText(_("N/A"))
373 self["Gateway"].setText(self.gatewayConfigEntry.getText())
375 self["Gateway"].hide()
376 self["Gatewaytext"].hide()
377 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
378 self["ButtonGreen"].hide()
379 self["VKeyIcon"].hide()
380 self["VirtualKB"].setEnabled(False)
381 self["HelpWindow"].hide()
383 def createConfig(self):
384 self.InterfaceEntry = None
385 self.dhcpEntry = None
386 self.gatewayEntry = None
387 self.hiddenSSID = None
389 self.encryptionEnabled = None
390 self.encryptionKey = None
391 self.encryptionType = None
393 self.encryptionlist = None
398 if self.iface == "wlan0" or self.iface == "ath0" :
399 from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan
400 self.w = Wlan(self.iface)
401 self.ws = wpaSupplicant()
402 self.encryptionlist = []
403 self.encryptionlist.append(("WEP", _("WEP")))
404 self.encryptionlist.append(("WPA", _("WPA")))
405 self.encryptionlist.append(("WPA2", _("WPA2")))
406 self.encryptionlist.append(("WPA/WPA2", _("WPA or WPA2")))
408 self.weplist.append("ASCII")
409 self.weplist.append("HEX")
410 if self.aplist is not None:
411 self.nwlist = self.aplist
412 self.nwlist.sort(key = lambda x: x[0])
417 self.aps = self.w.getNetworkList()
418 if self.aps is not None:
419 print "[NetworkSetup.py] got Accespoints!"
424 a['essid'] = a['bssid']
425 self.nwlist.append( a['essid'])
426 self.nwlist.sort(key = lambda x: x[0])
428 self.nwlist.append("No Networks found")
430 self.wsconfig = self.ws.loadConfig()
431 if self.essid is not None: # ssid from wlan scan
432 self.default = self.essid
434 self.default = self.wsconfig['ssid']
436 if "hidden..." not in self.nwlist:
437 self.nwlist.append("hidden...")
438 if self.default not in self.nwlist:
439 self.nwlist.append(self.default)
441 config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = self.default ))
442 config.plugins.wlan.hiddenessid = NoSave(ConfigText(default = self.wsconfig['hiddenessid'], visible_width = 50, fixed_size = False))
444 config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = self.wsconfig['encryption'] ))
445 config.plugins.wlan.encryption.type = NoSave(ConfigSelection(self.encryptionlist, default = self.wsconfig['encryption_type'] ))
446 config.plugins.wlan.encryption.wepkeytype = NoSave(ConfigSelection(self.weplist, default = self.wsconfig['encryption_wepkeytype'] ))
447 config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = self.wsconfig['key'], visible_width = 50, fixed_size = False))
449 self.activateInterfaceEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "up") or False))
450 self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
451 self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
452 self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
453 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
454 self.dhcpdefault=True
456 self.dhcpdefault=False
457 self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=self.dhcpdefault or False))
458 self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
459 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
460 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
461 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
463 def createSetup(self):
465 self.InterfaceEntry = getConfigListEntry(_("Use Interface"), self.activateInterfaceEntry)
467 self.list.append(self.InterfaceEntry)
468 if self.activateInterfaceEntry.value:
469 self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
470 self.list.append(self.dhcpEntry)
471 if not self.dhcpConfigEntry.value:
472 self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
473 self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
474 self.gatewayEntry = getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry)
475 self.list.append(self.gatewayEntry)
476 if self.hasGatewayConfigEntry.value:
477 self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
480 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
481 callFnc = p.__call__["ifaceSupported"](self.iface)
482 if callFnc is not None:
483 if p.__call__.has_key("WlanPluginEntry"): # internally used only for WLAN Plugin
484 self.extended = callFnc
485 if p.__call__.has_key("configStrings"):
486 self.configStrings = p.__call__["configStrings"]
488 self.configStrings = None
489 if config.plugins.wlan.essid.value == 'hidden...':
490 self.wlanSSID = getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid)
491 self.list.append(self.wlanSSID)
492 self.hiddenSSID = getConfigListEntry(_("Hidden network SSID"), config.plugins.wlan.hiddenessid)
493 self.list.append(self.hiddenSSID)
495 self.wlanSSID = getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid)
496 self.list.append(self.wlanSSID)
497 self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
498 self.list.append(self.encryptionEnabled)
500 if config.plugins.wlan.encryption.enabled.value:
501 self.encryptionType = getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type)
502 self.list.append(self.encryptionType)
503 if config.plugins.wlan.encryption.type.value == 'WEP':
504 self.list.append(getConfigListEntry(_("Encryption Keytype"), config.plugins.wlan.encryption.wepkeytype))
505 self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk)
506 self.list.append(self.encryptionKey)
508 self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk)
509 self.list.append(self.encryptionKey)
512 self["config"].list = self.list
513 self["config"].l.setList(self.list)
514 if not self.selectionChanged in self["config"].onSelectionChanged:
515 self["config"].onSelectionChanged.append(self.selectionChanged)
518 self.session.openWithCallback(self.NameserverSetupClosed, NameserverSetup)
521 if self.iface == "wlan0" or self.iface == "ath0" :
522 if self["config"].getCurrent() == self.hiddenSSID:
523 if config.plugins.wlan.essid.value == 'hidden...':
524 self.session.openWithCallback(self.VirtualKeyBoardSSIDCallback, VirtualKeyBoard, title = (_("Enter WLAN network name/SSID:")), text = config.plugins.wlan.essid.value)
525 if self["config"].getCurrent() == self.encryptionKey:
526 self.session.openWithCallback(self.VirtualKeyBoardKeyCallback, VirtualKeyBoard, title = (_("Enter WLAN passphrase/key:")), text = config.plugins.wlan.encryption.psk.value)
528 def VirtualKeyBoardSSIDCallback(self, callback = None):
529 if callback is not None and len(callback):
530 config.plugins.wlan.hiddenessid = NoSave(ConfigText(default = callback, visible_width = 50, fixed_size = False))
533 def VirtualKeyBoardKeyCallback(self, callback = None):
534 if callback is not None and len(callback):
535 config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = callback, visible_width = 50, fixed_size = False))
539 if self["config"].getCurrent() == self.InterfaceEntry:
541 if self["config"].getCurrent() == self.dhcpEntry:
543 if self["config"].getCurrent() == self.gatewayEntry:
545 if self.iface == "wlan0" or self.iface == "ath0" :
546 if self["config"].getCurrent() == self.wlanSSID:
548 if self["config"].getCurrent() == self.encryptionEnabled:
550 if self["config"].getCurrent() == self.encryptionType:
553 ConfigListScreen.keyLeft(self)
557 ConfigListScreen.keyRight(self)
560 def selectionChanged(self):
561 current = self["config"].getCurrent()
562 if current == self.hiddenSSID and config.plugins.wlan.essid.value == 'hidden...':
563 helpwindowpos = self["HelpWindow"].getPosition()
564 if current[1].help_window.instance is not None:
565 current[1].help_window.instance.move(ePoint(helpwindowpos[0],helpwindowpos[1]))
566 self["ButtonGreen"].show()
567 self["VKeyIcon"].show()
568 self["VirtualKB"].setEnabled(True)
569 elif current == self.encryptionKey and config.plugins.wlan.encryption.enabled.value:
570 helpwindowpos = self["HelpWindow"].getPosition()
571 if current[1].help_window.instance is not None:
572 current[1].help_window.instance.move(ePoint(helpwindowpos[0],helpwindowpos[1]))
573 self["ButtonGreen"].show()
574 self["VKeyIcon"].show()
575 self["VirtualKB"].setEnabled(True)
577 self["ButtonGreen"].hide()
578 self["VKeyIcon"].hide()
579 self["VirtualKB"].setEnabled(False)
582 current = self["config"].getCurrent()
583 if current == self.hiddenSSID and config.plugins.wlan.essid.value == 'hidden...':
584 if current[1].help_window.instance is not None:
585 current[1].help_window.instance.hide()
586 elif current == self.encryptionKey and config.plugins.wlan.encryption.enabled.value:
587 if current[1].help_window.instance is not None:
588 current[1].help_window.instance.hide()
589 self.session.openWithCallback(self.applyConfig, MessageBox, (_("Are you sure you want to activate this network configuration?\n\n") + self.oktext ) )
591 def applyConfig(self, ret = False):
593 iNetwork.setAdapterAttribute(self.iface, "up", self.activateInterfaceEntry.value)
594 iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
595 iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
596 iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
597 if self.hasGatewayConfigEntry.value:
598 iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
600 iNetwork.removeAdapterAttribute(self.iface, "gateway")
601 if self.extended is not None and self.configStrings is not None:
602 iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
603 self.ws.writeConfig()
604 if self.activateInterfaceEntry.value is False:
605 iNetwork.deactivateInterface(self.iface)
606 iNetwork.writeNetworkConfig()
607 iNetwork.restartNetwork(self.applyConfigDataAvail)
608 self.applyConfigRef = self.session.openWithCallback(self.applyConfigfinishedCB, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False)
612 def applyConfigDataAvail(self, data):
614 iNetwork.getInterfaces(self.getInterfacesDataAvail)
616 def getInterfacesDataAvail(self, data):
618 self.applyConfigRef.close(True)
620 def applyConfigfinishedCB(self,data):
622 num_configured_if = len(iNetwork.getConfiguredAdapters())
623 if num_configured_if >= 2:
624 self.session.openWithCallback(self.secondIfaceFoundCB, MessageBox, _("Your network configuration has been activated.\nA second configured interface has been found.\n\nDo you want to disable the second network interface?"), default = True)
627 self.session.openWithCallback(lambda x : self.finished_cb(), MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10)
629 self.session.openWithCallback(self.ConfigfinishedCB, MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10)
631 def secondIfaceFoundCB(self,data):
635 configuredInterfaces = iNetwork.getConfiguredAdapters()
636 for interface in configuredInterfaces:
637 if interface == self.iface:
639 iNetwork.setAdapterAttribute(interface, "up", False)
640 iNetwork.deactivateInterface(interface)
641 self.applyConfig(True)
643 def ConfigfinishedCB(self,data):
649 if self.oldInterfaceState is False:
650 iNetwork.deactivateInterface(self.iface,self.deactivateInterfaceCB)
654 def deactivateInterfaceCB(self,data):
657 iNetwork.getInterfaces(self.cancelCB)
659 def cancelCB(self,data):
664 def runAsync(self, finished_cb):
665 self.finished_cb = finished_cb
668 def NameserverSetupClosed(self, *ret):
669 iNetwork.loadNameserverConfig()
670 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
671 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
672 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
674 self.layoutFinished()
677 iNetwork.stopLinkStateConsole()
678 iNetwork.stopDeactivateInterfaceConsole()
681 class AdapterSetupConfiguration(Screen, HelpableScreen):
682 def __init__(self, session,iface):
683 Screen.__init__(self, session)
684 HelpableScreen.__init__(self)
685 self.session = session
687 self.restartLanRef = None
688 self.mainmenu = self.genMainMenu()
689 self["menulist"] = MenuList(self.mainmenu)
690 self["description"] = Label()
691 self["IFtext"] = Label()
693 self["BottomBG"] = Label()
694 self["Statustext"] = Label()
695 self["statuspic"] = MultiPixmap()
696 self["statuspic"].hide()
697 self["BottomBG"] = Pixmap()
698 self["ButtonRed"] = Pixmap()
699 self["ButtonRedtext"] = Label(_("Close"))
701 self.oktext = _("Press OK on your remote control to continue.")
702 self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
703 self.errortext = _("No working wireless network interface found.\n Please verify that you have attached a compatible WLAN device or enable your local network interface.")
705 self["WizardActions"] = HelpableActionMap(self, "WizardActions",
707 "up": (self.up, _("move up to previous entry")),
708 "down": (self.down, _("move down to next entry")),
709 "left": (self.left, _("move up to first entry")),
710 "right": (self.right, _("move down to last entry")),
713 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
715 "cancel": (self.close, _("exit networkadapter setup menu")),
716 "ok": (self.ok, _("select menu entry")),
719 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
721 "red": (self.close, _("exit networkadapter setup menu")),
724 self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
735 iNetwork.getInterfaces(self.updateStatusbar)
736 self.onLayoutFinish.append(self.layoutFinished)
737 self.onClose.append(self.cleanup)
740 if self["menulist"].getCurrent()[1] == 'edit':
741 if self.iface == 'wlan0' or self.iface == 'ath0':
743 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
744 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
746 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
748 ifobj = Wireless(self.iface) # a Wireless NIC Object
749 self.wlanresponse = ifobj.getStatistics()
750 if self.wlanresponse[0] != 19: # Wlan Interface found.
751 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
753 # Display Wlan not available Message
754 self.showErrorMessage()
756 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
757 if self["menulist"].getCurrent()[1] == 'test':
758 self.session.open(NetworkAdapterTest,self.iface)
759 if self["menulist"].getCurrent()[1] == 'dns':
760 self.session.open(NameserverSetup)
761 if self["menulist"].getCurrent()[1] == 'scanwlan':
763 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
764 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
766 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
768 ifobj = Wireless(self.iface) # a Wireless NIC Object
769 self.wlanresponse = ifobj.getStatistics()
770 if self.wlanresponse[0] != 19:
771 self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
773 # Display Wlan not available Message
774 self.showErrorMessage()
775 if self["menulist"].getCurrent()[1] == 'wlanstatus':
777 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
778 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
780 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
782 ifobj = Wireless(self.iface) # a Wireless NIC Object
783 self.wlanresponse = ifobj.getStatistics()
784 if self.wlanresponse[0] != 19:
785 self.session.openWithCallback(self.WlanStatusClosed, WlanStatus,self.iface)
787 # Display Wlan not available Message
788 self.showErrorMessage()
789 if self["menulist"].getCurrent()[1] == 'lanrestart':
790 self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
791 if self["menulist"].getCurrent()[1] == 'openwizard':
792 from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard
793 self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard)
794 if self["menulist"].getCurrent()[1][0] == 'extendedSetup':
795 self.extended = self["menulist"].getCurrent()[1][2]
796 self.extended(self.session, self.iface)
799 self["menulist"].up()
800 self.loadDescription()
803 self["menulist"].down()
804 self.loadDescription()
807 self["menulist"].pageUp()
808 self.loadDescription()
811 self["menulist"].pageDown()
812 self.loadDescription()
814 def layoutFinished(self):
816 self["menulist"].moveToIndex(idx)
817 self.loadDescription()
819 def loadDescription(self):
820 print self["menulist"].getCurrent()[1]
821 if self["menulist"].getCurrent()[1] == 'edit':
822 self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
823 if self["menulist"].getCurrent()[1] == 'test':
824 self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
825 if self["menulist"].getCurrent()[1] == 'dns':
826 self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
827 if self["menulist"].getCurrent()[1] == 'scanwlan':
828 self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your WLAN USB Stick\n" ) + self.oktext )
829 if self["menulist"].getCurrent()[1] == 'wlanstatus':
830 self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
831 if self["menulist"].getCurrent()[1] == 'lanrestart':
832 self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
833 if self["menulist"].getCurrent()[1] == 'openwizard':
834 self["description"].setText(_("Use the Networkwizard to configure your Network\n" ) + self.oktext )
835 if self["menulist"].getCurrent()[1][0] == 'extendedSetup':
836 self["description"].setText(_(self["menulist"].getCurrent()[1][1]) + self.oktext )
838 def updateStatusbar(self, data = None):
839 self["IFtext"].setText(_("Network:"))
840 self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
841 self["Statustext"].setText(_("Link:"))
843 if self.iface == 'wlan0' or self.iface == 'ath0':
845 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
847 self["statuspic"].setPixmapNum(1)
848 self["statuspic"].show()
850 iStatus.getDataForInterface(self.iface,self.getInfoCB)
852 iNetwork.getLinkState(self.iface,self.dataAvail)
857 def genMainMenu(self):
859 menu.append((_("Adapter settings"), "edit"))
860 menu.append((_("Nameserver settings"), "dns"))
861 menu.append((_("Network test"), "test"))
862 menu.append((_("Restart network"), "lanrestart"))
865 self.extendedSetup = None
866 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
867 callFnc = p.__call__["ifaceSupported"](self.iface)
868 if callFnc is not None:
869 self.extended = callFnc
871 if p.__call__.has_key("WlanPluginEntry"): # internally used only for WLAN Plugin
872 menu.append((_("Scan Wireless Networks"), "scanwlan"))
873 if iNetwork.getAdapterAttribute(self.iface, "up"):
874 menu.append((_("Show WLAN Status"), "wlanstatus"))
876 if p.__call__.has_key("menuEntryName"):
877 menuEntryName = p.__call__["menuEntryName"](self.iface)
879 menuEntryName = _('Extended Setup...')
880 if p.__call__.has_key("menuEntryDescription"):
881 menuEntryDescription = p.__call__["menuEntryDescription"](self.iface)
883 menuEntryDescription = _('Extended Networksetup Plugin...')
884 self.extendedSetup = ('extendedSetup',menuEntryDescription, self.extended)
885 menu.append((menuEntryName,self.extendedSetup))
887 if os_path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
888 menu.append((_("NetworkWizard"), "openwizard"))
892 def AdapterSetupClosed(self, *ret):
893 if ret is not None and len(ret):
894 if ret[0] == 'ok' and (self.iface == 'wlan0' or self.iface == 'ath0') and iNetwork.getAdapterAttribute(self.iface, "up") is True:
896 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
897 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
899 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
901 ifobj = Wireless(self.iface) # a Wireless NIC Object
902 self.wlanresponse = ifobj.getStatistics()
903 if self.wlanresponse[0] != 19:
904 self.session.openWithCallback(self.WlanStatusClosed, WlanStatus,self.iface)
906 # Display Wlan not available Message
907 self.showErrorMessage()
909 self.mainmenu = self.genMainMenu()
910 self["menulist"].l.setList(self.mainmenu)
911 iNetwork.getInterfaces(self.updateStatusbar)
913 self.mainmenu = self.genMainMenu()
914 self["menulist"].l.setList(self.mainmenu)
915 iNetwork.getInterfaces(self.updateStatusbar)
917 def WlanStatusClosed(self, *ret):
918 if ret is not None and len(ret):
919 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
920 iStatus.stopWlanConsole()
921 self.mainmenu = self.genMainMenu()
922 self["menulist"].l.setList(self.mainmenu)
923 iNetwork.getInterfaces(self.updateStatusbar)
925 def WlanScanClosed(self,*ret):
926 if ret[0] is not None:
927 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1])
929 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
930 iStatus.stopWlanConsole()
931 self.mainmenu = self.genMainMenu()
932 self["menulist"].l.setList(self.mainmenu)
933 iNetwork.getInterfaces(self.updateStatusbar)
935 def restartLan(self, ret = False):
937 iNetwork.restartNetwork(self.restartLanDataAvail)
938 self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while your network is restarting..."), type = MessageBox.TYPE_INFO, enable_input = False)
940 def restartLanDataAvail(self, data):
942 iNetwork.getInterfaces(self.getInterfacesDataAvail)
944 def getInterfacesDataAvail(self, data):
946 self.restartLanRef.close(True)
948 def restartfinishedCB(self,data):
950 self.session.open(MessageBox, _("Finished restarting your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False)
952 def dataAvail(self,data):
953 self.output = data.strip()
954 result = self.output.split('\n')
955 pattern = re_compile("Link detected: yes")
957 if re_search(pattern, item):
958 self["statuspic"].setPixmapNum(1)
960 self["statuspic"].setPixmapNum(0)
961 self["statuspic"].show()
963 def showErrorMessage(self):
964 self.session.open(MessageBox, self.errortext, type = MessageBox.TYPE_INFO,timeout = 10 )
967 iNetwork.stopLinkStateConsole()
968 iNetwork.stopDeactivateInterfaceConsole()
970 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
974 iStatus.stopWlanConsole()
976 def getInfoCB(self,data,status):
979 if status is not None:
980 if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False:
981 self["statuspic"].setPixmapNum(1)
983 self["statuspic"].setPixmapNum(0)
984 self["statuspic"].show()
986 class NetworkAdapterTest(Screen):
987 def __init__(self, session,iface):
988 Screen.__init__(self, session)
990 self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
991 iNetwork.getInterfaces()
993 self.onClose.append(self.cleanup)
994 self.onHide.append(self.cleanup)
996 self["updown_actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
1000 "up": lambda: self.updownhandler('up'),
1001 "down": lambda: self.updownhandler('down'),
1005 self["shortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
1008 "back": self.cancel,
1010 self["infoshortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
1012 "red": self.closeInfo,
1013 "back": self.closeInfo,
1015 self["shortcutsgreen"] = ActionMap(["ShortcutActions"],
1017 "green": self.KeyGreen,
1019 self["shortcutsgreen_restart"] = ActionMap(["ShortcutActions"],
1021 "green": self.KeyGreenRestart,
1023 self["shortcutsyellow"] = ActionMap(["ShortcutActions"],
1025 "yellow": self.KeyYellow,
1028 self["shortcutsgreen_restart"].setEnabled(False)
1029 self["updown_actions"].setEnabled(False)
1030 self["infoshortcuts"].setEnabled(False)
1031 self.onClose.append(self.delTimer)
1032 self.onLayoutFinish.append(self.layoutFinished)
1033 self.steptimer = False
1035 self.activebutton = 0
1036 self.nextStepTimer = eTimer()
1037 self.nextStepTimer.callback.append(self.nextStepTimerFire)
1040 if self.oldInterfaceState is False:
1041 iNetwork.setAdapterAttribute(self.iface, "up", self.oldInterfaceState)
1042 iNetwork.deactivateInterface(self.iface)
1045 def closeInfo(self):
1046 self["shortcuts"].setEnabled(True)
1047 self["infoshortcuts"].setEnabled(False)
1048 self["InfoText"].hide()
1049 self["InfoTextBorder"].hide()
1050 self["ButtonRedtext"].setText(_("Close"))
1054 del self.nextStepTimer
1056 def nextStepTimerFire(self):
1057 self.nextStepTimer.stop()
1058 self.steptimer = False
1061 def updownhandler(self,direction):
1062 if direction == 'up':
1063 if self.activebutton >=2:
1064 self.activebutton -= 1
1066 self.activebutton = 6
1067 self.setActiveButton(self.activebutton)
1068 if direction == 'down':
1069 if self.activebutton <=5:
1070 self.activebutton += 1
1072 self.activebutton = 1
1073 self.setActiveButton(self.activebutton)
1075 def setActiveButton(self,button):
1077 self["EditSettingsButton"].setPixmapNum(0)
1078 self["EditSettings_Text"].setForegroundColorNum(0)
1079 self["NetworkInfo"].setPixmapNum(0)
1080 self["NetworkInfo_Text"].setForegroundColorNum(1)
1081 self["AdapterInfo"].setPixmapNum(1) # active
1082 self["AdapterInfo_Text"].setForegroundColorNum(2) # active
1084 self["AdapterInfo_Text"].setForegroundColorNum(1)
1085 self["AdapterInfo"].setPixmapNum(0)
1086 self["DhcpInfo"].setPixmapNum(0)
1087 self["DhcpInfo_Text"].setForegroundColorNum(1)
1088 self["NetworkInfo"].setPixmapNum(1) # active
1089 self["NetworkInfo_Text"].setForegroundColorNum(2) # active
1091 self["NetworkInfo"].setPixmapNum(0)
1092 self["NetworkInfo_Text"].setForegroundColorNum(1)
1093 self["IPInfo"].setPixmapNum(0)
1094 self["IPInfo_Text"].setForegroundColorNum(1)
1095 self["DhcpInfo"].setPixmapNum(1) # active
1096 self["DhcpInfo_Text"].setForegroundColorNum(2) # active
1098 self["DhcpInfo"].setPixmapNum(0)
1099 self["DhcpInfo_Text"].setForegroundColorNum(1)
1100 self["DNSInfo"].setPixmapNum(0)
1101 self["DNSInfo_Text"].setForegroundColorNum(1)
1102 self["IPInfo"].setPixmapNum(1) # active
1103 self["IPInfo_Text"].setForegroundColorNum(2) # active
1105 self["IPInfo"].setPixmapNum(0)
1106 self["IPInfo_Text"].setForegroundColorNum(1)
1107 self["EditSettingsButton"].setPixmapNum(0)
1108 self["EditSettings_Text"].setForegroundColorNum(0)
1109 self["DNSInfo"].setPixmapNum(1) # active
1110 self["DNSInfo_Text"].setForegroundColorNum(2) # active
1112 self["DNSInfo"].setPixmapNum(0)
1113 self["DNSInfo_Text"].setForegroundColorNum(1)
1114 self["EditSettingsButton"].setPixmapNum(1) # active
1115 self["EditSettings_Text"].setForegroundColorNum(2) # active
1116 self["AdapterInfo"].setPixmapNum(0)
1117 self["AdapterInfo_Text"].setForegroundColorNum(1)
1120 next = self.nextstep
1136 self.steptimer = True
1137 self.nextStepTimer.start(3000)
1138 self["ButtonYellow_Check"].show()
1139 self["ButtonYellowtext"].show()
1142 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
1143 self["Adapter"].setForegroundColorNum(2)
1144 self["Adaptertext"].setForegroundColorNum(1)
1145 self["AdapterInfo_Text"].setForegroundColorNum(1)
1146 self["AdapterInfo_OK"].show()
1147 self.steptimer = True
1148 self.nextStepTimer.start(3000)
1151 self["Networktext"].setForegroundColorNum(1)
1152 self["Network"].setText(_("Please wait..."))
1153 self.getLinkState(self.iface)
1154 self["NetworkInfo_Text"].setForegroundColorNum(1)
1155 self.steptimer = True
1156 self.nextStepTimer.start(3000)
1159 self["Dhcptext"].setForegroundColorNum(1)
1160 if iNetwork.getAdapterAttribute(self.iface, 'dhcp') is True:
1161 self["Dhcp"].setForegroundColorNum(2)
1162 self["Dhcp"].setText(_("enabled"))
1163 self["DhcpInfo_Check"].setPixmapNum(0)
1165 self["Dhcp"].setForegroundColorNum(1)
1166 self["Dhcp"].setText(_("disabled"))
1167 self["DhcpInfo_Check"].setPixmapNum(1)
1168 self["DhcpInfo_Check"].show()
1169 self["DhcpInfo_Text"].setForegroundColorNum(1)
1170 self.steptimer = True
1171 self.nextStepTimer.start(3000)
1174 self["IPtext"].setForegroundColorNum(1)
1175 self["IP"].setText(_("Please wait..."))
1176 iNetwork.checkNetworkState(self.NetworkStatedataAvail)
1179 self.steptimer = False
1180 self.nextStepTimer.stop()
1181 self["DNStext"].setForegroundColorNum(1)
1182 self["DNS"].setText(_("Please wait..."))
1183 iNetwork.checkDNSLookup(self.DNSLookupdataAvail)
1186 self["shortcutsgreen"].setEnabled(False)
1187 self["shortcutsyellow"].setEnabled(True)
1188 self["updown_actions"].setEnabled(False)
1189 self["ButtonYellow_Check"].setPixmapNum(0)
1190 self["ButtonGreen_Check"].setPixmapNum(1)
1191 self.steptimer = True
1192 self.nextStepTimer.start(1000)
1194 def KeyGreenRestart(self):
1196 self.layoutFinished()
1197 self["Adapter"].setText((""))
1198 self["Network"].setText((""))
1199 self["Dhcp"].setText((""))
1200 self["IP"].setText((""))
1201 self["DNS"].setText((""))
1202 self["AdapterInfo_Text"].setForegroundColorNum(0)
1203 self["NetworkInfo_Text"].setForegroundColorNum(0)
1204 self["DhcpInfo_Text"].setForegroundColorNum(0)
1205 self["IPInfo_Text"].setForegroundColorNum(0)
1206 self["DNSInfo_Text"].setForegroundColorNum(0)
1207 self["shortcutsgreen_restart"].setEnabled(False)
1208 self["shortcutsgreen"].setEnabled(False)
1209 self["shortcutsyellow"].setEnabled(True)
1210 self["updown_actions"].setEnabled(False)
1211 self["ButtonYellow_Check"].setPixmapNum(0)
1212 self["ButtonGreen_Check"].setPixmapNum(1)
1213 self.steptimer = True
1214 self.nextStepTimer.start(1000)
1217 self["infoshortcuts"].setEnabled(True)
1218 self["shortcuts"].setEnabled(False)
1219 if self.activebutton == 1: # Adapter Check
1220 self["InfoText"].setText(_("This test detects your configured LAN-Adapter."))
1221 self["InfoTextBorder"].show()
1222 self["InfoText"].show()
1223 self["ButtonRedtext"].setText(_("Back"))
1224 if self.activebutton == 2: #LAN Check
1225 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"))
1226 self["InfoTextBorder"].show()
1227 self["InfoText"].show()
1228 self["ButtonRedtext"].setText(_("Back"))
1229 if self.activebutton == 3: #DHCP Check
1230 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."))
1231 self["InfoTextBorder"].show()
1232 self["InfoText"].show()
1233 self["ButtonRedtext"].setText(_("Back"))
1234 if self.activebutton == 4: # IP Check
1235 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"))
1236 self["InfoTextBorder"].show()
1237 self["InfoText"].show()
1238 self["ButtonRedtext"].setText(_("Back"))
1239 if self.activebutton == 5: # DNS Check
1240 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"))
1241 self["InfoTextBorder"].show()
1242 self["InfoText"].show()
1243 self["ButtonRedtext"].setText(_("Back"))
1244 if self.activebutton == 6: # Edit Settings
1245 self.session.open(AdapterSetup,self.iface)
1247 def KeyYellow(self):
1249 self["shortcutsgreen_restart"].setEnabled(True)
1250 self["shortcutsgreen"].setEnabled(False)
1251 self["shortcutsyellow"].setEnabled(False)
1252 self["ButtonGreentext"].setText(_("Restart test"))
1253 self["ButtonYellow_Check"].setPixmapNum(1)
1254 self["ButtonGreen_Check"].setPixmapNum(0)
1255 self.steptimer = False
1256 self.nextStepTimer.stop()
1258 def layoutFinished(self):
1259 self["shortcutsyellow"].setEnabled(False)
1260 self["AdapterInfo_OK"].hide()
1261 self["NetworkInfo_Check"].hide()
1262 self["DhcpInfo_Check"].hide()
1263 self["IPInfo_Check"].hide()
1264 self["DNSInfo_Check"].hide()
1265 self["EditSettings_Text"].hide()
1266 self["EditSettingsButton"].hide()
1267 self["InfoText"].hide()
1268 self["InfoTextBorder"].hide()
1269 self["ButtonYellow_Check"].hide()
1270 self["ButtonYellowtext"].hide()
1272 def setLabels(self):
1273 self["Adaptertext"] = MultiColorLabel(_("LAN Adapter"))
1274 self["Adapter"] = MultiColorLabel()
1275 self["AdapterInfo"] = MultiPixmap()
1276 self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info"))
1277 self["AdapterInfo_OK"] = Pixmap()
1279 if self.iface == 'wlan0' or self.iface == 'ath0':
1280 self["Networktext"] = MultiColorLabel(_("Wireless Network"))
1282 self["Networktext"] = MultiColorLabel(_("Local Network"))
1284 self["Network"] = MultiColorLabel()
1285 self["NetworkInfo"] = MultiPixmap()
1286 self["NetworkInfo_Text"] = MultiColorLabel(_("Show Info"))
1287 self["NetworkInfo_Check"] = MultiPixmap()
1289 self["Dhcptext"] = MultiColorLabel(_("DHCP"))
1290 self["Dhcp"] = MultiColorLabel()
1291 self["DhcpInfo"] = MultiPixmap()
1292 self["DhcpInfo_Text"] = MultiColorLabel(_("Show Info"))
1293 self["DhcpInfo_Check"] = MultiPixmap()
1295 self["IPtext"] = MultiColorLabel(_("IP Address"))
1296 self["IP"] = MultiColorLabel()
1297 self["IPInfo"] = MultiPixmap()
1298 self["IPInfo_Text"] = MultiColorLabel(_("Show Info"))
1299 self["IPInfo_Check"] = MultiPixmap()
1301 self["DNStext"] = MultiColorLabel(_("Nameserver"))
1302 self["DNS"] = MultiColorLabel()
1303 self["DNSInfo"] = MultiPixmap()
1304 self["DNSInfo_Text"] = MultiColorLabel(_("Show Info"))
1305 self["DNSInfo_Check"] = MultiPixmap()
1307 self["EditSettings_Text"] = MultiColorLabel(_("Edit settings"))
1308 self["EditSettingsButton"] = MultiPixmap()
1310 self["ButtonRedtext"] = Label(_("Close"))
1311 self["ButtonRed"] = Pixmap()
1313 self["ButtonGreentext"] = Label(_("Start test"))
1314 self["ButtonGreen_Check"] = MultiPixmap()
1316 self["ButtonYellowtext"] = Label(_("Stop test"))
1317 self["ButtonYellow_Check"] = MultiPixmap()
1319 self["InfoTextBorder"] = Pixmap()
1320 self["InfoText"] = Label()
1322 def getLinkState(self,iface):
1323 if iface == 'wlan0' or iface == 'ath0':
1325 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
1327 self["Network"].setForegroundColorNum(1)
1328 self["Network"].setText(_("disconnected"))
1329 self["NetworkInfo_Check"].setPixmapNum(1)
1330 self["NetworkInfo_Check"].show()
1332 iStatus.getDataForInterface(self.iface,self.getInfoCB)
1334 iNetwork.getLinkState(iface,self.LinkStatedataAvail)
1336 def LinkStatedataAvail(self,data):
1337 self.output = data.strip()
1338 result = self.output.split('\n')
1339 pattern = re_compile("Link detected: yes")
1341 if re_search(pattern, item):
1342 self["Network"].setForegroundColorNum(2)
1343 self["Network"].setText(_("connected"))
1344 self["NetworkInfo_Check"].setPixmapNum(0)
1346 self["Network"].setForegroundColorNum(1)
1347 self["Network"].setText(_("disconnected"))
1348 self["NetworkInfo_Check"].setPixmapNum(1)
1349 self["NetworkInfo_Check"].show()
1351 def NetworkStatedataAvail(self,data):
1353 self["IP"].setForegroundColorNum(2)
1354 self["IP"].setText(_("confirmed"))
1355 self["IPInfo_Check"].setPixmapNum(0)
1357 self["IP"].setForegroundColorNum(1)
1358 self["IP"].setText(_("unconfirmed"))
1359 self["IPInfo_Check"].setPixmapNum(1)
1360 self["IPInfo_Check"].show()
1361 self["IPInfo_Text"].setForegroundColorNum(1)
1362 self.steptimer = True
1363 self.nextStepTimer.start(3000)
1365 def DNSLookupdataAvail(self,data):
1367 self["DNS"].setForegroundColorNum(2)
1368 self["DNS"].setText(_("confirmed"))
1369 self["DNSInfo_Check"].setPixmapNum(0)
1371 self["DNS"].setForegroundColorNum(1)
1372 self["DNS"].setText(_("unconfirmed"))
1373 self["DNSInfo_Check"].setPixmapNum(1)
1374 self["DNSInfo_Check"].show()
1375 self["DNSInfo_Text"].setForegroundColorNum(1)
1376 self["EditSettings_Text"].show()
1377 self["EditSettingsButton"].setPixmapNum(1)
1378 self["EditSettings_Text"].setForegroundColorNum(2) # active
1379 self["EditSettingsButton"].show()
1380 self["ButtonYellow_Check"].setPixmapNum(1)
1381 self["ButtonGreentext"].setText(_("Restart test"))
1382 self["ButtonGreen_Check"].setPixmapNum(0)
1383 self["shortcutsgreen"].setEnabled(False)
1384 self["shortcutsgreen_restart"].setEnabled(True)
1385 self["shortcutsyellow"].setEnabled(False)
1386 self["updown_actions"].setEnabled(True)
1387 self.activebutton = 6
1389 def getInfoCB(self,data,status):
1390 if data is not None:
1392 if status is not None:
1393 if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False:
1394 self["Network"].setForegroundColorNum(1)
1395 self["Network"].setText(_("disconnected"))
1396 self["NetworkInfo_Check"].setPixmapNum(1)
1397 self["NetworkInfo_Check"].show()
1399 self["Network"].setForegroundColorNum(2)
1400 self["Network"].setText(_("connected"))
1401 self["NetworkInfo_Check"].setPixmapNum(0)
1402 self["NetworkInfo_Check"].show()
1405 iNetwork.stopLinkStateConsole()
1406 iNetwork.stopDNSConsole()
1408 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
1412 iStatus.stopWlanConsole()