1 from Screens.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 Screens.NetworkSetup import NameserverSetup
9 from Components.Sources.StaticText import StaticText
10 from Components.Sources.Boolean import Boolean
11 from Components.Sources.List import List
12 from Components.Label import Label,MultiColorLabel
13 from Components.Pixmap import Pixmap,MultiPixmap
14 from Components.MenuList import MenuList
15 from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigText, ConfigPassword, ConfigSelection, getConfigListEntry, ConfigNothing
16 from Components.config import ConfigInteger, ConfigSubsection
17 from Components.ConfigList import ConfigListScreen
18 from Components.PluginComponent import plugins
19 from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
20 from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
21 from Components.Console import Console
22 from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_SKIN
23 from Tools.LoadPixmap import LoadPixmap
24 from Plugins.Plugin import PluginDescriptor
25 from enigma import eTimer, ePoint, eSize, RT_HALIGN_LEFT, eListboxPythonMultiContent, gFont
26 from os import path as os_path, system as os_system, unlink,listdir
27 from re import compile as re_compile, search as re_search
28 from Tools.Directories import fileExists
31 class WlanSelection(Screen,HelpableScreen):
33 <screen name="WlanSelection" position="209,48" size="865,623" title="Wireless Network Configuration..." flags="wfNoBorder" backgroundColor="transparent">
34 <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
35 <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
36 <eLabel text="Wireless Network Adapter Selection..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
37 <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
38 <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
39 <convert type="ClockToText">Format:%H:%M</convert>
41 <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
42 <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
43 <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
44 <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
45 <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
46 <widget name="menulist" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
47 <widget source="description" render="Label" position="500,140" size="280,360" font="Regular;19" halign="center" valign="center" backgroundColor="#c5c9cc" transparent="1"/>
50 def __init__(self, session):
51 Screen.__init__(self,session)
52 HelpableScreen.__init__(self)
53 self.mainmenu = self.getWlandevice()
54 self["menulist"] = MenuList(self.mainmenu)
55 self["key_red"] = StaticText(_("Close"))
56 self["key_green"] = StaticText(_("Select"))
57 self["description"] = StaticText()
58 self["description"].setText(_("Select Wireless Lan module. \n" ))
59 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
61 "ok": (self.ok, _("select interface")),
62 "cancel": (self.close, _("exit network interface list")),
65 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
67 "green": (self.ok, _("select interface")),
68 "red": (self.close, _("exit network interface list")),
72 # print len(self["menulist"].list)
73 if len(self["menulist"].list) == 0:
74 self.session.open(MessageBox, (_("Can not find any WirelessLan Module\n")),MessageBox.TYPE_ERROR,5 )
76 ifaces=self["menulist"].getCurrent()[1]
80 self.session.open(WlanSetup,ifaces)
82 def getWlandevice(self):
84 for x in iNetwork.getAdapterList():
85 if x.startswith('eth'):
87 list.append((self.getAdapterDescription(x) + " (%s)"%x,x))
90 def getAdapterDescription(self, iface):
92 return _("Internal LAN adapter.")
94 classdir = "/sys/class/net/" + iface + "/device/"
95 driverdir = "/sys/class/net/" + iface + "/device/driver/"
96 if os_path.exists(classdir):
97 files = listdir(classdir)
99 if os_path.realpath(driverdir).endswith('rtw_usb_drv'):
100 return _("Realtak")+ " " + _("WLAN adapter.")
101 elif os_path.realpath(driverdir).endswith('ath_pci'):
102 return _("Atheros")+ " " + _("WLAN adapter.")
103 elif os_path.realpath(driverdir).endswith('zd1211b'):
104 return _("Zydas")+ " " + _("WLAN adapter.")
105 elif os_path.realpath(driverdir).endswith('rt73'):
106 return _("Ralink")+ " " + _("WLAN adapter.")
107 elif os_path.realpath(driverdir).endswith('rt73usb'):
108 return _("Ralink")+ " " + _("WLAN adapter.")
110 return str(os_path.basename(os_path.realpath(driverdir))) + " " + _("WLAN adapter")
112 return _("Unknown network adapter.")
114 class WlanSetup(Screen,HelpableScreen):
116 <screen name="WlanSetup" position="209,48" size="865,623" title="Wireless Network Configuration..." flags="wfNoBorder" backgroundColor="transparent">
117 <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
118 <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
119 <eLabel text="Wireless Network Setup Menu..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
120 <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
121 <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
122 <convert type="ClockToText">Format:%H:%M</convert>
124 <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
125 <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
126 <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
127 <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
128 <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
129 <widget name="menulist" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
130 <widget source="description" render="Label" position="500,140" size="280,360" font="Regular;19" halign="center" valign="center" backgroundColor="#c5c9cc" transparent="1"/>
132 def __init__(self, session, ifaces):
133 Screen.__init__(self, session)
134 HelpableScreen.__init__(self)
135 self.session = session
137 self.restartLanRef = None
138 self.LinkState = None
139 self.mainmenu = self.MakeMenu()
140 self["menulist"] = MenuList(self.mainmenu)
141 self["key_red"] = StaticText(_("Close"))
142 self["key_green"] = StaticText(_("Select"))
143 self["description"] = StaticText()
144 self["IFtext"] = StaticText()
145 self["IF"] = StaticText()
146 self["Statustext"] = StaticText()
147 self["statuspic"] = MultiPixmap()
148 self["statuspic"].hide()
149 self.onLayoutFinish.append(self.loadDescription)
151 self.oktext = _("Press OK on your remote control to continue.")
153 self["WizardActions"] = HelpableActionMap(self, "WizardActions",
155 "up": (self.up, _("move up to previous entry")),
156 "down": (self.down, _("move down to next entry")),
157 "left": (self.left, _("move up to first entry")),
158 "right": (self.right, _("move down to last entry")),
161 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
163 "cancel": (self.close, _("exit networkadapter setup menu")),
164 "ok": (self.ok, _("select menu entry")),
167 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
169 "red": (self.close, _("exit networkadapter setup menu")),
170 "green": (self.ok, _("select menu entry")),
173 self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
184 def loadDescription(self):
185 if self["menulist"].getCurrent()[1] == 'setting':
186 self["description"].setText(_("Edit the network configuration of your STB.\n" ) + self.oktext )
187 if self["menulist"].getCurrent()[1] == 'scanap':
188 self["description"].setText(_("Scan your network for wireless access points and connect to them using your selected wireless device.\n" ) + self.oktext )
189 if self["menulist"].getCurrent()[1] == 'dns':
190 self["description"].setText(_("Edit the Nameserver configuration of your STB.\n" ) + self.oktext )
191 if self["menulist"].getCurrent()[1] == 'status':
192 self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
193 if self["menulist"].getCurrent()[1] == 'test':
194 self["description"].setText(_("Test the network configuration of your STB.\n" ) + self.oktext )
195 if self["menulist"].getCurrent()[1] == 'restart':
196 self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
199 self["menulist"].up()
200 self.loadDescription()
203 self["menulist"].down()
204 self.loadDescription()
207 self["menulist"].pageUp()
208 self.loadDescription()
211 self["menulist"].pageDown()
212 self.loadDescription()
215 if self["menulist"].getCurrent()[1] == 'setting':
216 self.session.openWithCallback(self.checklist, WlanConfig, self.iface)
217 elif self["menulist"].getCurrent()[1] == 'scanap':
218 self.session.open(WlanScanAp, self.iface)
219 elif self["menulist"].getCurrent()[1] == 'dns':
220 self.session.open(NameserverSetup)
221 elif self["menulist"].getCurrent()[1] == 'status':
222 self.session.open(Wlanstatus, self.iface)
223 elif self["menulist"].getCurrent()[1] == 'test':
224 self.session.openWithCallback(self.checklist,NetworkAdapterTest,self.iface)
225 elif self["menulist"].getCurrent()[1] == 'restart':
226 self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
229 self["menulist"].setList(self.MakeMenu())
233 menu.append((_("Adapter settings"), "setting"))
234 menu.append((_("Scan Wireless AP"), "scanap"))
235 menu.append((_("Nameserver settings"), "dns"))
236 if iNetwork.getAdapterAttribute(self.iface, "up"):
237 menu.append((_("Show WLAN Status"), "status"))
238 menu.append((_("Network test"), "test"))
239 menu.append((_("Restart network"), "restart"))
243 def restartLan(self, ret = False):
245 iNetwork.restartNetwork(self.restartLanDataAvail)
246 self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while your network is restarting..."), type = MessageBox.TYPE_INFO, enable_input = False)
248 def restartLanDataAvail(self, data):
250 iNetwork.getInterfaces(self.getInterfacesDataAvail)
252 def getInterfacesDataAvail(self, data):
254 self.restartLanRef.close(True)
256 def restartfinishedCB(self,data):
258 self.session.open(MessageBox, _("Finished restarting your network"), type = MessageBox.TYPE_INFO, timeout = 5, default = False)
260 wlanconfig = ConfigSubsection()
261 wlanconfig.usedevice = ConfigSelection(default = "off", choices = [
262 ("off", _("off")), ("on", _("on"))])
263 wlanconfig.usedhcp = ConfigSelection(default = "off", choices = [
264 ("off", _("no")), ("on", _("yes"))])
265 wlanconfig.essid = ConfigSelection(default = "none", choices = ["none"])
266 wlanconfig.encrypt = ConfigSelection(default = "off", choices = [
267 ("off", _("no")), ("on", _("yes"))])
268 wlanconfig.method = ConfigSelection(default = "wep", choices = [
269 ("wep", _("WEP")), ("wpa", _("WPA")), ("wpa2", _("WPA2")),("wpa/wpa2", _("WPA/WPA2"))])
270 wlanconfig.keytype = ConfigSelection(default = "ascii", choices = [
271 ("ascii", _("ASCII")), ("hex", _("HEX"))])
272 wlanconfig.key = ConfigText(default = "XXXXXXXX", visible_width = 50, fixed_size = False)
273 wlanconfig.usegateway = ConfigSelection(default = "off", choices = [
274 ("off", _("no")), ("on", _("yes"))])
275 wlanconfig.ip = ConfigIP([0,0,0,0])
276 wlanconfig.netmask = ConfigIP([0,0,0,0])
277 wlanconfig.gateway = ConfigIP([0,0,0,0])
280 class WlanConfig(Screen, ConfigListScreen, HelpableScreen):
282 <screen name="WlanConfig" position="209,48" size="865,623" title="Wireless Network Configuration..." flags="wfNoBorder" backgroundColor="transparent">
283 <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
284 <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
285 <eLabel text="Wireless Network Configuration..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
286 <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
287 <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
288 <convert type="ClockToText">Format:%H:%M</convert>
290 <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
291 <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
292 <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
293 <widget source="key_grean" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
294 <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
295 <widget name="config" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
296 <eLabel text="IP Address : " position="500,160" size="200,26" font="Semiboldit;22" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
297 <widget source="ipaddress" render="Label" position="530,190" zPosition="1" size="150,26" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
298 <eLabel text="NetMask : " position="500,220" size="200,26" font="Semiboldit;22" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
299 <widget source="netmask" render="Label" position="530,250" zPosition="1" size="150,26" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
300 <eLabel text="Gateway : " position="500,280" size="200,26" font="Semiboldit;22" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
301 <widget source="gateway" render="Label" position="530,310" zPosition="1" size="150,26" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
304 def __init__(self, session, iface):
305 Screen.__init__(self,session)
306 self.session = session
307 self["key_red"] = StaticText(_("Close"))
308 self["key_grean"] = StaticText(_("Ok"))
309 self["ipaddress"] = StaticText(_("[ N/A ]"))
310 self["netmask"] = StaticText(_("[ N/A ]"))
311 self["gateway"] = StaticText(_("[ N/A ]"))
312 self["OkCancelActions"] = ActionMap(["ShortcutActions", "SetupActions" ],
314 "ok": self.saveWlanConfig,
315 "green": self.saveWlanConfig,
316 "cancel": self.keyCancel,
317 "red": self.keyCancel,
322 self.scan_ssid = None
326 self.encryption_key = None
327 self.wlanscanap = None
328 # self.scanAPcount =5
331 ConfigListScreen.__init__(self, self.list,session = self.session)
332 self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
333 self.readWpaSupplicantConf()
334 # iNetwork.getInterfaces(self.readWlanSettings)
335 self.readWlanSettings()
336 self.scanAPFailedTimer = eTimer()
337 self.scanAPFailedTimer.callback.append(self.scanAPFailed)
338 self.scanAplistTimer = eTimer()
339 self.scanAplistTimer.callback.append(self.scanApList)
340 self.Console = Console()
341 self.scanAplistTimer.start(100,True)
343 def readWlanSettings(self,ret=None):
345 print "getAddrInet Fail... "
346 if iNetwork.getAdapterAttribute(self.iface, "up") == True:
350 wlanconfig.usedevice = ConfigSelection(default=default_tmp, choices = [("off", _("off")), ("on", _("on"))])
352 if iNetwork.getAdapterAttribute(self.iface, "dhcp"):
356 wlanconfig.usedhcp = ConfigSelection(default=default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
358 wlanconfig.ip = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0]
360 wlanconfig.netmask = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0])
361 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
365 wlanconfig.usegateway = ConfigSelection(default = default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
367 wlanconfig.gateway = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0])
369 self["ipaddress"] = StaticText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "ip"))))
370 self["netmask"] = StaticText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "netmask"))))
371 self["gateway"] = StaticText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "gateway"))))
373 if self.encryption_key is not None:
377 wlanconfig.encrypt = ConfigSelection(default = default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
379 if self.key_mgmt=="NONE":
381 elif self.key_mgmt == "WPA-PSK":
382 if self.proto == "WPA":
384 elif self.proto == "RSN":
386 elif self.proto in ( "WPA RSN", "WPA WPA2"):
387 default_tmp = "wpa/wpa2"
393 wlanconfig.method = ConfigSelection(default = default_tmp, choices = [
394 ("wep", _("WEP")), ("wpa", _("WPA")), ("wpa2", _("WPA2")),("wpa/wpa2", _("WPA/WPA2"))])
396 if self.key_type == 0:
399 default_tmp = "ascii"
400 wlanconfig.keytype = ConfigSelection(default = default_tmp, choices = [
401 ("ascii", _("ASCII")), ("hex", _("HEX"))])
402 default_tmp = self.encryption_key or "XXXXXXXX"
403 wlanconfig.key = ConfigText(default = default_tmp, visible_width = 50, fixed_size = False)
405 def readWpaSupplicantConf(self):
407 if fileExists("/etc/wpa_supplicant.conf"):
408 wpafd = open("/etc/wpa_supplicant.conf","r")
410 data = wpafd.readline()
412 # print "####readWpaSupplicantConf, data : ",data
415 data = wpafd.readline()
417 if data.startswith('ssid=') and len(data) > 6:
418 self.ssid = data[6:-2]
419 elif data.startswith('ap_scan=') :
420 self.ap_scan = data[8:]
421 # print "####readWpaSupplicantConf, ap_scan : ",self.ap_scan
422 elif data.startswith('scan_ssid=') and len(data) > 10:
423 self.scan_ssid = data[10:-1]
424 elif data.startswith('key_mgmt=') and len(data) > 9:
425 self.key_mgmt = data[9:-1]
426 elif data.startswith('proto=') and len(data) > 6:
427 self.proto = data[6:-1]
428 elif data.startswith('wep_key0="') and len(data) > 11:
429 self.key_type = 1 # ascii
430 self.encryption_key = data[10:-2]
431 elif data.startswith('wep_key0=') and len(data) > 9:
432 self.key_type = 0 # hex
433 self.encryption_key = data[9:-1]
434 elif data.startswith('psk="') and len(data) > 6:
435 self.key_type = 1 # ascii
436 self.encryption_key = data[5:-2]
437 elif data.startswith('psk=') and len(data) > 4:
438 self.key_type = 0 # hex
439 self.encryption_key = data[4:-1]
440 data = wpafd.readline()
441 print self.ssid,self.scan_ssid,self.key_mgmt,self.proto,self.key_type,self.encryption_key
448 print 'failed loading wpasupplicant.conf'
450 def createConfig(self):
452 self.usedeviceEntry = getConfigListEntry(_("Use Device"), wlanconfig.usedevice)
453 self.usedhcpEntry = getConfigListEntry(_("Use DHCP"), wlanconfig.usedhcp)
454 self.essidEntry = getConfigListEntry(_("ESSID"), wlanconfig.essid)
455 self.hiddenessidEntry = getConfigListEntry(_("Input Hidden ESSID"), wlanconfig.hiddenessid)
456 self.encryptEntry = getConfigListEntry(_("Encrypt"), wlanconfig.encrypt)
457 self.methodEntry = getConfigListEntry(_("Method"), wlanconfig.method)
458 self.keytypeEntry = getConfigListEntry(_("Key Type"), wlanconfig.keytype)
459 self.keyEntry = getConfigListEntry(_("KEY"), wlanconfig.key)
461 self.ipEntry = getConfigListEntry(_("IP"), wlanconfig.ip)
462 self.netmaskEntry = getConfigListEntry(_("NetMask"), wlanconfig.netmask)
464 self.usegatewayEntry = getConfigListEntry(_("Use Gateway"), wlanconfig.usegateway)
465 self.gatewayEntry = getConfigListEntry(_("Gateway"), wlanconfig.gateway)
467 self.configList.append( self.usedeviceEntry )
468 if wlanconfig.usedevice.value is "on":
469 self.configList.append( self.usedhcpEntry )
470 if wlanconfig.usedhcp.value is "off":
471 self.configList.append(self.ipEntry)
472 self.configList.append(self.netmaskEntry)
473 self.configList.append(self.usegatewayEntry)
474 if wlanconfig.usegateway.value is "on":
475 self.configList.append(self.gatewayEntry)
476 self.configList.append( self.essidEntry )
477 # print "#### wlanconfig.essid.value : ",wlanconfig.essid.value
478 if wlanconfig.essid.value == 'Input hidden ESSID':
479 self.configList.append( self.hiddenessidEntry )
480 self.configList.append( self.encryptEntry )
481 if wlanconfig.encrypt.value is "on" :
482 self.configList.append( self.methodEntry )
483 self.configList.append( self.keytypeEntry )
484 self.configList.append( self.keyEntry )
486 self["config"].list = self.configList
487 self["config"].l.setList(self.configList)
488 # if not self.selectionChanged in self["config"].onSelectionChanged:
489 # self["config"].onSelectionChanged.append(self.selectionChanged)
491 def scanApList(self):
493 self.configurationmsg = self.session.open(MessageBox, _("Please wait for scanning AP..."), type = MessageBox.TYPE_INFO, enable_input = False)
494 cmd = "ifconfig "+self.iface+" up"
497 self.wlanscanap = Console()
498 cmd = "iwlist "+self.iface+" scan"
500 self.wlanscanap.ePopen(cmd, self.apListFinnished,self.apListParse)
502 def apListFinnished(self, result, retval,extra_args):
503 (callback) = extra_args
504 if self.wlanscanap is not None:
506 self.wlanscanap = None
507 content = result.splitlines()
508 first = content[0].split()
513 if completed == True:
520 def apListParse(self,data):
523 if self.scanAPcount >0:
525 self.configurationmsg.close(True)
527 self.scanAplistTimer.start(500,True)
530 self.configurationmsg.close(True)
531 self.scanAPFailedTimer.start(500,True)
535 # self.scanAPcount =5
537 list = data.splitlines()
540 if xx.startswith('ESSID:') and len(xx)>8 and xx[7:-1]not in self.apList:
541 self.apList.append(xx[7:-1])
542 self.apList.append('Input hidden ESSID')
543 # print "###### selectap : ",selectap
544 if selectap is not None and selectap in self.apList:
545 wlanconfig.essid = ConfigSelection(default=selectap,choices = self.apList)
546 elif self.ap_scan is not None and self.ap_scan.strip() == '2':
547 wlanconfig.essid = ConfigSelection(default='Input hidden ESSID',choices = self.apList)
548 elif self.ssid is not None and self.ssid in self.apList:
549 wlanconfig.essid = ConfigSelection(default=self.ssid,choices = self.apList)
551 wlanconfig.essid = ConfigSelection(choices = self.apList)
552 if self.ssid is not None:
553 wlanconfig.hiddenessid = ConfigText(default = self.ssid, visible_width = 50, fixed_size = False)
555 wlanconfig.hiddenessid = ConfigText(default = "<Input ESSID>", visible_width = 50, fixed_size = False)
556 self.configurationmsg.close(True)
559 def scanAPFailed(self):
560 self.session.openWithCallback(self.keyCancel ,MessageBox, _("Scan AP Failed"), MessageBox.TYPE_ERROR,10)
563 ConfigListScreen.keyLeft(self)
567 ConfigListScreen.keyRight(self)
571 if self["config"].getCurrent() == self.usedeviceEntry or self["config"].getCurrent() == self.encryptEntry \
572 or self["config"].getCurrent() == self.usedhcpEntry or self["config"].getCurrent() == self.usegatewayEntry \
573 or self["config"].getCurrent() == self.essidEntry:
576 def saveWlanConfig(self):
577 if self["config"].isChanged():
578 self.session.openWithCallback(self.checkNetworkShares, MessageBox, (_("Are you sure you want to restart your network interfaces?\n") ) )
580 self.session.openWithCallback(self.checkNetworkShares, MessageBox, (_("Network configuration is not changed....\n\nAre you sure you want to restart your network interfaces?\n") ) )
582 def checkNetworkShares(self,ret = False):
586 self.Console = Console()
587 cmd = "cat /proc/mounts"
588 self.Console.ePopen(cmd, self.checkSharesFinished, self.confirmAnotherIfaces)
590 def checkSharesFinished(self, result, retval, extra_args):
591 callback = extra_args
592 print "checkMountsFinished : result : \n",result
593 networks = ['nfs','smbfs','ncp','coda']
594 for line in result.splitlines():
595 split = line.strip().split(' ',3)
596 if split[2] in networks:
597 self.session.open(MessageBox, ("NOT deconfiguring network interfaces :\n network shares still mounted\n"), type = MessageBox.TYPE_ERROR, timeout = 10)
602 def confirmAnotherIfaces(self, ret = False):
606 num_configured_if = len(iNetwork.getConfiguredAdapters())
607 if num_configured_if >= 1:
608 if num_configured_if == 1 and self.iface in iNetwork.getConfiguredAdapters():
609 self.writeWlanConfig(False)
611 self.session.openWithCallback(self.writeWlanConfig, MessageBox, _("A second configured interface has been found.\n\nDo you want to disable the second network interface?"), default = True)
613 self.writeWlanConfig(False)
615 def writeWlanConfig(self,ret = False):
617 configuredInterfaces = iNetwork.getConfiguredAdapters()
618 for interface in configuredInterfaces:
619 if interface == self.iface:
621 iNetwork.setAdapterAttribute(interface, "up", False)
622 iNetwork.deactivateInterface(interface)
623 ret=self.writeWpasupplicantConf()
625 self.session.open(MessageBox, _("wpa_supplicant.conf open error."), type = MessageBox.TYPE_ERROR, timeout = 10)
628 self.session.open(MessageBox, _("hidden ESSID empty"), type = MessageBox.TYPE_ERROR, timeout = 10)
631 if wlanconfig.usedevice.value=="on":
632 iNetwork.setAdapterAttribute(self.iface, "up", True)
633 if wlanconfig.usedhcp.value =="on":
634 iNetwork.setAdapterAttribute(self.iface, "dhcp", True)
636 iNetwork.setAdapterAttribute(self.iface, "dhcp", False)
637 iNetwork.setAdapterAttribute(self.iface, "ip", wlanconfig.ip.value)
638 iNetwork.setAdapterAttribute(self.iface, "netmask", wlanconfig.netmask.value)
639 if wlanconfig.usegateway.value == "on":
640 iNetwork.setAdapterAttribute(self.iface, "gateway", wlanconfig.gateway.value)
642 iNetwork.setAdapterAttribute(self.iface, "up", False)
643 iNetwork.deactivateInterface(self.iface)
644 contents = "\tpre-up wpa_supplicant -i"+self.iface+" -c/etc/wpa_supplicant.conf -B -D"+iNetwork.detectWlanModule(self.iface)+"\n"
645 contents += "\tpost-down wpa_cli terminate\n\n"
646 iNetwork.setAdapterAttribute(self.iface, "configStrings", contents)
647 iNetwork.writeNetworkConfig()
648 iNetwork.restartNetwork(self.updateCurrentInterfaces)
649 self.configurationmsg = None
650 self.configurationmsg = self.session.openWithCallback(self.configFinished, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False)
652 def writeWpasupplicantConf(self):
653 wpafd = open("/etc/wpa_supplicant.conf","w")
655 contents = "#WPA Supplicant Configuration by STB\n"
656 contents += "ctrl_interface=/var/run/wpa_supplicant\n"
657 contents += "eapol_version=1\n"
658 contents += "fast_reauth=1\n"
660 if wlanconfig.essid.value == 'Input hidden ESSID':
661 contents += "ap_scan=2\n"
663 contents += "ap_scan=1\n"
664 contents += "network={\n"
665 if wlanconfig.essid.value == 'Input hidden ESSID':
666 if len(wlanconfig.hiddenessid.value) == 0:
669 contents += "\tssid=\""+wlanconfig.hiddenessid.value+"\"\n"
671 contents += "\tssid=\""+wlanconfig.essid.value+"\"\n"
672 contents += "\tscan_ssid=0\n"
673 if wlanconfig.encrypt.value == "on":
674 if wlanconfig.method.value =="wep":
675 contents += "\tkey_mgmt=NONE\n"
676 contents += "\twep_key0="
677 elif wlanconfig.method.value == "wpa":
678 contents += "\tkey_mgmt=WPA-PSK\n"
679 contents += "\tproto=WPA\n"
680 contents += "\tpairwise=CCMP TKIP\n"
681 contents += "\tgroup=CCMP TKIP\n"
683 elif wlanconfig.method.value == "wpa2":
684 contents += "\tkey_mgmt=WPA-PSK\n"
685 contents += "\tproto=RSN\n"
686 contents += "\tpairwise=CCMP TKIP\n"
687 contents += "\tgroup=CCMP TKIP\n"
690 contents += "\tkey_mgmt=WPA-PSK\n"
691 contents += "\tproto=WPA RSN\n"
692 contents += "\tpairwise=CCMP TKIP\n"
693 contents += "\tgroup=CCMP TKIP\n"
695 if wlanconfig.keytype.value == "ascii":
696 contents += "\""+wlanconfig.key.value+"\"\n"
698 contents += wlanconfig.key.value+"\n"
700 contents += "\tkey_mgmt=NONE\n"
702 print "content = \n"+contents
703 wpafd.write(contents)
707 self.session.open(MessageBox, _("wpa_supplicant.conf open error."), type = MessageBox.TYPE_ERROR, timeout = 10)
709 def updateCurrentInterfaces(self,ret):
711 iNetwork.getInterfaces(self.configurationMsgClose)
713 def configurationMsgClose(self,ret):
714 if ret is True and self.configurationmsg is not None:
715 self.configurationmsg.close(True)
717 def configFinished(self,data):
720 self.session.openWithCallback(self.configFinishedCB, MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10)
721 selectap = wlanconfig.essid.value
723 def configFinishedCB(self,data):
728 def formatip(self, iplist):
731 # print "iplist : ",iplist
734 result = str(iplist[0])+"."+str(iplist[1])+"."+str(iplist[2])+"."+str(iplist[3])
737 # print "result : ",result
742 def keyCancelConfirm(self, result):
745 if self.oldInterfaceState is False:
746 iNetwork.setAdapterAttribute(self.iface, "up", False)
747 iNetwork.deactivateInterface(self.iface,self.keyCancelCB)
751 def keyCancel(self,yesno = True):
752 if self["config"].isChanged():
753 self.session.openWithCallback(self.keyCancelConfirm, MessageBox, _("Really close without saving settings?"))
755 self.keyCancelConfirm(True)
757 def keyCancelCB(self,data):
762 # def selectionChanged(self):
763 # current = self["config"].getCurrent()
766 class WlanScanAp(Screen,HelpableScreen):
768 <screen name="WlanScanAp" position="209,48" size="865,623" title="Wireless Network Configuration..." flags="wfNoBorder" backgroundColor="transparent">
769 <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
770 <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
771 <eLabel text="Wireless Network AP Scan..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
772 <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
773 <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
774 <convert type="ClockToText">Format:%H:%M</convert>
776 <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
777 <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
778 <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
779 <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
780 <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
781 <widget source="key_blue" render="Label" position="665,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
782 <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
783 <widget name="menulist" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
784 <widget source="Address" render="Label" position="490,220" zPosition="1" size="300,30" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
785 <widget source="ESSID" render="Label" position="490,250" zPosition="1" size="300,30" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
786 <widget source="Protocol" render="Label" position="490,280" zPosition="1" size="300,30" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
787 <widget source="Frequency" render="Label" position="490,310" zPosition="1" size="300,30" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
788 <widget source="Encryption key" render="Label" position="490,340" zPosition="1" size="300,30" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
789 <widget source="BitRate" render="Label" position="490,370" zPosition="1" size="300,60" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
792 def __init__(self, session, iface):
793 Screen.__init__(self,session)
794 HelpableScreen.__init__(self)
795 self.session = session
797 self.wlanscanap = None
798 # self.scanAPcount = 5
803 self["WizardActions"] = HelpableActionMap(self, "WizardActions",
805 "up": (self.up, _("move up to previous entry")),
806 "down": (self.down, _("move down to next entry")),
807 "left": (self.left, _("move up to first entry")),
808 "right": (self.right, _("move down to last entry")),
811 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
813 "cancel": (self.close, _("exit")),
814 "ok": (self.ok, "select AP"),
817 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
819 "red": (self.close, _("exit")),
820 "green": (self.ok, "select AP"),
821 "blue": (self.startWlanConfig, "Edit Wireless settings"),
824 self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
835 self["menulist"] = MenuList(self.SetApList)
836 self["key_red"] = StaticText(_("Close"))
837 self["key_green"] = StaticText(_("Select"))
838 self["key_blue"] = StaticText(_("EditSetting"))
839 self["Address"] = StaticText(_("Scanning AP List.."))
840 self["ESSID"] = StaticText(_("Wait a moment"))
841 self["Protocol"] = StaticText(" ")
842 self["Frequency"] = StaticText(" ")
843 self["Encryption key"] = StaticText(" ")
844 self["BitRate"] = StaticText(" ")
845 self.scanAPFailedTimer = eTimer()
846 self.scanAPFailedTimer.callback.append(self.scanAPFailed)
847 self.scanAplistTimer = eTimer()
848 self.scanAplistTimer.callback.append(self.scanApList)
849 self.scanAplistTimer.start(100,True)
852 self["menulist"].pageUp()
856 self["menulist"].pageDown()
860 self["menulist"].up()
864 self["menulist"].down()
869 selectAp=self["menulist"].getCurrent()[0]
873 def startWlanConfig(self):
875 selectAp=self["menulist"].getCurrent()[0]
877 self.session.open(WlanConfig,self.iface)
880 def scanApList(self):
881 # print "self.scanAPcount : ",self.scanAPcount
884 self.configurationmsg = self.session.open(MessageBox, _("Please wait for scanning AP..."), type = MessageBox.TYPE_INFO, enable_input = False)
885 os_system('ifconfig '+self.iface+" up")
886 self.wlanscanap = Console()
887 cmd = "iwlist "+self.iface+" scan"
889 self.wlanscanap.ePopen(cmd, self.iwlistfinnished,self.APListParse)
891 def iwlistfinnished(self, result, retval,extra_args):
892 # print "iwlistfinnished"
893 (statecallback) = extra_args
894 if self.wlanscanap is not None:
895 # print "retval = ",retval
897 self.wlanscanap = None
898 content = result.splitlines()
899 first = content[0].split()
904 if completed == True:
905 statecallback(result)
911 def APListParse(self,data):
913 if self.scanAPcount >0:
915 self.configurationmsg.close(True)
917 self.scanAplistTimer.start(500,True)
920 self.configurationmsg.close(True)
921 self.scanAPFailedTimer.start(500,True)
926 # self.scanAPcount =5
928 list = data.splitlines()
930 # print "line : ",line
931 if line.strip().startswith("Cell"): # Cell 01 - Address: 00:26:66:5C:EF:24
932 parts = line.strip().split(" ")
933 current_ap_id = int(parts[1])
934 self.apList[current_ap_id]={}
935 self.apList[current_ap_id]["Address"]=parts[4]
936 elif line.strip().startswith("ESSID"):
937 self.apList[current_ap_id]["ESSID"]=line.strip()[6:].strip('"')
938 self.SetApList.append( (self.apList[current_ap_id]["ESSID"],current_ap_id) )
939 elif line.strip().startswith("Protocol"):
940 self.apList[current_ap_id]["Protocol"]=line.strip()[9:]
941 elif line.strip().startswith("Frequency"):
942 self.apList[current_ap_id]["Frequency"]=line.strip()[10:]
943 elif line.strip().startswith("Encryption key"):
944 self.apList[current_ap_id]["Encryption key"]=line.strip()[15:]
945 elif line.strip().startswith("Bit Rates"):
946 self.apList[current_ap_id]["BitRate"]=line.strip()[10:]
948 print len(self.apList)
949 self.configurationmsg.close(True)
952 def scanAPFailed(self):
953 self.session.openWithCallback(self.ScanAPclose,MessageBox, _("Scan AP Failed"), MessageBox.TYPE_ERROR,10)
955 def displayApInfo(self):
956 if len(self.apList) >0:
957 self["menulist"].setList(self.SetApList)
958 index = self["menulist"].getCurrent()[1]
959 for key in ["Address", "ESSID", "Protocol", "Frequency", "Encryption key", "BitRate"]:
960 if self.apList[index].has_key(key):
961 self[key].setText((key+": "+self.apList[index][key]))
963 self[key].setText(("None"))
965 self.session.openWithCallback(self.ScanAPclose, MessageBox, _("No AP detected."), type = MessageBox.TYPE_INFO, timeout = 10)
967 def ScanAPclose(self,data):
970 class NetworkAdapterTest(Screen):
971 def __init__(self, session,iface):
972 Screen.__init__(self, session)
974 self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
976 self.onClose.append(self.cleanup)
977 self.onHide.append(self.cleanup)
979 self["updown_actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
983 "up": lambda: self.updownhandler('up'),
984 "down": lambda: self.updownhandler('down'),
988 self["shortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
993 self["infoshortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
995 "red": self.closeInfo,
996 "back": self.closeInfo,
998 self["shortcutsgreen"] = ActionMap(["ShortcutActions"],
1000 "green": self.KeyGreen,
1002 self["shortcutsgreen_restart"] = ActionMap(["ShortcutActions"],
1004 "green": self.KeyGreenRestart,
1006 self["shortcutsyellow"] = ActionMap(["ShortcutActions"],
1008 "yellow": self.KeyYellow,
1011 self["shortcutsgreen_restart"].setEnabled(False)
1012 self["updown_actions"].setEnabled(False)
1013 self["infoshortcuts"].setEnabled(False)
1014 self.onClose.append(self.delTimer)
1015 self.onLayoutFinish.append(self.layoutFinished)
1016 self.steptimer = False
1018 self.activebutton = 0
1019 self.nextStepTimer = eTimer()
1020 self.nextStepTimer.callback.append(self.nextStepTimerFire)
1023 if self.oldInterfaceState is False:
1024 iNetwork.setAdapterAttribute(self.iface, "up", self.oldInterfaceState)
1025 iNetwork.deactivateInterface(self.iface)
1028 def closeInfo(self):
1029 self["shortcuts"].setEnabled(True)
1030 self["infoshortcuts"].setEnabled(False)
1031 self["InfoText"].hide()
1032 self["InfoTextBorder"].hide()
1033 self["key_red"].setText(_("Close"))
1037 del self.nextStepTimer
1039 def nextStepTimerFire(self):
1040 self.nextStepTimer.stop()
1041 self.steptimer = False
1044 def updownhandler(self,direction):
1045 if direction == 'up':
1046 if self.activebutton >=2:
1047 self.activebutton -= 1
1049 self.activebutton = 6
1050 self.setActiveButton(self.activebutton)
1051 if direction == 'down':
1052 if self.activebutton <=5:
1053 self.activebutton += 1
1055 self.activebutton = 1
1056 self.setActiveButton(self.activebutton)
1058 def setActiveButton(self,button):
1060 self["EditSettingsButton"].setPixmapNum(0)
1061 self["EditSettings_Text"].setForegroundColorNum(0)
1062 self["NetworkInfo"].setPixmapNum(0)
1063 self["NetworkInfo_Text"].setForegroundColorNum(1)
1064 self["AdapterInfo"].setPixmapNum(1) # active
1065 self["AdapterInfo_Text"].setForegroundColorNum(2) # active
1067 self["AdapterInfo_Text"].setForegroundColorNum(1)
1068 self["AdapterInfo"].setPixmapNum(0)
1069 self["DhcpInfo"].setPixmapNum(0)
1070 self["DhcpInfo_Text"].setForegroundColorNum(1)
1071 self["NetworkInfo"].setPixmapNum(1) # active
1072 self["NetworkInfo_Text"].setForegroundColorNum(2) # active
1074 self["NetworkInfo"].setPixmapNum(0)
1075 self["NetworkInfo_Text"].setForegroundColorNum(1)
1076 self["IPInfo"].setPixmapNum(0)
1077 self["IPInfo_Text"].setForegroundColorNum(1)
1078 self["DhcpInfo"].setPixmapNum(1) # active
1079 self["DhcpInfo_Text"].setForegroundColorNum(2) # active
1081 self["DhcpInfo"].setPixmapNum(0)
1082 self["DhcpInfo_Text"].setForegroundColorNum(1)
1083 self["DNSInfo"].setPixmapNum(0)
1084 self["DNSInfo_Text"].setForegroundColorNum(1)
1085 self["IPInfo"].setPixmapNum(1) # active
1086 self["IPInfo_Text"].setForegroundColorNum(2) # active
1088 self["IPInfo"].setPixmapNum(0)
1089 self["IPInfo_Text"].setForegroundColorNum(1)
1090 self["EditSettingsButton"].setPixmapNum(0)
1091 self["EditSettings_Text"].setForegroundColorNum(0)
1092 self["DNSInfo"].setPixmapNum(1) # active
1093 self["DNSInfo_Text"].setForegroundColorNum(2) # active
1095 self["DNSInfo"].setPixmapNum(0)
1096 self["DNSInfo_Text"].setForegroundColorNum(1)
1097 self["EditSettingsButton"].setPixmapNum(1) # active
1098 self["EditSettings_Text"].setForegroundColorNum(2) # active
1099 self["AdapterInfo"].setPixmapNum(0)
1100 self["AdapterInfo_Text"].setForegroundColorNum(1)
1103 next = self.nextstep
1119 self.steptimer = True
1120 self.nextStepTimer.start(3000)
1121 self["key_yellow"].setText(_("Stop test"))
1124 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
1125 self["Adapter"].setForegroundColorNum(2)
1126 self["Adaptertext"].setForegroundColorNum(1)
1127 self["AdapterInfo_Text"].setForegroundColorNum(1)
1128 self["AdapterInfo_OK"].show()
1129 self.steptimer = True
1130 self.nextStepTimer.start(3000)
1133 self["Networktext"].setForegroundColorNum(1)
1134 self["Network"].setText(_("Please wait..."))
1135 self.AccessPointInfo(self.iface)
1136 self["NetworkInfo_Text"].setForegroundColorNum(1)
1137 self.steptimer = True
1138 self.nextStepTimer.start(3000)
1141 self["Dhcptext"].setForegroundColorNum(1)
1142 if iNetwork.getAdapterAttribute(self.iface, 'dhcp') is True:
1143 self["Dhcp"].setForegroundColorNum(2)
1144 self["Dhcp"].setText(_("enabled"))
1145 self["DhcpInfo_Check"].setPixmapNum(0)
1147 self["Dhcp"].setForegroundColorNum(1)
1148 self["Dhcp"].setText(_("disabled"))
1149 self["DhcpInfo_Check"].setPixmapNum(1)
1150 self["DhcpInfo_Check"].show()
1151 self["DhcpInfo_Text"].setForegroundColorNum(1)
1152 self.steptimer = True
1153 self.nextStepTimer.start(3000)
1156 self["IPtext"].setForegroundColorNum(1)
1157 self["IP"].setText(_("Please wait..."))
1158 iNetwork.checkNetworkState(self.NetworkStatedataAvail)
1161 self.steptimer = False
1162 self.nextStepTimer.stop()
1163 self["DNStext"].setForegroundColorNum(1)
1164 self["DNS"].setText(_("Please wait..."))
1165 iNetwork.checkDNSLookup(self.DNSLookupdataAvail)
1168 self["shortcutsgreen"].setEnabled(False)
1169 self["shortcutsyellow"].setEnabled(True)
1170 self["updown_actions"].setEnabled(False)
1171 self["key_yellow"].setText("")
1172 self["key_green"].setText("")
1173 self.steptimer = True
1174 self.nextStepTimer.start(1000)
1176 def KeyGreenRestart(self):
1178 self.layoutFinished()
1179 self["Adapter"].setText((""))
1180 self["Network"].setText((""))
1181 self["Dhcp"].setText((""))
1182 self["IP"].setText((""))
1183 self["DNS"].setText((""))
1184 self["AdapterInfo_Text"].setForegroundColorNum(0)
1185 self["NetworkInfo_Text"].setForegroundColorNum(0)
1186 self["DhcpInfo_Text"].setForegroundColorNum(0)
1187 self["IPInfo_Text"].setForegroundColorNum(0)
1188 self["DNSInfo_Text"].setForegroundColorNum(0)
1189 self["shortcutsgreen_restart"].setEnabled(False)
1190 self["shortcutsgreen"].setEnabled(False)
1191 self["shortcutsyellow"].setEnabled(True)
1192 self["updown_actions"].setEnabled(False)
1193 self["key_yellow"].setText("")
1194 self["key_green"].setText("")
1195 self.steptimer = True
1196 self.nextStepTimer.start(1000)
1199 self["infoshortcuts"].setEnabled(True)
1200 self["shortcuts"].setEnabled(False)
1201 if self.activebutton == 1: # Adapter Check
1202 self["InfoText"].setText(_("This test detects your configured Wireless LAN-Adapter."))
1203 self["InfoTextBorder"].show()
1204 self["InfoText"].show()
1205 self["key_red"].setText(_("Back"))
1206 if self.activebutton == 2: #LAN Check
1207 self["InfoText"].setText(_("This test checks whether a network cable is connected to your Wireless LAN-Adapter."))
1208 self["InfoTextBorder"].show()
1209 self["InfoText"].show()
1210 self["key_red"].setText(_("Back"))
1211 if self.activebutton == 3: #DHCP Check
1212 self["InfoText"].setText(_("This test checks whether your Wireless LAN Adapter is set up for automatic IP Address configuration with DHCP.\nIf you get a \"disabled\" message:\n - then your Wireless 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."))
1213 self["InfoTextBorder"].show()
1214 self["InfoText"].show()
1215 self["key_red"].setText(_("Back"))
1216 if self.activebutton == 4: # IP Check
1217 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"))
1218 self["InfoTextBorder"].show()
1219 self["InfoText"].show()
1220 self["key_red"].setText(_("Back"))
1221 if self.activebutton == 5: # DNS Check
1222 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"))
1223 self["InfoTextBorder"].show()
1224 self["InfoText"].show()
1225 self["key_red"].setText(_("Back"))
1226 if self.activebutton == 6: # Edit Settings
1227 self.session.open(WlanConfig,self.iface)
1228 self["shortcuts"].setEnabled(True)
1229 self["infoshortcuts"].setEnabled(False)
1231 def KeyYellow(self):
1233 self["shortcutsgreen_restart"].setEnabled(True)
1234 self["shortcutsgreen"].setEnabled(False)
1235 self["shortcutsyellow"].setEnabled(False)
1236 self["key_green"].setText(_("Restart test"))
1237 self["key_yellow"].setText("")
1238 self.steptimer = False
1239 self.nextStepTimer.stop()
1241 def layoutFinished(self):
1242 self.setTitle(_("Network test: ") + iNetwork.getFriendlyAdapterName(self.iface) )
1243 self["shortcutsyellow"].setEnabled(False)
1244 self["AdapterInfo_OK"].hide()
1245 self["NetworkInfo_Check"].hide()
1246 self["DhcpInfo_Check"].hide()
1247 self["IPInfo_Check"].hide()
1248 self["DNSInfo_Check"].hide()
1249 self["EditSettings_Text"].hide()
1250 self["EditSettingsButton"].hide()
1251 self["InfoText"].hide()
1252 self["InfoTextBorder"].hide()
1253 self["key_yellow"].setText("")
1255 def setLabels(self):
1256 self["Adaptertext"] = MultiColorLabel(_("LAN Adapter"))
1257 self["Adapter"] = MultiColorLabel()
1258 self["AdapterInfo"] = MultiPixmap()
1259 self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info"))
1260 self["AdapterInfo_OK"] = Pixmap()
1262 if self.iface in iNetwork.wlan_interfaces:
1263 self["Networktext"] = MultiColorLabel(_("Wireless Network"))
1265 self["Networktext"] = MultiColorLabel(_("Local Network"))
1267 self["Network"] = MultiColorLabel()
1268 self["NetworkInfo"] = MultiPixmap()
1269 self["NetworkInfo_Text"] = MultiColorLabel(_("Show Info"))
1270 self["NetworkInfo_Check"] = MultiPixmap()
1272 self["Dhcptext"] = MultiColorLabel(_("DHCP"))
1273 self["Dhcp"] = MultiColorLabel()
1274 self["DhcpInfo"] = MultiPixmap()
1275 self["DhcpInfo_Text"] = MultiColorLabel(_("Show Info"))
1276 self["DhcpInfo_Check"] = MultiPixmap()
1278 self["IPtext"] = MultiColorLabel(_("IP Address"))
1279 self["IP"] = MultiColorLabel()
1280 self["IPInfo"] = MultiPixmap()
1281 self["IPInfo_Text"] = MultiColorLabel(_("Show Info"))
1282 self["IPInfo_Check"] = MultiPixmap()
1284 self["DNStext"] = MultiColorLabel(_("Nameserver"))
1285 self["DNS"] = MultiColorLabel()
1286 self["DNSInfo"] = MultiPixmap()
1287 self["DNSInfo_Text"] = MultiColorLabel(_("Show Info"))
1288 self["DNSInfo_Check"] = MultiPixmap()
1290 self["EditSettings_Text"] = MultiColorLabel(_("Edit settings"))
1291 self["EditSettingsButton"] = MultiPixmap()
1293 self["key_red"] = StaticText(_("Close"))
1294 self["key_green"] = StaticText(_("Start test"))
1295 self["key_yellow"] = StaticText(_("Stop test"))
1297 self["InfoTextBorder"] = Pixmap()
1298 self["InfoText"] = Label()
1300 def NetworkStatedataAvail(self,data):
1302 self["IP"].setForegroundColorNum(2)
1303 self["IP"].setText(_("confirmed"))
1304 self["IPInfo_Check"].setPixmapNum(0)
1306 self["IP"].setForegroundColorNum(1)
1307 self["IP"].setText(_("unconfirmed"))
1308 self["IPInfo_Check"].setPixmapNum(1)
1309 self["IPInfo_Check"].show()
1310 self["IPInfo_Text"].setForegroundColorNum(1)
1311 self.steptimer = True
1312 self.nextStepTimer.start(3000)
1314 def DNSLookupdataAvail(self,data):
1316 self["DNS"].setForegroundColorNum(2)
1317 self["DNS"].setText(_("confirmed"))
1318 self["DNSInfo_Check"].setPixmapNum(0)
1320 self["DNS"].setForegroundColorNum(1)
1321 self["DNS"].setText(_("unconfirmed"))
1322 self["DNSInfo_Check"].setPixmapNum(1)
1323 self["DNSInfo_Check"].show()
1324 self["DNSInfo_Text"].setForegroundColorNum(1)
1325 self["EditSettings_Text"].show()
1326 self["EditSettingsButton"].setPixmapNum(1)
1327 self["EditSettings_Text"].setForegroundColorNum(2) # active
1328 self["EditSettingsButton"].show()
1329 self["key_yellow"].setText("")
1330 self["key_green"].setText(_("Restart test"))
1331 self["shortcutsgreen"].setEnabled(False)
1332 self["shortcutsgreen_restart"].setEnabled(True)
1333 self["shortcutsyellow"].setEnabled(False)
1334 self["updown_actions"].setEnabled(True)
1335 self.activebutton = 6
1337 def getInfoCB(self,status):
1338 if status is not None:
1339 if status.startswith("No Connection") or status.startswith("Not-Associated") or status == False:
1340 self["Network"].setForegroundColorNum(1)
1341 self["Network"].setText(_("disconnected"))
1342 self["NetworkInfo_Check"].setPixmapNum(1)
1343 self["NetworkInfo_Check"].show()
1345 self["Network"].setForegroundColorNum(2)
1346 self["Network"].setText(_("connected"))
1347 self["NetworkInfo_Check"].setPixmapNum(0)
1348 self["NetworkInfo_Check"].show()
1351 iNetwork.stopLinkStateConsole()
1352 iNetwork.stopDNSConsole()
1354 def AccessPointInfo(self,iface):
1355 cmd = "iwconfig %s"%iface
1356 self.iwconfigConsole = Console()
1357 self.iwconfigConsole.ePopen(cmd,self.readAP,self.getInfoCB)
1359 def readAP(self,result,retval,extra_args):
1360 (callback) = extra_args
1361 self.apState = False
1362 if self.iwconfigConsole is not None:
1364 self.iwconfigConsole = None
1365 for content in result.splitlines():
1366 if 'Access Point' in content:
1367 self.apState = content.strip().split('Access Point: ')[1]
1368 callback(self.apState)
1370 callback(self.apState)
1372 class Wlanstatus(Screen):
1374 <screen name="Wlanstatus" position="209,48" size="865,623" title="Wireless Network Configuration..." flags="wfNoBorder" backgroundColor="transparent">
1375 <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
1376 <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
1377 <eLabel text="Wireless Network Status..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
1378 <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
1379 <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
1380 <convert type="ClockToText">Format:%H:%M</convert>
1382 <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
1383 <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
1384 <widget source="status" render="Label" position="110,200" size="650,400" transparent="1" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" zPosition="1" />
1386 def __init__(self, session,iface):
1387 Screen.__init__(self,session)
1388 self.session = session
1390 self["status"] = StaticText(_("Wait a moment..."))
1391 self["key_red"] = StaticText(_("Close"))
1392 self["OkCancelActions"] = ActionMap(["ShortcutActions", "SetupActions" ],
1395 "cancel": self.close,
1400 def readstatus(self):
1401 self.wlanstatus = Console()
1402 cmd1 = "iwconfig "+self.iface
1403 self.wlanstatus.ePopen(cmd1, self.iwconfigfinnished,self.statusdisplay)
1405 def iwconfigfinnished(self, result, retval,extra_args):
1407 (statecallback) = extra_args
1408 if self.wlanstatus is not None:
1410 statecallback(result)
1417 def statusdisplay(self,data):
1419 self["status"].setText(_("No information..."))
1421 self["status"].setText(data)
1426 def openconfig(session, **kwargs):
1427 session.open(WlanSelection)
1429 def selSetup(menuid, **kwargs):
1431 if menuid != "system":
1434 for x in iNetwork.getAdapterList():
1435 if x.startswith('eth'):
1439 return [(_("Wireless LAN Setup"), openconfig, "wlansetup_config", 80)]
1444 def Plugins(**kwargs):
1445 return PluginDescriptor(name=_("Wireless LAN Setup"), description="Wireless LAN Setup", where = PluginDescriptor.WHERE_MENU, fnc=selSetup)