from Screens.VirtualKeyBoard import VirtualKeyBoard
from Screens.HelpMenu import HelpableScreen
from Components.Network import iNetwork
-#from Screens.NetworkSetup import NameserverSetup, NetworkAdapterTest
from Screens.NetworkSetup import NameserverSetup
from Components.Sources.StaticText import StaticText
from Components.Sources.Boolean import Boolean
from Tools.LoadPixmap import LoadPixmap
from Plugins.Plugin import PluginDescriptor
from enigma import eTimer, ePoint, eSize, RT_HALIGN_LEFT, eListboxPythonMultiContent, gFont
-from os import path as os_path, system as os_system, unlink
+from os import path as os_path, system as os_system, unlink,listdir
from re import compile as re_compile, search as re_search
from Tools.Directories import fileExists
import time
+from pythonwifi.iwlibs import Wireless
+import pythonwifi.flags
-class WlanSelection(Screen):
- skin = """
- <screen name="WlanSelection" position="209,48" size="865,623" title="Wireless Network Selection..." flags="wfNoBorder" backgroundColor="transparent">
- <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
- <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
- <eLabel text="Wireless Network Selection..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
- <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
- <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">
- <convert type="ClockToText">Format:%H:%M</convert>
- </widget>
- <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
- <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" />
- <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
- <widget name="menulist" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
- </screen>"""
-
+class WlanSelection(Screen,HelpableScreen):
+ skin = """
+ <screen position="center,center" size="510,400" title="Wireless Network Adapter Selection..." >
+ <ePixmap pixmap="skin_default/div-h.png" position="0,350" zPosition="1" size="560,2" />
+ <ePixmap pixmap="skin_default/border_menu.png" position="10,10" zPosition="1" size="250,300" transparent="1" alphatest="on" />
+
+ <ePixmap pixmap="skin_default/buttons/red.png" position="10,360" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/green.png" position="360,360" size="140,40" alphatest="on" />
+
+ <widget source="key_red" render="Label" position="10,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" foregroundColor="#ffffff" transparent="1" />
+ <widget source="key_green" render="Label" position="360,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" foregroundColor="#ffffff" transparent="1" />
+
+ <widget name="menulist" position="20,20" size="230,260" transparent="1" backgroundColor="#371e1c1a" zPosition="10" scrollbarMode="showOnDemand" />
+ <widget source="description" render="Label" position="305,10" size="195,300" font="Regular;19" halign="center" valign="center" />
+ </screen>
+ """
def __init__(self, session):
Screen.__init__(self,session)
+ HelpableScreen.__init__(self)
self.mainmenu = self.getWlandevice()
self["menulist"] = MenuList(self.mainmenu)
- self["key_red"] = StaticText(_("Close"))
- self["OkCancelActions"] = ActionMap(["ShortcutActions", "SetupActions" ],
+ self["key_red"] = StaticText(_("Close"))
+ self["key_green"] = StaticText(_("Select"))
+ self["description"] = StaticText()
+ self["description"].setText(_("Select Wireless Lan module. \n" ))
+ self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
{
- "ok": self.ok,
- "cancel": self.close,
- "red": self.close,
- }, -2)
+ "ok": (self.ok, _("select interface")),
+ "cancel": (self.close, _("exit network interface list")),
+ })
- def ok(self):
- ifaces=self["menulist"].getCurrent()[1]
- if ifaces == None:
- pass
- else:
- self.session.open(WlanSetup,ifaces)
+ self["ColorActions"] = HelpableActionMap(self, "ColorActions",
+ {
+ "green": (self.ok, _("select interface")),
+ "red": (self.close, _("exit network interface list")),
+ })
+ self.updateInterfaces()
+ self.onClose.append(self.cleanup)
+
+ def updateInterfaces(self):
+ iNetwork.config_ready = False
+ iNetwork.msgPlugins()
+ iNetwork.getInterfaces()
+
+ def checkIfaceMode(self, iface = None):
+ try:
+ obj = Wireless(iface)
+ if obj.getMode() == 'Master':
+ return -1
+ else:
+ return 0
+ except:
+ return -2
+ def ok(self):
+# print len(self["menulist"].list)
+ if len(self["menulist"].list) == 0:
+ self.session.open(MessageBox, (_("Can not find any WirelessLan Module\n")),MessageBox.TYPE_ERROR,5 )
+ return
+ iface=self["menulist"].getCurrent()[1]
+ if iface == None:
+ return
+ elif iNetwork.getAdapterAttribute(iface, "up") == True:
+ ret = self.checkIfaceMode(iface)
+ if ret == -2:
+ self.session.open(MessageBox, (_("Invalid WirelessLan Module.\n")),MessageBox.TYPE_ERROR,5 )
+ return
+ elif ret == -1:
+ self.session.open(MessageBox, (_("Can not setup WirelessLan Module in 'AP Mode'\n")),MessageBox.TYPE_ERROR,5 )
+ return
+ self.session.open(WlanSetup, iface)
def getWlandevice(self):
list = []
- for x in iNetwork.getAdapterList():
- if x.startswith('eth'):
+ for x in iNetwork.getInstalledAdapters():
+ if x.startswith('eth') or x.startswith('br') or x.startswith('mon'):
continue
- list.append((iNetwork.getFriendlyAdapterName(x),x))
+ description=self.getAdapterDescription(x)
+ if description == "Unknown network adapter":
+ list.append((description,x))
+ else:
+ list.append((description + " (%s)"%x,x))
return list
-# self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
-# print self.adapters
-# return self.adapters
-
+ def getAdapterDescription(self, iface):
+ classdir = "/sys/class/net/" + iface + "/device/"
+ driverdir = "/sys/class/net/" + iface + "/device/driver/"
+ if os_path.exists(classdir):
+ files = listdir(classdir)
+ if 'driver' in files:
+ if os_path.realpath(driverdir).endswith('rtw_usb_drv'):
+ return _("Realtek")+ " " + _("WLAN adapter.")
+ elif os_path.realpath(driverdir).endswith('ath_pci'):
+ return _("Atheros")+ " " + _("WLAN adapter.")
+ elif os_path.realpath(driverdir).endswith('zd1211b'):
+ return _("Zydas")+ " " + _("WLAN adapter.")
+ elif os_path.realpath(driverdir).endswith('rt73'):
+ return _("Ralink")+ " " + _("WLAN adapter.")
+ elif os_path.realpath(driverdir).endswith('rt73usb'):
+ return _("Ralink")+ " " + _("WLAN adapter.")
+ else:
+ return str(os_path.basename(os_path.realpath(driverdir))) + " " + _("WLAN adapter")
+ else:
+ return _("Unknown network adapter")
+ else:
+ return _("Unknown network adapter")
+
+ def cleanup(self):
+ iNetwork.stopGetInterfacesConsole()
class WlanSetup(Screen,HelpableScreen):
- skin = """
- <screen name="WlanSetup" position="209,48" size="865,623" title="Wireless Network Configuration..." flags="wfNoBorder" backgroundColor="transparent">
- <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
- <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
- <eLabel text="Wireless Network Configuration..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
- <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
- <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">
- <convert type="ClockToText">Format:%H:%M</convert>
- </widget>
- <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
- <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" />
- <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
- <widget name="menulist" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
- </screen>"""
+ skin = """
+ <screen position="center,center" size="510,400" title="Wireless Network Setup Menu..." >
+ <ePixmap pixmap="skin_default/div-h.png" position="0,350" zPosition="1" size="560,2" />
+ <ePixmap pixmap="skin_default/border_menu.png" position="10,10" zPosition="1" size="250,300" transparent="1" alphatest="on" />
+
+ <ePixmap pixmap="skin_default/buttons/red.png" position="10,360" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/green.png" position="360,360" size="140,40" alphatest="on" />
+
+ <widget source="key_red" render="Label" position="10,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" foregroundColor="#ffffff" transparent="1" />
+ <widget source="key_green" render="Label" position="360,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" foregroundColor="#ffffff" transparent="1" />
+
+ <widget name="menulist" position="20,20" size="230,260" transparent="1" backgroundColor="#371e1c1a" zPosition="10" scrollbarMode="showOnDemand" />
+ <widget source="description" render="Label" position="305,10" size="195,300" font="Regular;19" halign="center" valign="center" />
+ </screen>
+ """
def __init__(self, session, ifaces):
Screen.__init__(self, session)
HelpableScreen.__init__(self)
self.mainmenu = self.MakeMenu()
self["menulist"] = MenuList(self.mainmenu)
self["key_red"] = StaticText(_("Close"))
+ self["key_green"] = StaticText(_("Select"))
self["description"] = StaticText()
self["IFtext"] = StaticText()
self["IF"] = StaticText()
self["Statustext"] = StaticText()
self["statuspic"] = MultiPixmap()
self["statuspic"].hide()
+ self.onLayoutFinish.append(self.loadDescription)
self.oktext = _("Press OK on your remote control to continue.")
- self.reboottext = _("Your STB will restart after pressing OK on your remote control.")
- 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.")
self["WizardActions"] = HelpableActionMap(self, "WizardActions",
{
self["ColorActions"] = HelpableActionMap(self, "ColorActions",
{
- "red": (self.close, _("exit networkadapter setup menu")),
+ "red": (self.close, _("exit networkadapter setup menu")),
+ "green": (self.ok, _("select menu entry")),
})
self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
"left": self.left,
"right": self.right,
}, -2)
+ self.onClose.append(self.cleanup)
+
+ def loadDescription(self):
+ if self["menulist"].getCurrent()[1] == 'setting':
+ self["description"].setText(_("Edit the network configuration of your STB.\n" ) + self.oktext )
+ if self["menulist"].getCurrent()[1] == 'scanap':
+ self["description"].setText(_("Scan your network for wireless access points and connect to them using your selected wireless device.\n" ) + self.oktext )
+ if self["menulist"].getCurrent()[1] == 'dns':
+ self["description"].setText(_("Edit the Nameserver configuration of your STB.\n" ) + self.oktext )
+ if self["menulist"].getCurrent()[1] == 'status':
+ self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
+ if self["menulist"].getCurrent()[1] == 'test':
+ self["description"].setText(_("Test the network configuration of your STB.\n" ) + self.oktext )
+ if self["menulist"].getCurrent()[1] == 'restart':
+ self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
+
def up(self):
self["menulist"].up()
+ self.loadDescription()
+
def down(self):
self["menulist"].down()
+ self.loadDescription()
+
def left(self):
self["menulist"].pageUp()
+ self.loadDescription()
+
def right(self):
self["menulist"].pageDown()
+ self.loadDescription()
+
def ok(self):
+ self.cleanup()
if self["menulist"].getCurrent()[1] == 'setting':
self.session.openWithCallback(self.checklist, WlanConfig, self.iface)
elif self["menulist"].getCurrent()[1] == 'scanap':
- self.session.open(WlanScanAp, self.iface)
+ self.session.openWithCallback(self.WlanScanApCallback, WlanScanAp, self.iface)
elif self["menulist"].getCurrent()[1] == 'dns':
self.session.open(NameserverSetup)
elif self["menulist"].getCurrent()[1] == 'status':
elif self["menulist"].getCurrent()[1] == 'test':
self.session.openWithCallback(self.checklist,NetworkAdapterTest,self.iface)
elif self["menulist"].getCurrent()[1] == 'restart':
- self.session.openWithCallback(self.restartNet, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
+ self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
def checklist(self):
self["menulist"].setList(self.MakeMenu())
menu = []
menu.append((_("Adapter settings"), "setting"))
menu.append((_("Scan Wireless AP"), "scanap"))
- menu.append((_("Nameserver settings"), "dns"))
+# menu.append((_("Nameserver settings"), "dns"))
if iNetwork.getAdapterAttribute(self.iface, "up"):
menu.append((_("Show WLAN Status"), "status"))
menu.append((_("Network test"), "test"))
menu.append((_("Restart network"), "restart"))
return menu
-
- def restartNet(self,ret = False):
- if ret == True:
- os_system('/etc/init.d/networking restart')
-# self.updateStatusbar()
-# self.onLayoutFinish.append(self.layoutFinished)
-# self.onClose.append(self.cleanup)
+
+ def WlanScanApCallback(self, essid = None):
+ if essid is not None:
+ self.session.openWithCallback(self.checklist, WlanConfig, self.iface, essid)
+
+ def restartLan(self, ret = False):
+ if (ret == True):
+ iNetwork.restartNetwork(self.restartLanDataAvail)
+ self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while your network is restarting..."), type = MessageBox.TYPE_INFO, enable_input = False)
+
+ def restartLanDataAvail(self, data):
+ if data is True:
+ iNetwork.getInterfaces(self.getInterfacesDataAvail)
+
+ def getInterfacesDataAvail(self, data):
+ if data is True:
+ self.restartLanRef.close(True)
+
+ def restartfinishedCB(self,data):
+ if data is True:
+ self.session.open(MessageBox, _("Finished restarting your network"), type = MessageBox.TYPE_INFO, timeout = 5, default = False)
+
+ def cleanup(self):
+ iNetwork.stopRestartConsole()
+ iNetwork.stopGetInterfacesConsole()
wlanconfig = ConfigSubsection()
wlanconfig.usedevice = ConfigSelection(default = "off", choices = [
("wep", _("WEP")), ("wpa", _("WPA")), ("wpa2", _("WPA2")),("wpa/wpa2", _("WPA/WPA2"))])
wlanconfig.keytype = ConfigSelection(default = "ascii", choices = [
("ascii", _("ASCII")), ("hex", _("HEX"))])
-wlanconfig.key = ConfigText(default = "XXXXXXXX", visible_width = 50, fixed_size = False)
+wlanconfig.key = ConfigPassword(default = "XXXXXXXX", visible_width = 50, fixed_size = False)
wlanconfig.usegateway = ConfigSelection(default = "off", choices = [
("off", _("no")), ("on", _("yes"))])
wlanconfig.ip = ConfigIP([0,0,0,0])
selectap = None
class WlanConfig(Screen, ConfigListScreen, HelpableScreen):
- skin = """
- <screen name="WlanConfig" position="209,48" size="865,623" title="Wireless Network Configuration..." flags="wfNoBorder" backgroundColor="transparent">
- <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
- <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
- <eLabel text="Wireless Network Configuration..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
- <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
- <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">
- <convert type="ClockToText">Format:%H:%M</convert>
- </widget>
- <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
- <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" />
- <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
- <widget name="config" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
- <eLabel text="IP Address : " position="500,160" size="200,26" font="Semiboldit;22" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
- <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" />
- <eLabel text="NetMask : " position="500,220" size="200,26" font="Semiboldit;22" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
- <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" />
- <eLabel text="Gateway : " position="500,280" size="200,26" font="Semiboldit;22" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
- <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" />
- </screen>"""
- def __init__(self, session, iface):
+ skin = """
+ <screen position="center,center" size="510,400" title="Wireless Network Configuration..." >
+ <ePixmap pixmap="skin_default/buttons/red.png" position="10,360" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/green.png" position="360,360" size="140,40" alphatest="on" />
+
+ <widget source="key_red" render="Label" position="10,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" foregroundColor="#ffffff" transparent="1" />
+ <widget source="key_green" render="Label" position="360,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" foregroundColor="#ffffff" transparent="1" />
+
+ <widget name="config" position="10,10" backgroundColor="#371e1c1a" transparent="1" size="480,195" scrollbarMode="showOnDemand" />
+ <ePixmap pixmap="skin_default/div-h.png" position="0,210" zPosition="1" size="560,2" />
+ <widget source="ipaddresstext" render="Label" position="100,220" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="ipaddress" render="Label" position="300,220" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget source="netmasktext" render="Label" position="100,245" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="netmask" render="Label" position="300,245" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget source="gatewaytext" render="Label" position="100,270" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="gateway" render="Label" position="300,270" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget source="DNS1text" render="Label" position="100,295" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="DNS1" render="Label" position="300,295" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget source="DNS2text" render="Label" position="100,320" zPosition="1" size="190,21" font="Regular;19" halign="Left" valign="center" />
+ <widget source="DNS2" render="Label" position="300,320" zPosition="1" size="150,26" font="Regular;20" halign="Left" valign="center" />
+ <widget name="VKeyIcon" pixmap="skin_default/buttons/key_text.png" position="460,230" zPosition="10" size="35,25" transparent="1" alphatest="on" />
+ <widget name="HelpWindow" pixmap="skin_default/buttons/key_text.png" position="383,420" zPosition="1" size="1,1" transparent="1" alphatest="on" />
+ </screen>
+ """
+ def __init__(self, session, iface, essidSelected = None):
Screen.__init__(self,session)
self.session = session
- self.mainmenu = []
- self["key_red"] = StaticText(_("Close"))
+ self["key_red"] = StaticText(_("Close"))
+ self["key_green"] = StaticText(_("Ok"))
+ self["ipaddresstext"] = StaticText(_("IP Address"))
self["ipaddress"] = StaticText(_("[ N/A ]"))
- self["netmask"] = StaticText(_("[ N/A ]"))
+ self["netmasktext"] = StaticText(_("NetMask"))
+ self["netmask"] = StaticText(_("[ N/A ]"))
+ self["gatewaytext"] = StaticText(_("Gateway"))
self["gateway"] = StaticText(_("[ N/A ]"))
+ self["DNS1text"] = StaticText(_("Primary DNS"))
+ self["DNS1"] = StaticText(_("[ N/A ]"))
+ self["DNS2text"] = StaticText(_("Secondary DNS"))
+ self["DNS2"] = StaticText(_("[ N/A ]"))
self["OkCancelActions"] = ActionMap(["ShortcutActions", "SetupActions" ],
{
- "ok": self.ok,
- "cancel": self.close,
- "red": self.close,
+ "ok": self.saveWlanConfig,
+ "green": self.saveWlanConfig,
+ "cancel": self.keyCancel,
+ "red": self.keyCancel,
}, -2)
+ self["HelpWindow"] = Pixmap()
+ self["HelpWindow"].hide()
+ self["VKeyIcon"] = Pixmap()
+ self["VKeyIcon"].hide()
self.iface = iface
+ self.essidSelected = essidSelected
self.ssid = None
+ self.ap_scan = None
self.scan_ssid = None
self.key_mgmt = None
self.proto = None
self.key_type = None
- self.wep_key = None
-
- self.list = []
+ self.encryption_key = None
self.wlanscanap = None
+ self.wpaphraseconsole = None
+ self.list = []
ConfigListScreen.__init__(self, self.list,session = self.session)
- self.readifSetting()
+ self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
+ self.readWpaSupplicantConf()
+ self.scanAplistTimer = eTimer()
+ self.scanAplistTimer.callback.append(self.scanApList)
+ self.emptyListMsgTimer = eTimer()
+ self.emptyListMsgTimer.callback.append(self.emptyListMsg)
+ self.Console = Console()
+ self.updateInterfaces(self.readWlanSettings)
+ self.onClose.append(self.cleanup)
+ def updateInterfaces(self,callback = None):
+ iNetwork.config_ready = False
+ iNetwork.msgPlugins()
+ iNetwork.getInterfaces(callback)
- def keyLeft(self):
- ConfigListScreen.keyLeft(self)
- self.newConfig()
+ def readWlanSettings(self,ret=None):
+ if ret is not True:
+ print "getInterfaces Fail... "
+ if iNetwork.getAdapterAttribute(self.iface, "up") == True:
+ default_tmp = "on"
+ else:
+ default_tmp = "off"
+ wlanconfig.usedevice = ConfigSelection(default=default_tmp, choices = [("off", _("off")), ("on", _("on"))])
- def keyRight(self):
- ConfigListScreen.keyRight(self)
- self.newConfig()
+ if iNetwork.getAdapterAttribute(self.iface, "dhcp"):
+ default_tmp = "on"
+ else:
+ default_tmp = "off"
+ wlanconfig.usedhcp = ConfigSelection(default=default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
+ if iNetwork.getAdapterAttribute(self.iface, "dns-nameservers"):
+ self.dnsconfigdefault="on"
+ else:
+ self.dnsconfigdefault="off"
+ wlanconfig.hasdnsconfigentry = ConfigSelection(default=self.dnsconfigdefault, choices = [("off", _("no")), ("on", _("yes"))])
- def ok(self):
- if self["config"].isChanged():
- self.session.openWithCallback(self.confirmactive, MessageBox, (_("Are you sure you want to restart your network interfaces?\n") ) )
+ wlanconfig.ip = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0]
- def confirmactive(self, ret = False):
- if ret == False:
- return
+ wlanconfig.netmask = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0])
+ if iNetwork.getAdapterAttribute(self.iface, "gateway"):
+ default_tmp = "on"
else:
- num_configured_if = len(iNetwork.getConfiguredAdapters())
- if num_configured_if >= 1:
- if num_configured_if == 1 and self.iface in iNetwork.getConfiguredAdapters():
- self.saveif(False)
- else:
- self.session.openWithCallback(self.saveif, MessageBox, (_("Are you sure you want to deactive another network interfaces?\n") ) )
- else:
- self.saveif(False)
-
- def saveif(self,ret = False):
- self["OkCancelActions"].setEnabled(False)
- self["config_actions"].setEnabled(False)
- if ret == True:
- configuredInterfaces = iNetwork.getConfiguredAdapters()
- for interface in configuredInterfaces:
- if interface == self.iface:
- continue
- iNetwork.setAdapterAttribute(interface, "up", False)
- iNetwork.deactivateInterface(interface)
- wpafd = open("/etc/wpa_supplicant.conf","w")
- if wpafd > 0:
- contents = "#WPA Supplicant Configuration by enigma2\n"
- contents += "ctrl_interface=/var/run/wpa_supplicant\n"
- contents += "eapol_version=1\n"
- contents += "fast_reauth=1\n"
- contents += "ap_scan=1\n"
- contents += "network={\n"
- contents += "\tssid=\""+wlanconfig.essid.value+"\"\n"
- contents += "\tscan_ssid=0\n"
- if wlanconfig.encrypt.value == "on":
- if wlanconfig.method.value =="wep":
- contents += "\tkey_mgmt=NONE\n"
- contents += "\twep_key0="
- elif wlanconfig.method.value == "wpa":
- contents += "\tkey_mgmt=WPA-PSK\n"
- contents += "\tproto=WPA\n"
- contents += "\tpairwise=CCMP TKIP\n"
- contents += "\tgroup=CCMP TKIP\n"
- contents += "\tpsk="
- elif wlanconfig.method.value == "wpa2":
- contents += "\tkey_mgmt=WPA-PSK\n"
- contents += "\tproto=WPA RSN\n"
- contents += "\tpairwise=CCMP TKIP\n"
- contents += "\tgroup=CCMP TKIP\n"
- contents += "\tpsk="
- elif wlanconfig.method.value == "wpa/wpa2":
- contents += "\tkey_mgmt=WPA-PSK\n"
- contents += "\tproto=WPA WPA2\n"
- contents += "\tpairwise=CCMP TKIP\n"
- contents += "\tgroup=CCMP TKIP\n"
- contents += "\tpsk="
- if wlanconfig.keytype.value == "ascii":
- contents += "\""+wlanconfig.key.value+"\"\n"
- else:
- contents += wlanconfig.key.value+"\n"
- else:
- contents += "\tkey_mgmt=NONE\n"
- contents += "}\n"
- print "content = \n"+contents
- wpafd.write(contents)
- wpafd.close()
- iffd = open("/etc/network/interfaces","r")
- if iffd > 0:
- prev_content = ""
- next_content = ""
- data = iffd.readline()
- status = 0
- while len(data) >0 :
- if data.startswith('iface '+self.iface) or data.startswith('auto '+self.iface):
- status = 1
- data = iffd.readline()
- continue
- elif not data.startswith('auto lo') and data.startswith('auto '):
- if ret == True or data[5:] not in iNetwork.getConfiguredAdapters():
- data = iffd.readline()
- continue
- if status == 1 and data.startswith('iface ') or data.startswith('auto '):
- status = 2
- if status == 0:
- prev_content += data
- elif status == 2:
- next_content += data
- data = iffd.readline()
- iffd.close()
- iffd = open("/etc/network/interfaces","w")
- if iffd > 0 :
- if prev_content == "":
- prev_content = "# automatically generated by enigma2\n"
- prev_content += "# do Not change manually!\n\n"
- prev_content += "auto lo\n"
- prev_content += "iface lo inet loopback\n\n"
- iffd.write(prev_content)
- if wlanconfig.usedevice.value=="on":
- iNetwork.setAdapterAttribute(self.iface, "up", True)
- contents = "auto "+self.iface+"\n"
- contents += "iface "+self.iface+" inet "
- if wlanconfig.usedhcp.value =="on":
- iNetwork.setAdapterAttribute(self.iface, "dhcp", True)
- contents +="dhcp\n"
- else:
- iNetwork.setAdapterAttribute(self.iface, "dhcp", False)
- contents +="static\n"
- print wlanconfig.ip.value
- iNetwork.setAdapterAttribute(self.iface, "ip", wlanconfig.ip.value)
- iNetwork.setAdapterAttribute(self.iface, "netmask", wlanconfig.netmask.value)
- contents +="\taddress "+ self.formatip(wlanconfig.ip.value)+"\n"
- contents +="\tnetmask "+ self.formatip(wlanconfig.netmask.value)+"\n"
- if wlanconfig.usegateway.value == "on":
- iNetwork.setAdapterAttribute(self.iface, "gateway", wlanconfig.gateway.value)
- contents +="\tgateway "+ self.formatip(wlanconfig.gateway.value)+"\n"
- contents += "\n\tpre-up /usr/sbin/wpa_supplicant -i"+self.iface+" -c/etc/wpa_supplicant.conf -B -D"+iNetwork.detectWlanModule(self.iface)+"\n"
- contents += "\tpost-down wpa_cli terminate\n\n"
- iffd.write(contents)
- else:
- iNetwork.setAdapterAttribute(self.iface, "up", False)
- iNetwork.deactivateInterface(self.iface)
- iffd.write(next_content)
- iffd.close()
- self.restartNetwork(self.ConfigDataApply)
- self.configurationmsg = self.session.openWithCallback(self.WlanConfigClose, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False)
-
- def restartNetwork(self,callback=None):
- self.restartConsole = Console()
- cmd="/etc/init.d/networking restart"
- self.restartConsole.ePopen(cmd, self.restartNetworkFinished, callback)
-
- def restartNetworkFinished(self, result, retval,extra_args):
- ( callback ) = extra_args
- if callback is not None:
- callback(True)
-
- def ConfigDataApply(self,ret):
- if ret is True:
- iNetwork.getInterfaces(self.configurationmsgClose)
+ default_tmp = "off"
+ wlanconfig.usegateway = ConfigSelection(default = default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
- def configurationmsgClose(self,ret):
- if ret is True:
- self.configurationmsg.close(True)
-
- def WlanConfigClose(self,ret):
- if ret is True:
- self.close()
-
- def formatip(self, iplist):
- list = []
- list = iplist
- try:
- if len(iplist) == 4:
- result = str(iplist[0])+"."+str(iplist[1])+"."+str(iplist[2])+"."+str(iplist[3])
+ wlanconfig.gateway = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0])
+
+ self["ipaddress"].setText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "ip"))))
+ self["netmask"].setText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "netmask"))))
+ self["gateway"].setText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "gateway"))))
+
+ nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
+ self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
+ self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
+ self["DNS1"].setText(self.primaryDNS.getText())
+ self["DNS2"].setText(self.secondaryDNS.getText())
+
+ if self.encryption_key is not None:
+ default_tmp = "on"
+ else:
+ default_tmp = "off"
+ wlanconfig.encrypt = ConfigSelection(default = default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
+
+ if self.key_mgmt=="NONE":
+ default_tmp = "wep"
+ elif self.key_mgmt == "WPA-PSK":
+ if self.proto == "WPA":
+ default_tmp = "wpa"
+ elif self.proto == "RSN":
+ default_tmp = "wpa2"
+ elif self.proto in ( "WPA RSN", "WPA WPA2"):
+ default_tmp = "wpa/wpa2"
else:
- result ="0.0.0.0"
- return result
- except:
- return "[N/A]"
-
- def createConfig(self):
-# wlanconfig.essid = ConfigSelection(default = "none", choices = ["maruap3","maruap2","none"])
-
- self.tlist=[]
- self.usedeviceEntry = getConfigListEntry(_("Use Device"), wlanconfig.usedevice)
- self.usedhcpEntry = getConfigListEntry(_("Use DHCP"), wlanconfig.usedhcp)
- self.essidEntry = getConfigListEntry(_("ESSID"), wlanconfig.essid)
- self.encryptEntry = getConfigListEntry(_("Encrypt"), wlanconfig.encrypt)
- self.methodEntry = getConfigListEntry(_("Method"), wlanconfig.method)
- self.keytypeEntry = getConfigListEntry(_("Key Type"), wlanconfig.keytype)
- self.keyEntry = getConfigListEntry(_("KEY"), wlanconfig.key)
+ default_tmp = "wpa"
+ else:
+ default_tmp = "wep"
- self.ipEntry = getConfigListEntry(_("IP"), wlanconfig.ip)
- self.netmaskEntry = getConfigListEntry(_("NetMask"), wlanconfig.netmask)
+ wlanconfig.method = ConfigSelection(default = default_tmp, choices = [
+ ("wep", _("WEP")), ("wpa", _("WPA")), ("wpa2", _("WPA2")),("wpa/wpa2", _("WPA/WPA2"))])
- self.usegatewayEntry = getConfigListEntry(_("Use Gateway"), wlanconfig.usegateway)
- self.gatewayEntry = getConfigListEntry(_("Gateway"), wlanconfig.gateway)
-
- self.tlist.append( self.usedeviceEntry )
- if wlanconfig.usedevice.value is "on":
- self.tlist.append( self.usedhcpEntry )
- if wlanconfig.usedhcp.value is "off":
- self.tlist.append(self.ipEntry)
- self.tlist.append(self.netmaskEntry)
- self.tlist.append(self.usegatewayEntry)
- if wlanconfig.usegateway.value is "on":
- self.tlist.append(self.gatewayEntry)
- self.tlist.append( self.essidEntry )
- self.tlist.append( self.encryptEntry )
- if wlanconfig.encrypt.value is "on" :
- self.tlist.append( self.methodEntry )
- self.tlist.append( self.keytypeEntry )
- self.tlist.append( self.keyEntry )
-
- self["config"].list = self.tlist
- self["config"].l.setList(self.tlist)
- if not self.selectionChanged in self["config"].onSelectionChanged:
- self["config"].onSelectionChanged.append(self.selectionChanged)
+ if self.key_type == 0:
+ default_tmp = "hex"
+ else:
+ default_tmp = "ascii"
+ wlanconfig.keytype = ConfigSelection(default = default_tmp, choices = [
+ ("ascii", _("ASCII")), ("hex", _("HEX"))])
+ default_tmp = self.encryption_key or "XXXXXXXX"
+ wlanconfig.key = ConfigPassword(default = default_tmp, visible_width = 50, fixed_size = False)
+ self.getApList()
- def readifSetting(self):
+ def readWpaSupplicantConf(self):
try:
if fileExists("/etc/wpa_supplicant.conf"):
wpafd = open("/etc/wpa_supplicant.conf","r")
if wpafd >0:
data = wpafd.readline()
while len(data) > 0:
+# print "####readWpaSupplicantConf, data : ",data
data = data.lstrip()
if len(data) == 0:
data = wpafd.readline()
continue
if data.startswith('ssid=') and len(data) > 6:
self.ssid = data[6:-2]
+ elif data.startswith('ap_scan=') :
+ self.ap_scan = data[8:]
+# print "####readWpaSupplicantConf, ap_scan : ",self.ap_scan
elif data.startswith('scan_ssid=') and len(data) > 10:
self.scan_ssid = data[10:-1]
elif data.startswith('key_mgmt=') and len(data) > 9:
elif data.startswith('proto=') and len(data) > 6:
self.proto = data[6:-1]
elif data.startswith('wep_key0="') and len(data) > 11:
- self.key_type = 1
- self.wep_key = data[10:-2]
+ self.key_type = 1 # ascii
+ self.encryption_key = data[10:-2]
elif data.startswith('wep_key0=') and len(data) > 9:
- self.key_type = 0
- self.wep_key = data[9:-1]
+ self.key_type = 0 # hex
+ self.encryption_key = data[9:-1]
elif data.startswith('psk="') and len(data) > 6:
- self.key_type = 1
- self.wep_key = data[5:-2]
- elif data.startswith('psk=') and len(data) > 4:
- self.key_type = 0
- self.wep_key = data[4:-1]
-
+ self.key_type = 1 # ascii
+ self.encryption_key = data[5:-2]
+ elif data.startswith('#psk="') and len(data) > 6:
+ self.key_type = 0 # hex
+ self.encryption_key = data[6:-2]
+ elif not self.encryption_key and data.startswith('psk=') and len(data) > 4:
+ self.key_type = 0 # hex
+ self.encryption_key = data[4:-1]
data = wpafd.readline()
- print self.ssid,self.scan_ssid,self.key_mgmt,self.proto,self.key_type,self.wep_key
+# print self.ssid,self.scan_ssid,self.key_mgmt,self.proto,self.key_type,self.encryption_key
wpafd.close()
- self.setfromread()
else:
print 'read error'
else:
- self.setfromread()
+ pass
except:
- print 'open error'
+ print 'failed loading wpasupplicant.conf'
- def setfromread(self):
- iNetwork.getInterfaces()
-
- if iNetwork.getAdapterAttribute(self.iface, "up") == True:
- default_tmp = "on"
- else:
- default_tmp = "off"
- wlanconfig.usedevice = ConfigSelection(default=default_tmp, choices = [
- ("off", _("off")), ("on", _("on"))])
- if iNetwork.getAdapterAttribute(self.iface, "dhcp"):
- default_tmp = "on"
- else:
- default_tmp = "off"
- wlanconfig.usedhcp = ConfigSelection(default=default_tmp, choices = [
- ("off", _("no")), ("on", _("yes"))])
- wlanconfig .ip = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0]
- wlanconfig.netmask = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0])
- if iNetwork.getAdapterAttribute(self.iface, "gateway"):
- default_tmp = "on"
- else:
- default_tmp = "off"
- wlanconfig.usegateway = ConfigSelection(default = default_tmp, choices = [
- ("off", _("no")), ("on", _("yes"))])
- wlanconfig.gateway = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0])
+ def createConfig(self):
+ self.configList=[]
+ self.usedeviceEntry = getConfigListEntry(_("Use Device"), wlanconfig.usedevice)
+ self.usedhcpEntry = getConfigListEntry(_("Use DHCP"), wlanconfig.usedhcp)
+ self.essidEntry = getConfigListEntry(_("ESSID"), wlanconfig.essid)
+ self.hiddenessidEntry = getConfigListEntry(_("Input Hidden ESSID"), wlanconfig.hiddenessid)
+ self.encryptEntry = getConfigListEntry(_("Encrypt"), wlanconfig.encrypt)
+ self.methodEntry = getConfigListEntry(_("Method"), wlanconfig.method)
+ self.keytypeEntry = getConfigListEntry(_("Key Type"), wlanconfig.keytype)
+ self.keyEntry = getConfigListEntry(_("KEY"), wlanconfig.key)
- self["ipaddress"] = StaticText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "ip"))))
- self["netmask"] = StaticText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "netmask"))))
- self["gateway"] = StaticText(_(self.formatip(iNetwork.getAdapterAttribute(self.iface, "gateway"))))
+ self.ipEntry = getConfigListEntry(_("IP"), wlanconfig.ip)
+ self.netmaskEntry = getConfigListEntry(_("NetMask"), wlanconfig.netmask)
- if self.wep_key is not None:
- default_tmp = "on"
+ self.usegatewayEntry = getConfigListEntry(_("Use Gateway"), wlanconfig.usegateway)
+ self.gatewayEntry = getConfigListEntry(_("Gateway"), wlanconfig.gateway)
+
+ manualNameservers = (iNetwork.getInterfacesNameserverList(self.iface) + [[0,0,0,0]] * 2)[0:2]
+ self.manualPrimaryDNS = NoSave(ConfigIP(default=manualNameservers[0]))
+ self.manualSecondaryDNS = NoSave(ConfigIP(default=manualNameservers[1]))
+ nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
+ self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
+ self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
+ self.DNSConfigEntry = getConfigListEntry(_("Use Manual dns-nameserver"), wlanconfig.hasdnsconfigentry)
+ self.primaryDNSConfigEntry = getConfigListEntry(_('Primary DNS'), self.manualPrimaryDNS)
+ self.secondaryDNSConfigEntry = getConfigListEntry(_('Secondary DNS'), self.manualSecondaryDNS)
+
+ self.configList.append( self.usedeviceEntry )
+ if wlanconfig.usedevice.value is "on":
+ self.configList.append( self.usedhcpEntry )
+ if wlanconfig.usedhcp.value is "off":
+ self.configList.append(self.ipEntry)
+ self.configList.append(self.netmaskEntry)
+ self.configList.append(self.usegatewayEntry)
+ if wlanconfig.usegateway.value is "on":
+ self.configList.append(self.gatewayEntry)
+ if wlanconfig.usedhcp.value is "on":
+ self.configList.append(self.DNSConfigEntry)
+ if wlanconfig.hasdnsconfigentry.value is "on" or wlanconfig.usedhcp.value is "off":
+ self.configList.append(self.primaryDNSConfigEntry)
+ self.configList.append(self.secondaryDNSConfigEntry)
+
+ self.configList.append( self.essidEntry )
+ if wlanconfig.essid.value == 'Input hidden ESSID':
+ self.configList.append( self.hiddenessidEntry )
+ self.configList.append( self.encryptEntry )
+ if wlanconfig.encrypt.value is "on" :
+ self.configList.append( self.methodEntry )
+ if wlanconfig.method.value =="wep":
+ self.configList.append( self.keytypeEntry )
+ self.configList.append( self.keyEntry )
+
+ self["config"].list = self.configList
+ self["config"].l.setList(self.configList)
+ if not self.showTextIcon in self["config"].onSelectionChanged:
+ self["config"].onSelectionChanged.append(self.showTextIcon)
+
+ def showTextIcon(self):
+ if isinstance(self["config"].getCurrent()[1], ConfigText) or isinstance(self["config"].getCurrent()[1], ConfigPassword):
+ self["VKeyIcon"].show()
else:
- default_tmp = "off"
- wlanconfig.encrypt = ConfigSelection(default = default_tmp, choices = [
- ("off", _("no")), ("on", _("yes"))])
+ self["VKeyIcon"].hide()
- if self.key_mgmt=="NONE":
- default_tmp = "wep"
- elif self.key_mgmt == "WPA-PSK":
- if self.proto == "WPA":
- default_tmp = "wpa"
- elif self.proto == "WPA RSN":
- default_tmp = "wpa2"
- elif self.proto == "WPA WPA2":
- default_tmp = "wpa/wpa2"
+ def getApList(self):
+ if self.essidSelected is None:
+ self.apList = []
+ self.configurationmsg = self.session.open(MessageBox, _("Please wait for scanning AP..."), type = MessageBox.TYPE_INFO, enable_input = False)
+ self.scanAplistTimer.start(100,True)
+ else:
+ self.apList = [self.essidSelected]
+ wlanconfig.essid = ConfigSelection(choices = self.apList)
+ if self.ssid is not None:
+ wlanconfig.hiddenessid = ConfigText(default = self.ssid, visible_width = 50, fixed_size = False)
else:
- default_tmp = "wpa"
+ wlanconfig.hiddenessid = ConfigText(default = "<Input ESSID>", visible_width = 50, fixed_size = False)
+ self.createConfig()
+
+ def getScanResult(self, wirelessObj):
+ Iwscanresult = None
+ try:
+ Iwscanresult = wirelessObj.scan()
+ except IOError:
+ print "%s Interface doesn't support scanning.."%self.iface
+ return Iwscanresult
+
+ def scanApList(self):
+ if self.oldInterfaceState is not True:
+ os_system("ifconfig "+self.iface+" up")
+ iNetwork.setAdapterAttribute(self.iface, "up", True)
+ wirelessObj = Wireless(self.iface)
+ Iwscanresult=self.getScanResult(wirelessObj)
+ if Iwscanresult is None or len(Iwscanresult.aplist) == 0 :
+ import time
+ time.sleep(1.5)
+ Iwscanresult=self.getScanResult(wirelessObj)
+ self.configurationmsg.close(True)
+ if Iwscanresult is None or len( Iwscanresult.aplist) == 0:
+ self.emptyListMsgTimer.start(100,True)
else:
- default_tmp = "wep"
-
- wlanconfig.method = ConfigSelection(default = default_tmp, choices = [
- ("wep", _("WEP")), ("wpa", _("WPA")), ("wpa2", _("WPA2")),("wpa/wpa2", _("WPA/WPA2"))])
-
- if self.key_type == 0:
- default_tmp = "hex"
+ for ap in Iwscanresult:
+ if ap.essid is not None and ap.essid not in self.apList and len(ap.essid) > 0:
+ self.apList.append(ap.essid)
+ self.apList.append('Input hidden ESSID')
+ if selectap is not None and selectap in self.apList:
+ wlanconfig.essid = ConfigSelection(default=selectap,choices = self.apList)
+ elif self.scan_ssid is not None and self.scan_ssid.strip() == '1':
+ wlanconfig.essid = ConfigSelection(default='Input hidden ESSID',choices = self.apList)
+ elif self.ssid is not None and self.ssid in self.apList:
+ wlanconfig.essid = ConfigSelection(default=self.ssid, choices = self.apList)
else:
- default_tmp = "ascii"
- wlanconfig.keytype = ConfigSelection(default = default_tmp, choices = [
- ("ascii", _("ASCII")), ("hex", _("HEX"))])
- default_tmp = self.wep_key or "XXXXXXXX"
- wlanconfig.key = ConfigText(default = default_tmp, visible_width = 50, fixed_size = False)
-
- if wlanconfig.usedevice.value is "on":
- self.getAplist()
+ try:
+ wlanconfig.essid = ConfigSelection(defalut = self.apList[0], choices = self.apList)
+ except:
+ wlanconfig.essid = ConfigSelection(choices = self.apList)
+ if self.ssid is not None:
+ wlanconfig.hiddenessid = ConfigText(default = self.ssid, visible_width = 50, fixed_size = False)
else:
- self.createConfig()
-
+ wlanconfig.hiddenessid = ConfigText(default = "<Input ESSID>", visible_width = 50, fixed_size = False)
+ self.createConfig()
+
+ def emptyListMsg(self):
+ self.session.open(MessageBox, _("No AP detected."), type = MessageBox.TYPE_INFO, timeout = 10)
+
+ def keyLeft(self):
+ ConfigListScreen.keyLeft(self)
+ self.newConfig()
+
+ def keyRight(self):
+ ConfigListScreen.keyRight(self)
+ self.newConfig()
def newConfig(self):
- if self["config"].getCurrent() == self.usedeviceEntry :
- if wlanconfig.usedevice.value is "on":
- self.getAplist()
- else:
- if iNetwork.getAdapterAttribute(self.iface, "up"):
- iNetwork.setAdapterAttribute(self.iface, "up",False)
- iNetwork.deactivateInterface(self.iface)
- self.createConfig()
- elif self["config"].getCurrent() == self.encryptEntry or self["config"].getCurrent() == self.usedhcpEntry \
- or self["config"].getCurrent() == self.usegatewayEntry :
+ if self["config"].getCurrent() == self.usedeviceEntry or self["config"].getCurrent() == self.encryptEntry \
+ or self["config"].getCurrent() == self.usedhcpEntry or self["config"].getCurrent() == self.usegatewayEntry \
+ or self["config"].getCurrent() == self.essidEntry or self["config"].getCurrent() == self.methodEntry \
+ or self["config"].getCurrent() == self.DNSConfigEntry:
self.createConfig()
- def selectionChanged(self):
- current = self["config"].getCurrent()
- print current
+ def saveWlanConfig(self):
+ try:
+ if self["config"].getCurrent() == self.keyEntry or self["config"].getCurrent() == self.hiddenessidEntry :
+ self["config"].getCurrent()[1].onDeselect(self.session)
+ if self["config"].isChanged():
+ self.session.openWithCallback(self.checkNetworkConfig, MessageBox, (_("Are you sure you want to restart your network interfaces?\n") ) )
+ else:
+ self.session.openWithCallback(self.checkNetworkConfig, MessageBox, (_("Network configuration is not changed....\n\nAre you sure you want to restart your network interfaces?\n") ) )
+ except:
+ pass
- def getAplist(self):
- self["OkCancelActions"].setEnabled(False) #chang
- self["config_actions"].setEnabled(False) #chang
- if iNetwork.getAdapterAttribute(self.iface, "up") is not True:
- os_system('ifconfig '+self.iface+" up")
- iNetwork.setAdapterAttribute(self.iface, "up",True)
- time.sleep(1.5)
- self.wlanscanap = Console()
- cmd1 = "iwlist "+self.iface+" scan"
- print 'cmd',cmd1
- self.wlanscanap.ePopen(cmd1, self.iwlistfinnished,self.aplistparse)
+ def checkNetworkConfig(self, ret = False):
+ if ret == False:
+ if self["config"].getCurrent() == self.keyEntry or self["config"].getCurrent() == self.hiddenessidEntry :
+ self["config"].getCurrent()[1].onSelect(self.session)
+ return
+ if wlanconfig.essid.value == 'Input hidden ESSID':
+ if len(wlanconfig.hiddenessid.value) == 0:
+ self.session.open(MessageBox, ("PLEASE INPUT HIDDEN ESSID"), type = MessageBox.TYPE_ERROR, timeout = 10)
+ return
+ if len(wlanconfig.key.value) == 0:
+ self.session.open(MessageBox, ("PLEASE INPUT NETWORK KEY"), type = MessageBox.TYPE_ERROR, timeout = 10)
+ return
+ self.checkNetworkShares()
+
+ def checkNetworkShares(self):
+ if not self.Console:
+ self.Console = Console()
+ cmd = "cat /proc/mounts"
+ self.Console.ePopen(cmd, self.checkSharesFinished, self.confirmAnotherIfaces)
+
+ def checkSharesFinished(self, result, retval, extra_args):
+ callback = extra_args
+# print "checkMountsFinished : result : \n",result
+ networks = ['nfs','smbfs','ncp','coda']
+ for line in result.splitlines():
+ split = line.strip().split(' ',3)
+ if split[2] in networks:
+ self.session.open(MessageBox, ("NOT deconfiguring network interfaces :\n network shares still mounted\n"), type = MessageBox.TYPE_ERROR, timeout = 10)
+ callback(False)
+ if self["config"].getCurrent() == self.keyEntry or self["config"].getCurrent() == self.hiddenessidEntry :
+ self["config"].getCurrent()[1].onSelect(self.session)
+ return
+ callback(True)
+
+ def confirmAnotherIfaces(self, ret = False):
+ if ret == False:
+ return
+ else:
+ num_configured_if = len(iNetwork.getConfiguredAdapters())
+ if num_configured_if >= 1:
+ if num_configured_if == 1 and self.iface in iNetwork.getConfiguredAdapters():
+ self.getWpaPhrase(False)
+ else:
+ self.session.openWithCallback(self.getWpaPhrase, MessageBox, _("A second configured interface has been found.\n\nDo you want to disable the second network interface?"), default = True)
+ else:
+ self.getWpaPhrase(False)
- def iwlistfinnished(self, result, retval,extra_args):
- (statecallback) = extra_args
- try:
- if self.wlanscanap is not None:
- if retval == 0:
- self.wlanscanap = None
- content = result.splitlines()
- first = content[0].split()
- completed = False
- for x in first:
- if x == 'completed':
- completed = True
- if completed == True:
- statecallback(result)
+ def getWpaPhrase(self,ret):
+ if ret == True:
+ configuredInterfaces = iNetwork.getConfiguredAdapters()
+ for interface in configuredInterfaces:
+ if interface == self.iface:
+ continue
+ iNetwork.setAdapterAttribute(interface, "up", False)
+ iNetwork.deactivateInterface(interface)
+ if wlanconfig.method.value =="wep":
+ self.writeWpasupplicantConf("wep") # passphrasekey is not None
+ else:
+ if wlanconfig.essid.value == 'Input hidden ESSID':
+ cmd = "wpa_passphrase '%s' %s" % (wlanconfig.hiddenessid.value,wlanconfig.key.value)
+ else :
+ cmd = "wpa_passphrase '%s' %s" % (wlanconfig.essid.value,wlanconfig.key.value)
+ print cmd
+ self.wpaphraseconsole = Console()
+ self.wpaphraseconsole.ePopen(cmd, self.parseWpaPhrase, self.writeWpasupplicantConf)
+
+ def parseWpaPhrase(self, result, retval, extra_args):
+ (writewlanconfig) = extra_args
+ if self.wpaphraseconsole is not None:
+ if retval == 0:
+ self.wpaphraseconsole.killAll()
+ self.wpaphraseconsole = None
+# print "parseWpaPhrase result : "
+# print result
+ psk = None
+ for line in result.splitlines():
+ if line.find('ssid') == -1 and line.find('#psk=') != -1:
+ plainpwd = line
+ elif line.find('psk=') != -1:
+ psk = line
+ if psk:
+ writewlanconfig(psk,plainpwd)
+ else:
+ writewlanconfig(None)
+ else:
+ writewlanconfig(None)
+
+ def writeWpasupplicantConf(self, passphrasekey=None,plainpwd=None):
+ if passphrasekey:
+ wpafd = open("/etc/wpa_supplicant.conf","w")
+ if wpafd > 0:
+ contents = "#WPA Supplicant Configuration by STB\n"
+ contents += "ctrl_interface=/var/run/wpa_supplicant\n"
+ contents += "eapol_version=1\n"
+ contents += "fast_reauth=1\n"
+ contents += "ap_scan=1\n"
+ contents += "network={\n"
+ if wlanconfig.essid.value == 'Input hidden ESSID':
+ contents += "\tssid=\""+wlanconfig.hiddenessid.value+"\"\n"
+ contents += "\tscan_ssid=1\n"
+ else :
+ contents += "\tssid=\""+wlanconfig.essid.value+"\"\n"
+ contents += "\tscan_ssid=0\n"
+ if wlanconfig.encrypt.value == "on":
+ if wlanconfig.method.value =="wep":
+ contents += "\tkey_mgmt=NONE\n"
+ contents += "\twep_key0="
+ if wlanconfig.keytype.value == "ascii":
+ contents += "\""+wlanconfig.key.value+"\"\n"
+ else:
+ contents += wlanconfig.key.value+"\n"
else:
- statecallback(0)
+# print "plainpwd : ",plainpwd
+# print "passphrasekey : ",passphrasekey
+ if wlanconfig.method.value == "wpa":
+ contents += "\tkey_mgmt=WPA-PSK\n"
+ contents += "\tproto=WPA\n"
+ contents += "\tpairwise=CCMP TKIP\n"
+ contents += "\tgroup=CCMP TKIP\n"
+ elif wlanconfig.method.value == "wpa2":
+ contents += "\tkey_mgmt=WPA-PSK\n"
+ contents += "\tproto=RSN\n"
+ contents += "\tpairwise=CCMP TKIP\n"
+ contents += "\tgroup=CCMP TKIP\n"
+ else:
+ contents += "\tkey_mgmt=WPA-PSK\n"
+ contents += "\tproto=WPA RSN\n"
+ contents += "\tpairwise=CCMP TKIP\n"
+ contents += "\tgroup=CCMP TKIP\n"
+ contents += plainpwd+"\n"
+ contents += passphrasekey+"\n"
else:
- statecallback(0)
- except:
- self.close()
+ contents += "\tkey_mgmt=NONE\n"
+ contents += "}\n"
+ print "content = \n"+contents
+ wpafd.write(contents)
+ wpafd.close()
+ self.writeNetConfig()
+ else :
+ self.session.open(MessageBox, _("wpa_supplicant.conf open error."), type = MessageBox.TYPE_ERROR, timeout = 10)
+ return
+ else:
+ self.session.open(MessageBox, _("Can NOT generate passphrase"), type = MessageBox.TYPE_ERROR, timeout = 10)
+ return
+
+ def writeNetConfig(self):
+ if wlanconfig.usedevice.value=="on":
+ iNetwork.setAdapterAttribute(self.iface, "up", True)
+ if wlanconfig.usedhcp.value =="on":
+ iNetwork.setAdapterAttribute(self.iface, "dhcp", True)
+ else:
+ iNetwork.setAdapterAttribute(self.iface, "dhcp", False)
+ iNetwork.setAdapterAttribute(self.iface, "ip", wlanconfig.ip.value)
+ iNetwork.setAdapterAttribute(self.iface, "netmask", wlanconfig.netmask.value)
+ if wlanconfig.usegateway.value == "on":
+ iNetwork.setAdapterAttribute(self.iface, "gateway", wlanconfig.gateway.value)
+ if wlanconfig.hasdnsconfigentry.value == "on" or wlanconfig.usedhcp.value == "off":
+ interfacesDnsLines = self.makeLineDnsNameservers([self.manualPrimaryDNS.value, self.manualSecondaryDNS.value])
+ if interfacesDnsLines == "" :
+ interfacesDnsLines = False
+ iNetwork.setAdapterAttribute(self.iface, "dns-nameservers", interfacesDnsLines)
+ else:
+ iNetwork.setAdapterAttribute(self.iface, "dns-nameservers", False)
+ else:
+ iNetwork.setAdapterAttribute(self.iface, "up", False)
+ iNetwork.deactivateInterface(self.iface)
+ contents = "\tpre-up wpa_supplicant -i"+self.iface+" -c/etc/wpa_supplicant.conf -B -D"+iNetwork.detectWlanModule(self.iface)+"\n"
+ contents += "\tpost-down wpa_cli terminate\n"
+ iNetwork.setAdapterAttribute(self.iface, "configStrings", contents)
+ iNetwork.writeNetworkConfig()
+ iNetwork.restartNetwork(self.updateCurrentInterfaces)
+ self.configurationmsg = None
+ self.configurationmsg = self.session.openWithCallback(self.configFinished, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False)
+
+ def makeLineDnsNameservers(self, nameservers = []):
+ line = ""
+ entry = ' '.join([("%d.%d.%d.%d" % tuple(x)) for x in nameservers if x != [0, 0, 0, 0] ])
+ if len(entry):
+ line+="\tdns-nameservers %s\n" % entry
+ return line
+
+ def updateCurrentInterfaces(self,ret):
+ if ret is True:
+ iNetwork.getInterfaces(self.configurationMsgClose)
+ def configurationMsgClose(self,ret):
+ if ret is True and self.configurationmsg is not None:
+ self.configurationmsg.close(True)
- def aplistparse(self,data):
+ def configFinished(self,data):
global selectap
- if data == 0:
-# self.session.openWithCallback(self.createConfig ,MessageBox, _("Scan AP Failed"), MessageBox.TYPE_INFO,2)
- self.session.open(MessageBox, _("Scan AP Failed"), MessageBox.TYPE_INFO,2)
- else:
- self.aplist = []
- list = data.splitlines()
-# print 'aplistparse',list
- for x in list:
- xx = x.lstrip()
- if xx.startswith('ESSID:') and len(xx)>8:
- self.aplist.append(xx[7:-1])
-# print 'rlist\n',rlist
- if len(self.aplist) ==0:
- self.aplist.append('none')
-# print 'aplist', self.aplist
- defaultap = None
- for x in self.aplist:
- if x == selectap:
- defaultap = x
- print 'defaultap',defaultap,self.aplist,selectap
- if selectap is None and self.ssid is not None and self.ssid in self.aplist:
- wlanconfig.essid = ConfigSelection(default=self.ssid,choices = self.aplist)
- elif defaultap == selectap and selectap is not None:
- wlanconfig.essid = ConfigSelection(default=selectap,choices = self.aplist)
+ if data is True:
+ self.session.openWithCallback(self.configFinishedCB, MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10)
+ selectap = wlanconfig.essid.value
+
+ def configFinishedCB(self,data):
+ if data is not None:
+ if data is True:
+ self.close()
+
+ def formatip(self, iplist):
+ list = []
+ list = iplist
+# print "iplist : ",iplist
+ try:
+ if len(iplist) == 4:
+ result = str(iplist[0])+"."+str(iplist[1])+"."+str(iplist[2])+"."+str(iplist[3])
else:
- wlanconfig.essid = ConfigSelection(choices = self.aplist)
+ result ="0.0.0.0"
+# print "result : ",result
+ return result
+ except:
+ return "[N/A]"
- self.createConfig()
- self["OkCancelActions"].setEnabled(True)
- self["config_actions"].setEnabled(True)
- if iNetwork.getAdapterAttribute(self.iface, "up"):
- pass
+ def keyCancelConfirm(self, result):
+ if not result:
+ return
+ if self.oldInterfaceState is False:
+ iNetwork.setAdapterAttribute(self.iface, "up", False)
+ iNetwork.deactivateInterface(self.iface,self.keyCancelCB)
+ else:
+ self.close()
+
+ def keyCancel(self,yesno = True):
+ if self["config"].isChanged():
+ self.session.openWithCallback(self.keyCancelConfirm, MessageBox, _("Really close without saving settings?"))
else:
- os_system('ifconfig '+self.iface+" down")
-
-class WlanScanAp(Screen):
- skin = """
- <screen name="WlanScanAp" position="209,48" size="865,623" title="Wireless Network Scan..." flags="wfNoBorder" backgroundColor="transparent">
- <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
- <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
- <eLabel text="Wireless Network Scan..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
- <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
- <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">
- <convert type="ClockToText">Format:%H:%M</convert>
- </widget>
- <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
- <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" />
- <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
- <widget name="menulist" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
- <widget source="ap_strength" render="Label" position="490,250" zPosition="1" size="300,30" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
- <widget source="ap_quality" render="Label" position="490,280" zPosition="1" size="300,30" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
- </screen>"""
+ self.keyCancelConfirm(True)
+
+ def keyCancelCB(self,data):
+ if data is not None:
+ if data is True:
+ self.close()
+
+ def cleanup(self):
+ iNetwork.stopRestartConsole()
+ iNetwork.stopGetInterfacesConsole()
+ iNetwork.stopDeactivateInterfaceConsole()
+ self.stopwlanscanapConsole()
+ self.stopCheckNetworkSharesConsole()
+ self.stopWpaPhraseConsole()
+
+ def stopwlanscanapConsole(self):
+ if self.wlanscanap is not None:
+ if len(self.wlanscanap.appContainers):
+ for name in self.wlanscanap.appContainers.keys():
+ self.wlanscanap.kill(name)
+
+ def stopCheckNetworkSharesConsole(self):
+ if self.Console is not None:
+ if len(self.Console.appContainers):
+ for name in self.Console.appContainers.keys():
+ self.Console.kill(name)
+
+ def stopWpaPhraseConsole(self):
+ if self.wpaphraseconsole is not None:
+ if len(self.wpaphraseconsole.appContainers):
+ for name in self.wpaphraseconsole.appContainers.keys():
+ self.wpaphraseconsole.kill(name)
+
+class WlanScanAp(Screen,HelpableScreen):
+ skin = """
+ <screen position="center,center" size="510,400" title="Wireless Network AP Scan..." >
+ <ePixmap pixmap="skin_default/div-h.png" position="0,350" zPosition="1" size="560,2" />
+ <ePixmap pixmap="skin_default/border_menu.png" position="10,10" zPosition="1" size="250,300" transparent="1" alphatest="on" />
+
+ <ePixmap pixmap="skin_default/buttons/red.png" position="10,360" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/green.png" position="185,360" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/blue.png" position="360,360" size="140,40" alphatest="on" />
+
+ <widget source="key_red" render="Label" position="10,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" foregroundColor="#ffffff" transparent="1" />
+ <widget source="key_green" render="Label" position="185,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" foregroundColor="#ffffff" transparent="1" />
+ <widget source="key_blue" render="Label" position="360,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" foregroundColor="#ffffff" transparent="1" />
+
+ <widget name="menulist" position="20,20" size="230,260" backgroundColor="#371e1c1a" transparent="1" zPosition="10" scrollbarMode="showOnDemand" />
+
+ <widget source="Address" render="Label" position="265,70" zPosition="1" size="240,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="ESSID" render="Label" position="265,100" zPosition="1" size="240,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="Protocol" render="Label" position="265,130" zPosition="1" size="240,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="Frequency" render="Label" position="265,160" zPosition="1" size="240,40" font="Regular;18" halign="center" valign="center" />
+ <widget source="Encryption key" render="Label" position="265,200" zPosition="1" size="240,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="BitRate" render="Label" position="265,220" zPosition="1" size="240,60" font="Regular;18" halign="center" valign="center" />
+ </screen>
+ """
def __init__(self, session, iface):
Screen.__init__(self,session)
+ HelpableScreen.__init__(self)
self.session = session
-# self.aplist = []
self.iface = iface
- self.mainmenu = []
- self.ap_extra = []
- self.ap_quality = []
self.wlanscanap = None
- self["OkCancelActions"] = ActionMap(["ShortcutActions", "SetupActions","WizardActions" ],
+ self.apList = {}
+ self.setApList = []
+
+ self["WizardActions"] = HelpableActionMap(self, "WizardActions",
{
- "ok": self.ok,
- "cancel": self.close,
- "red": self.close,
- "up": self.up,
- "down": self.down,
- "left": self.left,
- "right": self.right,
+ "up": (self.up, _("move up to previous entry")),
+ "down": (self.down, _("move down to next entry")),
+ "left": (self.left, _("move up to first entry")),
+ "right": (self.right, _("move down to last entry")),
}, -2)
- self.getAplist()
- print 'getAplist',self.mainmenu
- self["menulist"] = MenuList(self.mainmenu)
+
+ self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
+ {
+ "cancel": (self.close, _("exit")),
+ "ok": (self.ok, "select AP"),
+ })
+
+ self["ColorActions"] = HelpableActionMap(self, "ColorActions",
+ {
+ "red": (self.close, _("exit")),
+ "green": (self.ok, "select AP"),
+ "yellow": (self.restartScanAP, "restart scan AP"),
+ "blue": (self.startWlanConfig, "Edit Wireless settings"),
+ })
+
+ self["menulist"] = MenuList(self.setApList)
self["key_red"] = StaticText(_("Close"))
- self["ap_strength"] = StaticText(_("Scanning AP List.."))
- self["ap_quality"] = StaticText(_("Wait a moment"))
+ self["key_green"] = StaticText(_("Select"))
+ self["key_blue"] = StaticText(_("EditSetting"))
+ self["Address"] = StaticText(_("Scanning AP List.."))
+ self["ESSID"] = StaticText(_("Wait a moment"))
+ self["Protocol"] = StaticText(" ")
+ self["Frequency"] = StaticText(" ")
+ self["Encryption key"] = StaticText(" ")
+ self["BitRate"] = StaticText(" ")
+ self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
+ self.getAplistTimer = eTimer()
+ self.getAplistTimer.callback.append(self.getApList)
+ self.scanAplistTimer = eTimer()
+ self.scanAplistTimer.callback.append(self.scanApList)
+ self.emptyListMsgTimer = eTimer()
+ self.emptyListMsgTimer.callback.append(self.emptyListMsg)
+ self.apList = {}
+ self.onClose.append(self.__onClose)
+ self.getAplistTimer.start(100,True)
-
def left(self):
self["menulist"].pageUp()
- if len(self.ap_extra) > self["menulist"].getSelectionIndex():
- self["ap_strength"].setText((self.ap_extra[self["menulist"].getSelectionIndex()])+"%")
- self["ap_quality"].setText(self.ap_quality[self["menulist"].getSelectionIndex()])
+ self.displayApInfo()
def right(self):
self["menulist"].pageDown()
- if len(self.ap_extra) > self["menulist"].getSelectionIndex():
- self["ap_strength"].setText((self.ap_extra[self["menulist"].getSelectionIndex()])+"%")
- self["ap_quality"].setText(self.ap_quality[self["menulist"].getSelectionIndex()])
+ self.displayApInfo()
def up(self):
self["menulist"].up()
- if len(self.ap_extra) > self["menulist"].getSelectionIndex():
- self["ap_strength"].setText((self.ap_extra[self["menulist"].getSelectionIndex()])+"%")
- self["ap_quality"].setText(self.ap_quality[self["menulist"].getSelectionIndex()])
+ self.displayApInfo()
def down(self):
self["menulist"].down()
- if len(self.ap_extra) > self["menulist"].getSelectionIndex():
- self["ap_strength"].setText((self.ap_extra[self["menulist"].getSelectionIndex()])+"%")
- self["ap_quality"].setText(self.ap_quality[self["menulist"].getSelectionIndex()])
+ self.displayApInfo()
def ok(self):
global selectap
- ifaces=self["menulist"].getCurrent()
- print 'select', ifaces
- selectap = ifaces
+ if self["menulist"].getCurrent() is not None:
+ selectAp=self["menulist"].getCurrent()[0]
+ selectap = selectAp
self.close()
- def getAplist(self):
- self["OkCancelActions"].setEnabled(False)
- if iNetwork.getAdapterAttribute(self.iface, "up"):
- pass
- else:
- os_system('ifconfig '+self.iface+" up")
- time.sleep(1.5)
- self.wlanscanap = Console()
- cmd1 = "iwlist "+self.iface+" scan"
- self.wlanscanap.ePopen(cmd1, self.iwlistfinnished,self.aplistparse)
+ def startWlanConfig(self):
+ if self["menulist"].getCurrent() is not None:
+ selectAp=self["menulist"].getCurrent()[0]
+ self.close(selectAp)
+
+ def getApList(self):
+ self.apList = {}
+ self.setApList = []
+ self.configurationmsg = self.session.open(MessageBox, _("Please wait for scanning AP..."), type = MessageBox.TYPE_INFO, enable_input = False)
+ self.scanAplistTimer.start(100,True)
- def iwlistfinnished(self, result, retval,extra_args):
- (statecallback) = extra_args
+ def getScanResult(self, wirelessObj):
+ Iwscanresult = None
try:
- if self.wlanscanap is not None:
- if retval == 0:
- self.wlanscanap = None
- content = result.splitlines()
- first = content[0].split()
- completed = False
- for x in first:
- if x == 'completed':
- completed = True
- if completed == True:
- statecallback(result)
- else:
- statecallback(0)
+ Iwscanresult = wirelessObj.scan()
+ except IOError:
+ print "%s Interface doesn't support scanning.."%self.iface
+ return Iwscanresult
+
+ def scanApList(self):
+ if self.oldInterfaceState is not True:
+ os_system("ifconfig "+self.iface+" up")
+ iNetwork.setAdapterAttribute(self.iface, "up", True)
+ wirelessObj = Wireless(self.iface)
+ Iwscanresult=self.getScanResult(wirelessObj)
+ if Iwscanresult is None or len(Iwscanresult.aplist) == 0 :
+ import time
+ time.sleep(1.5)
+ Iwscanresult=self.getScanResult(wirelessObj)
+ self.configurationmsg.close(True)
+ if Iwscanresult is not None and len(Iwscanresult.aplist) != 0:
+ (num_channels, frequencies) = wirelessObj.getChannelInfo()
+ index = 1
+ for ap in Iwscanresult:
+ self.apList[index] = {}
+ self.apList[index]["Address"] = ap.bssid
+ if len(ap.essid) == 0:
+ self.apList[index]["ESSID"] = "<hidden ESSID>"
else:
- statecallback(0)
- except:
- self.close()
+ self.apList[index]["ESSID"] = ap.essid
+ self.setApList.append( (self.apList[index]["ESSID"], index) )
+ self.apList[index]["Protocol"] = ap.protocol
+ self.apList[index]["Frequency"] = wirelessObj._formatFrequency(ap.frequency.getFrequency())
+ try:
+ self.apList[index]["Channel"] = frequencies.index(self.apList[index]["Frequency"] + 1)
+ except:
+ self.apList[index]["Channel"] = "Unknown"
+
+ self.apList[index]["Quality"] = "%s/%s" % \
+ ( ap.quality.quality, wirelessObj.getQualityMax().quality )
+ self.apList[index]["Signal Level"] = "%s/%s" % \
+ ( ap.quality.getSignallevel(), "100" )
+ self.apList[index]["Noise Level"] = "%s/%s" % \
+ ( ap.quality.getNoiselevel(), "100" )
+
+# get encryption key on/off
+ key_status = "Unknown"
+ if (ap.encode.flags & pythonwifi.flags.IW_ENCODE_DISABLED):
+ key_status = "off"
+ elif (ap.encode.flags & pythonwifi.flags.IW_ENCODE_NOKEY):
+ if (ap.encode.length <= 0):
+ key_status = "on"
+ self.apList[index]["Encryption key"] = key_status
+ self.apList[index]["BitRate"] = wirelessObj._formatBitrate(ap.rate[-1][-1])
+ index += 1
+# print self.apList
+# print self.setApList
+ self.displayApInfo()
+ if len(self.apList) == 0:
+ self.emptyListMsgTimer.start(100,True)
+
+ def displayApInfo(self):
+ if len(self.apList) >0:
+ self["menulist"].setList(self.setApList)
+ if self["menulist"].getCurrent() is not None:
+ index = self["menulist"].getCurrent()[1]
+ for key in ["Address", "ESSID", "Protocol", "Frequency", "Encryption key", "BitRate"]:
+ if self.apList[index].has_key(key) and self.apList[index][key] is not None:
+ self[key].setText((key+": "+self.apList[index][key]))
+ else:
+ self[key].setText((key+": None"))
+ def emptyListMsg(self):
+ self.session.open(MessageBox, _("No AP detected."), type = MessageBox.TYPE_INFO, timeout = 10)
+ self["Address"].setText(_("No AP detected."))
+ self["ESSID"].setText(_(""))
- def aplistparse(self,data):
- rlist = []
- essid_on = 0
- if data == 0:
- self.session.open(MessageBox, _("Scan AP Failed"), MessageBox.TYPE_INFO,2)
- self["menulist"].setList(rlist)
- else:
- list = data.splitlines()
- for x in list:
- for xx in x.split():
- if xx.startswith('ESSID:') and len(xx)>8:
- rlist.append(xx[7:-1])
- essid_on = 1
- if essid_on == 1 and xx.startswith('Extra:SignalStrength=') and len(xx)>21:
- self.ap_extra.append(xx[6:])
- if essid_on == 1 and xx.startswith('%,LinkQuality:') and len(xx)>14:
- self.ap_quality.append(xx[2:])
- essid_pm = 0
- if len(rlist) >0:
- self["menulist"].setList(rlist)
- if len(self.ap_extra) > 0 and len(self.ap_quality) > 0:
- self["ap_strength"].setText((self.ap_extra[self["menulist"].getSelectionIndex()])+"%")
- self["ap_quality"].setText(self.ap_quality[self["menulist"].getSelectionIndex()])
- else:
- self["ap_strength"].setText("Select AP")
- self["ap_quality"].setText(" ")
- if iNetwork.getAdapterAttribute(self.iface, "up"):
- pass
- else:
- os_system('ifconfig '+self.iface+" down")
- self["OkCancelActions"].setEnabled(True)
+ def restartScanAP(self):
+ self.getAplistTimer.start(100,True)
-class NetworkAdapterTest(Screen):
+ def __onClose(self):
+ if self.oldInterfaceState is False:
+ iNetwork.setAdapterAttribute(self.iface, "up", False)
+ iNetwork.deactivateInterface(self.iface)
+
+class NetworkAdapterTest(Screen):
def __init__(self, session,iface):
Screen.__init__(self, session)
self.iface = iface
self["infoshortcuts"].setEnabled(True)
self["shortcuts"].setEnabled(False)
if self.activebutton == 1: # Adapter Check
- self["InfoText"].setText(_("This test detects your configured LAN-Adapter."))
+ self["InfoText"].setText(_("This test detects your configured Wireless LAN-Adapter."))
self["InfoTextBorder"].show()
self["InfoText"].show()
self["key_red"].setText(_("Back"))
if self.activebutton == 2: #LAN Check
- 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"))
+ self["InfoText"].setText(_("This test checks whether a network cable is connected to your Wireless LAN-Adapter."))
self["InfoTextBorder"].show()
self["InfoText"].show()
self["key_red"].setText(_("Back"))
if self.activebutton == 3: #DHCP Check
- 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."))
+ 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."))
self["InfoTextBorder"].show()
self["InfoText"].show()
self["key_red"].setText(_("Back"))
self["InfoText"].show()
self["key_red"].setText(_("Back"))
if self.activebutton == 6: # Edit Settings
+ self.cleanup()
self.session.open(WlanConfig,self.iface)
self["shortcuts"].setEnabled(True)
self["infoshortcuts"].setEnabled(False)
def getInfoCB(self,status):
if status is not None:
- if status == "No Connection" or status == "Not-Associated" or status == False:
+ if status.startswith("No Connection") or status.startswith("Not-Associated") or status == False:
self["Network"].setForegroundColorNum(1)
self["Network"].setText(_("disconnected"))
self["NetworkInfo_Check"].setPixmapNum(1)
def cleanup(self):
iNetwork.stopLinkStateConsole()
+ iNetwork.stopPingConsole()
iNetwork.stopDNSConsole()
def AccessPointInfo(self,iface):
def readAP(self,result,retval,extra_args):
(callback) = extra_args
- self.apState = False
+ self.apState = None
if self.iwconfigConsole is not None:
if retval == 0:
self.iwconfigConsole = None
- content=result.splitlines()
- for x in content:
- if 'Access Point' in x:
- self.apState = x[x.find('Access Point')+len('Access Point'):].strip(':').strip()
- callback(self.apState)
+ for content in result.splitlines():
+ if 'Access Point' in content:
+ self.apState = content.strip().split('Access Point: ')[1]
+ callback(self.apState)
+ return
+ callback(self.apState)
class Wlanstatus(Screen):
- skin = """
- <screen name="Wlanstatus" position="209,48" size="865,623" title="Wireless Network Status..." flags="wfNoBorder" backgroundColor="transparent">
- <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
- <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend" transparent="1" />
- <eLabel text="Wireless Network Status..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
- <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
- <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">
- <convert type="ClockToText">Format:%H:%M</convert>
- </widget>
- <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
- <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" />
- <widget source="status" render="Label" position="110,200" size="650,400" transparent="1" font="Regular;22" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" zPosition="1" />
- </screen>"""
+ skin = """
+ <screen position="center,center" size="510,400" title="Wireless Network Status..." >
+ <widget source="status" render="Label" position="5,15" size="500,350" font="Regular;18" zPosition="1" />
+
+ <ePixmap pixmap="skin_default/buttons/red.png" position="185,360" size="140,40" alphatest="on" />
+ <widget source="key_red" render="Label" position="185,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" foregroundColor="#ffffff" transparent="1" />
+ </screen>
+ """
def __init__(self, session,iface):
Screen.__init__(self,session)
self.session = session
-# self.aplist = []
self.iface = iface
self["status"] = StaticText(_("Wait a moment..."))
self["key_red"] = StaticText(_("Close"))
"red": self.close,
}, -2)
self.readstatus()
+ self.onClose.append(self.cleanup)
def readstatus(self):
self.wlanstatus = Console()
def statusdisplay(self,data):
- rlist = []
if data == 0:
self["status"].setText(_("No information..."))
else:
def ok(self):
pass
+ def cleanup(self):
+ self.stopWlanStatusConsole()
+
+ def stopWlanStatusConsole(self):
+ if self.wlanstatus is not None:
+ if len(self.wlanstatus.appContainers):
+ for name in self.wlanstatus.appContainers.keys():
+ self.wlanstatus.kill(name)
+
def openconfig(session, **kwargs):
-# session.open(WlanSetup)
session.open(WlanSelection)
def selSetup(menuid, **kwargs):
+ list=[]
if menuid != "system":
return [ ]
-
- return [(_("Wireless LAN Setup"), openconfig, "wlansetup_config", 80)]
+ else:
+ for x in iNetwork.getInstalledAdapters():
+ if x.startswith('eth'):
+ continue
+ list.append(x)
+ if len(list):
+ return [(_("Wireless LAN Setup"), openconfig, "wlansetup_config", 80)]
+ else:
+ return [ ]
+ return [ ]
def Plugins(**kwargs):
- return PluginDescriptor(name=_("Wireless LAN Setup"), description="Fan Control", where = PluginDescriptor.WHERE_MENU, fnc=selSetup);
-# return [PluginDescriptor(name = "Fancontrols", description = "check Fan Control settings", where = PluginDescriptor.WHERE_AUTOSTART, fnc = setfancontrol),
-# PluginDescriptor(name=_("Wireless LAN Setup"), description="Fan Control", where = PluginDescriptor.WHERE_MENU, fnc=selSetup)]
+ return PluginDescriptor(name=_("Wireless LAN Setup"), description="Wireless LAN Setup", where = PluginDescriptor.WHERE_MENU, fnc=selSetup)