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,listdir
+from os import path as os_path, system as os_system, unlink, listdir, access, R_OK, popen
from re import compile as re_compile, search as re_search
from Tools.Directories import fileExists
import time
+from pythonwifi.iwlibs import Wireless
+from pythonwifi import flags as wifi_flags
class WlanSelection(Screen,HelpableScreen):
- skin = """
- <screen name="WlanSelection" 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 Adapter 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" />
- <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,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="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" />
- <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="description" render="Label" position="500,140" size="280,360" font="Regular;19" halign="center" valign="center" backgroundColor="#c5c9cc" transparent="1"/>
- </screen>"""
-
+ 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)
"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
- ifaces=self["menulist"].getCurrent()[1]
- if ifaces == None:
- pass
- else:
- self.session.open(WlanSetup,ifaces)
+ 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((self.getAdapterDescription(x) + " (%s)"%x,x))
+ description=self.getAdapterDescription(x)
+ if description == "Unknown network adapter":
+ list.append((description,x))
+ else:
+ list.append((description + " (%s)"%x,x))
return list
def getAdapterDescription(self, iface):
- if iface == 'eth0':
- return _("Internal LAN adapter.")
- else:
- 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 _("Realtak")+ " " + _("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")
+ 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.")
+ elif self.isRalinkModule(iface):
+ return _("Ralink")+ " " + _("WLAN adapter.")
else:
- return _("Unknown network adapter.")
+ return str(os_path.basename(os_path.realpath(driverdir))) + " " + _("WLAN adapter")
+ else:
+ return _("Unknown network adapter")
+ else:
+ return _("Unknown network adapter")
+
+ def isRalinkModule(self, iface):
+# check vendor ID for lagacy driver
+ vendorID = "148f" # ralink vendor ID
+ idVendorPath = "/sys/class/net/%s/device/idVendor" % iface
+ if access(idVendorPath, R_OK):
+ fd = open(idVendorPath, "r")
+ data = fd.read().strip()
+ fd.close()
+
+# print "Vendor ID : %s" % data
+
+ if data == vendorID:
+ return True
+
+# check sys driver path for kernel driver
+ ralinkKmod = "rt2800usb" # ralink kernel driver name
+ driverPath = "/sys/class/net/%s/device/driver/" % iface
+ if os_path.exists(driverPath):
+ driverName = os_path.basename(os_path.realpath(driverPath))
+
+# print "driverName : %s" % driverName
+
+ if driverName == ralinkKmod:
+ return True
+
+ return False
+
+ 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 Setup Menu..." 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" />
- <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,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="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" />
- <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="description" render="Label" position="500,140" size="280,360" font="Regular;19" halign="center" valign="center" backgroundColor="#c5c9cc" transparent="1"/>
- </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["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.")
"left": self.left,
"right": self.right,
}, -2)
+ self.onClose.append(self.cleanup)
def loadDescription(self):
if self["menulist"].getCurrent()[1] == 'setting':
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':
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"))
return menu
+ def WlanScanApCallback(self, essid = None):
+ if essid is not None:
+ self.session.openWithCallback(self.checklist, WlanConfig, self.iface)
+
def restartLan(self, ret = False):
if (ret == True):
iNetwork.restartNetwork(self.restartLanDataAvail)
if data is True:
self.session.open(MessageBox, _("Finished restarting your network"), type = MessageBox.TYPE_INFO, timeout = 5, default = False)
-wlanconfig = ConfigSubsection()
-wlanconfig.usedevice = ConfigSelection(default = "off", choices = [
- ("off", _("off")), ("on", _("on"))])
-wlanconfig.usedhcp = ConfigSelection(default = "off", choices = [
- ("off", _("no")), ("on", _("yes"))])
-wlanconfig.essid = ConfigSelection(default = "none", choices = ["none"])
-wlanconfig.encrypt = ConfigSelection(default = "off", choices = [
- ("off", _("no")), ("on", _("yes"))])
-wlanconfig.method = ConfigSelection(default = "wep", 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.usegateway = ConfigSelection(default = "off", choices = [
- ("off", _("no")), ("on", _("yes"))])
-wlanconfig.ip = ConfigIP([0,0,0,0])
-wlanconfig.netmask = ConfigIP([0,0,0,0])
-wlanconfig.gateway = 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" />
- <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,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="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" />
- <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 cleanup(self):
+ iNetwork.stopRestartConsole()
+ iNetwork.stopGetInterfacesConsole()
+
+ESSID_SELECTED_IN_APLIST = None
+CHECK_NETWORK_SHARE = False
+class WlanConfig(Screen, ConfigListScreen, HelpableScreen):
+ 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):
Screen.__init__(self,session)
self.session = session
self["key_red"] = StaticText(_("Close"))
- self["key_grean"] = StaticText(_("Ok"))
+ 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.saveWlanConfig,
"cancel": self.keyCancel,
"red": self.keyCancel,
}, -2)
+ self["HelpWindow"] = Pixmap()
+ self["HelpWindow"].hide()
+ self["VKeyIcon"] = Pixmap()
+ self["VKeyIcon"].hide()
self.iface = iface
- self.ssid = None
- self.ap_scan = None
- self.scan_ssid = None
- self.key_mgmt = None
- self.proto = None
- self.key_type = None
- self.encryption_key = None
- self.wlanscanap = None
-# self.scanAPcount =5
- self.scanAPcount =1
+
self.list = []
- ConfigListScreen.__init__(self, self.list,session = self.session)
+ ConfigListScreen.__init__(self, self.list, session = self.session)
self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
- self.readWpaSupplicantConf()
-# iNetwork.getInterfaces(self.readWlanSettings)
- self.readWlanSettings()
- self.scanAPFailedTimer = eTimer()
- self.scanAPFailedTimer.callback.append(self.scanAPFailed)
- self.scanAplistTimer = eTimer()
- self.scanAplistTimer.callback.append(self.scanApList)
- self.Console = Console()
- self.scanAplistTimer.start(100,True)
- def readWlanSettings(self,ret=None):
+ self.updateInterfaces(self.updateInterfaceCB)
+ self.onClose.append(self.cleanup)
+
+ def updateInterfaces(self,callback = None):
+ iNetwork.config_ready = False
+ iNetwork.msgPlugins()
+ iNetwork.getInterfaces(callback)
+
+ def updateInterfaceCB(self, ret=None):
if ret is not True:
- print "getAddrInet 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"))])
+ print "getInterfaces Fail... "
+
+ self.createConfig()
+ self.createSetup()
+
+ def getWpaSupplicantName(self, iface):
+ return "/etc/wpa_supplicant.conf.%s" % iface
+
+ def readWpaSupplicantConf(self):
+ wpaSupplicantName = self.getWpaSupplicantName(self.iface)
+ wsconf = {}
+ try:
+ if fileExists(wpaSupplicantName):
+ wpafd = open(wpaSupplicantName, "r")
+ lines = wpafd.readlines()
+ wpafd.close()
+ data = {}
+ for line in lines:
+ try:
+ (key, value) = line.strip().split('=',1)
+ except:
+ continue
+
+# if key not in ('ssid', 'ap_scan', 'scan_ssid', 'key_mgmt', 'proto', 'wep_key0', 'psk', '#psk'):
+ if key not in ('ssid', 'scan_ssid', 'key_mgmt', 'proto', 'wep_key0', 'psk', '#psk'):
+ continue
+
+ elif key == 'ssid':
+ data[key] = value.strip('"')
+
+ else:
+ data[key] = value.strip()
+
+ wsconf["ssid"] = data.get("ssid", "INPUTSSID")
+ wsconf["hidden_ssid"] = data.get("scan_ssid") == '1' and True or False
+
+ key_mgmt = data.get("key_mgmt")
+ if key_mgmt == "NONE":
+ wep_key = data.get("wep_key0")
- if iNetwork.getAdapterAttribute(self.iface, "dhcp"):
- default_tmp = "on"
+ if wep_key is None:
+ wsconf["encrypt_mothod"] = "None"
+ else:
+ wsconf["encrypt_mothod"] = "wep"
+
+ if wep_key.startswith('"') and wep_key.endswith('"'):
+ wsconf["wep_keytype"] = "ascii"
+ wsconf["key"] = wep_key.strip('"')
+ else:
+ wsconf["wep_keytype"] = "hex"
+ wsconf["key"] = wep_key
+
+ elif key_mgmt == "WPA-PSK":
+ proto = data.get("proto")
+
+ if proto == "WPA":
+ wsconf["encrypt_mothod"] = "wpa"
+
+ elif proto == "RSN":
+ wsconf["encrypt_mothod"] = "wpa2"
+
+ elif proto in ( "WPA RSN", "WPA WPA2"):
+ wsconf["encrypt_mothod"] = "wpa/wpa2"
+
+ else:
+ wsconf["encrypt_mothod"] = "wpa2"
+
+ psk = data.get("#psk")
+ if psk:
+ wsconf["key"] = psk.strip('"')
+ else:
+ wsconf["key"] = data.get("psk")
+ else:
+ wsconf["encrypt_mothod"] = "wpa2"
+ except:
+ pass
+
+ if wsconf.get("ssid") is None:
+ wsconf["ssid"] = "INPUTSSID"
+ if wsconf.get("hidden_ssid") is None:
+ wsconf["hidden_ssid"] = False
+ if wsconf.get("encrypt_mothod") is None:
+ wsconf["encrypt_mothod"] = "wpa2"
+ if wsconf.get("wep_keytype") is None:
+ wsconf["wep_keytype"] = "ascii"
+ if wsconf.get("key") is None:
+ wsconf["key"] = "XXXXXXXX"
+
+# print ""
+# for (k,v) in wsconf.items():
+# print "[wsconf][%s] %s" % (k , v)
+
+ return wsconf
+
+ def displayIP(self, domain, entry):
+ text = entry.getText()
+ if text is not None and text != "0.0.0.0":
+ self[domain].setText(entry.getText())
else:
- default_tmp = "off"
- wlanconfig.usedhcp = ConfigSelection(default=default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
+ self[domain].setText(_("N/A"))
- wlanconfig.ip = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0]
+ def createConfig(self):
+# activate Interface setup
+ self.activateInterfaceEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "up") or False))
+# dhcp setup
+ self.usedhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
- wlanconfig.netmask = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0])
+# gateway setup
if iNetwork.getAdapterAttribute(self.iface, "gateway"):
- default_tmp = "on"
+ usegatewayDefault=True
else:
- default_tmp = "off"
- wlanconfig.usegateway = ConfigSelection(default = default_tmp, choices = [("off", _("no")), ("on", _("yes"))])
+ usegatewayDefault=False
+ self.usegatewayConfigEntry = NoSave(ConfigYesNo(default=usegatewayDefault))
- wlanconfig.gateway = ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0])
+ self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
- 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"))))
+# IP, Netmask setup
+ self.IPConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip") or [0,0,0,0]))
+ self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
- if self.encryption_key is not None:
- default_tmp = "on"
+# DNS setup
+ if iNetwork.getAdapterAttribute(self.iface, "dns-nameservers"):
+ dnsDefault = True
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:
- default_tmp = "wpa"
- else:
- default_tmp = "wep"
+ dnsDefault = False
+ self.useDNSConfigEntry = NoSave(ConfigYesNo(default=dnsDefault or False))
+
+ 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.displayIP("ipaddress", self.IPConfigEntry)
+ self.displayIP("netmask", self.netmaskConfigEntry)
+ self.displayIP("gateway", self.gatewayConfigEntry)
+ self.displayIP("DNS1", self.primaryDNS)
+ self.displayIP("DNS2", self.secondaryDNS)
+
+# readWPASupplicantConf
+ wsconf = self.readWpaSupplicantConf()
+
+# method setup
+ encryptionChoices = [("wep", _("WEP")), ("wpa", _("WPA")), ("wpa2", _("WPA2")), ("wpa/wpa2", _("WPA/WPA2")), ("None", _("No Encrypt")) ]
+ self.methodConfigEntry = NoSave(ConfigSelection(default = wsconf["encrypt_mothod"], choices = encryptionChoices))
+
+# key type setup
+ keytypeChoices = [("ascii", _("ASCII")), ("hex", _("HEX"))]
+ self.keytypeConfigEntry = NoSave(ConfigSelection(default = wsconf["wep_keytype"], choices = keytypeChoices))
+
+# key setup
+ self.keyConfigEntry = NoSave(ConfigPassword(default = wsconf["key"], visible_width = 50, fixed_size = False))
+
+# hidden ssid setup
+ self.hiddenssidConfigEntry = NoSave(ConfigYesNo(default = wsconf["hidden_ssid"]))
- wlanconfig.method = ConfigSelection(default = default_tmp, choices = [
- ("wep", _("WEP")), ("wpa", _("WPA")), ("wpa2", _("WPA2")),("wpa/wpa2", _("WPA/WPA2"))])
+# ssid setup
- if self.key_type == 0:
- default_tmp = "hex"
+ global ESSID_SELECTED_IN_APLIST
+ if ESSID_SELECTED_IN_APLIST:
+ essidDefault = ESSID_SELECTED_IN_APLIST
else:
- default_tmp = "ascii"
- wlanconfig.keytype = ConfigSelection(default = default_tmp, choices = [
- ("ascii", _("ASCII")), ("hex", _("HEX"))])
- default_tmp = self.encryption_key or "XXXXXXXX"
- wlanconfig.key = ConfigText(default = default_tmp, visible_width = 50, fixed_size = False)
+ essidDefault = wsconf["ssid"]
- 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:
- self.key_mgmt = data[9:-1]
- 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 # ascii
- self.encryption_key = data[10:-2]
- elif data.startswith('wep_key0=') and len(data) > 9:
- self.key_type = 0 # hex
- self.encryption_key = data[9:-1]
- elif data.startswith('psk="') and len(data) > 6:
- self.key_type = 1 # ascii
- self.encryption_key = data[5:-2]
- elif 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.encryption_key
- wpafd.close()
- else:
- print 'read error'
- else:
- pass
- except:
- print 'failed loading wpasupplicant.conf'
+ self.ssidConfigEntry = NoSave(ConfigText(default = essidDefault, visible_width = 50, fixed_size = False))
- def createConfig(self):
+ def createSetup(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.usedeviceEntry = getConfigListEntry(_("Use Device"), self.activateInterfaceEntry)
+ self.usedhcpEntry = getConfigListEntry(_("Use DHCP"), self.usedhcpConfigEntry)
+ self.essidEntry = getConfigListEntry(_("SSID"), self.ssidConfigEntry)
+ self.hiddenessidEntry = getConfigListEntry(_("Hidden Network"), self.hiddenssidConfigEntry)
+ self.methodEntry = getConfigListEntry(_("Encrypt Method"), self.methodConfigEntry)
+ self.keytypeEntry = getConfigListEntry(_("Key Type"), self.keytypeConfigEntry)
+ self.keyEntry = getConfigListEntry(_("KEY"), self.keyConfigEntry)
+
+ self.ipEntry = getConfigListEntry(_("IP"), self.IPConfigEntry)
+ self.netmaskEntry = getConfigListEntry(_("NetMask"), self.netmaskConfigEntry)
- self.ipEntry = getConfigListEntry(_("IP"), wlanconfig.ip)
- self.netmaskEntry = getConfigListEntry(_("NetMask"), wlanconfig.netmask)
+ self.usegatewayEntry = getConfigListEntry(_("Use Gateway"), self.usegatewayConfigEntry)
+ self.gatewayEntry = getConfigListEntry(_("Gateway"), self.gatewayConfigEntry)
- 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]))
+
+ self.usednsEntry = getConfigListEntry(_("Use Manual dns-nameserver"), self.useDNSConfigEntry)
+ 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":
+ if self.activateInterfaceEntry.value is True:
self.configList.append( self.usedhcpEntry )
- if wlanconfig.usedhcp.value is "off":
+
+ if self.usedhcpConfigEntry.value is True:
+ self.configList.append(self.usednsEntry)
+ else:
self.configList.append(self.ipEntry)
self.configList.append(self.netmaskEntry)
self.configList.append(self.usegatewayEntry)
- if wlanconfig.usegateway.value is "on":
+
+ if self.usegatewayConfigEntry.value is True:
self.configList.append(self.gatewayEntry)
+
+ if self.useDNSConfigEntry.value is True or self.usedhcpConfigEntry.value is False:
+ self.configList.append(self.primaryDNSConfigEntry)
+ self.configList.append(self.secondaryDNSConfigEntry)
+
+ self.configList.append( self.hiddenessidEntry )
self.configList.append( self.essidEntry )
-# print "#### wlanconfig.essid.value : ",wlanconfig.essid.value
- 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 )
+ self.configList.append( self.methodEntry )
+
+ if self.methodConfigEntry.value =="wep":
self.configList.append( self.keytypeEntry )
+ if self.methodConfigEntry.value != "None":
self.configList.append( self.keyEntry )
self["config"].list = self.configList
self["config"].l.setList(self.configList)
-# if not self.selectionChanged in self["config"].onSelectionChanged:
-# self["config"].onSelectionChanged.append(self.selectionChanged)
-
- def scanApList(self):
- self.apList = []
- self.configurationmsg = self.session.open(MessageBox, _("Please wait for scanning AP..."), type = MessageBox.TYPE_INFO, enable_input = False)
- cmd = "ifconfig "+self.iface+" up"
- print 'cmd ',cmd
- os_system(cmd)
- self.wlanscanap = Console()
- cmd = "iwlist "+self.iface+" scan"
- print 'cmd ',cmd
- self.wlanscanap.ePopen(cmd, self.apListFinnished,self.apListParse)
-
- def apListFinnished(self, result, retval,extra_args):
- (callback) = extra_args
- 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:
- callback(result)
- else:
- callback(0)
- else:
- callback(0)
+ if not self.showTextIcon in self["config"].onSelectionChanged:
+ self["config"].onSelectionChanged.append(self.showTextIcon)
- def apListParse(self,data):
- global selectap
- if data == 0:
- if self.scanAPcount >0:
- self.scanAPcount -=1
- self.configurationmsg.close(True)
- time.sleep(3)
- self.scanAplistTimer.start(500,True)
- return
- else:
- self.configurationmsg.close(True)
- self.scanAPFailedTimer.start(500,True)
- return
+ def showTextIcon(self):
+ if isinstance(self["config"].getCurrent()[1], ConfigText) or isinstance(self["config"].getCurrent()[1], ConfigPassword):
+ self["VKeyIcon"].show()
else:
- self.apList = []
-# self.scanAPcount =5
- self.scanAPcount =0
- list = data.splitlines()
- for x in list:
- xx = x.lstrip()
- if xx.startswith('ESSID:') and len(xx)>8:
- self.apList.append(xx[7:-1])
- self.apList.append('Input hidden ESSID')
-# print "###### selectap : ",selectap
- if selectap is not None and selectap in self.apList:
- wlanconfig.essid = ConfigSelection(default=selectap,choices = self.apList)
- elif self.ap_scan is not None and self.ap_scan.strip() == '2':
- 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:
- 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:
- wlanconfig.hiddenessid = ConfigText(default = "<Input ESSID>", visible_width = 50, fixed_size = False)
- self.configurationmsg.close(True)
- self.createConfig()
+ self["VKeyIcon"].hide()
- def scanAPFailed(self):
- self.session.openWithCallback(self.keyCancel ,MessageBox, _("Scan AP Failed"), MessageBox.TYPE_ERROR,10)
+ def onSelectHelpWindow(self, ret = False):
+ if isinstance(self["config"].getCurrent()[1], ConfigText) or isinstance(self["config"].getCurrent()[1], ConfigPassword):
+ self["config"].getCurrent()[1].onSelect(self.session)
+
+ def onDeselectHelpWindow(self, ret = False):
+ if isinstance(self["config"].getCurrent()[1], ConfigText) or isinstance(self["config"].getCurrent()[1], ConfigPassword):
+ self["config"].getCurrent()[1].onDeselect(self.session)
def keyLeft(self):
ConfigListScreen.keyLeft(self)
self.newConfig()
def newConfig(self):
- 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:
- self.createConfig()
+ if self["config"].getCurrent() == self.usedeviceEntry or self["config"].getCurrent() == self.usedhcpEntry \
+ or self["config"].getCurrent() == self.usegatewayEntry or self["config"].getCurrent() == self.methodEntry \
+ or self["config"].getCurrent() == self.methodEntry or self["config"].getCurrent() == self.usednsEntry:
+ self.createSetup()
def saveWlanConfig(self):
- if self["config"].isChanged():
- self.session.openWithCallback(self.checkNetworkShares, MessageBox, (_("Are you sure you want to restart your network interfaces?\n") ) )
+ try:
+ self.onDeselectHelpWindow()
- def checkNetworkShares(self,ret = False):
+ 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 checkNetworkConfig(self, ret = False):
if ret == False:
- return
- if not self.Console:
- self.Console = Console()
- cmd = "cat /proc/mounts"
- self.Console.ePopen(cmd, self.checkSharesFinished, self.confirmAnotherIfaces)
+ self.onSelectHelpWindow()
- def checkSharesFinished(self, result, retval, extra_args):
- callback = extra_args
- print "checkMountsFinished : result : \n",result
+ elif len(self.ssidConfigEntry.value) == 0:
+ self.session.open(MessageBox, ("PLEASE INPUT SSID"), type = MessageBox.TYPE_ERROR, timeout = 10)
+
+ elif len(self.keyConfigEntry.value) == 0:
+ self.session.open(MessageBox, ("PLEASE INPUT ENCRYPT KEY"), type = MessageBox.TYPE_ERROR, timeout = 10)
+
+ else:
+ global CHECK_NETWORK_SHARE
+ if CHECK_NETWORK_SHARE:
+ self.checkNetworkShares(self.confirmAnotherIfaces)
+ else:
+ self.confirmAnotherIfaces()
+
+ def checkNetworkShares(self, callback):
+ cmd = "cat /proc/mounts"
+ data = popen(cmd).readlines()
networks = ['nfs','smbfs','ncp','coda']
- for line in result.splitlines():
+ for line in data:
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)
+ self.session.openWithCallback(self.onSelectHelpWindow, MessageBox, ("NOT deconfiguring network interfaces :\n network shares still mounted\n"), type = MessageBox.TYPE_ERROR, timeout = 10)
return
- callback(True)
+ callback()
- 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.writeWlanConfig(False)
- else:
- self.session.openWithCallback(self.writeWlanConfig, MessageBox, (_("Are you sure you want to deactive another network interfaces?\n") ) )
+ def confirmAnotherIfaces(self):
+ num_configured_if = len(iNetwork.getConfiguredAdapters())
+ if num_configured_if >= 1:
+ if num_configured_if == 1 and self.iface in iNetwork.getConfiguredAdapters():
+ self.confirmAnotherIfacesCB(False)
else:
- self.writeWlanConfig(False)
+ self.session.openWithCallback(self.confirmAnotherIfacesCB, MessageBox, _("A second configured interface has been found.\n\nDo you want to disable the second network interface?"), default = True)
+ else:
+ self.confirmAnotherIfacesCB(False)
+
+ def isWPAMethod(self, method):
+ if method in ("wep", "None"):
+ return False
+ else:
+ return True
- def writeWlanConfig(self,ret = False):
+ def confirmAnotherIfacesCB(self, ret):
if ret == True:
configuredInterfaces = iNetwork.getConfiguredAdapters()
for interface in configuredInterfaces:
continue
iNetwork.setAdapterAttribute(interface, "up", False)
iNetwork.deactivateInterface(interface)
- ret=self.writeWpasupplicantConf()
- if ret == -1:
- self.session.open(MessageBox, _("wpa_supplicant.conf open error."), type = MessageBox.TYPE_ERROR, timeout = 10)
- return
- elif ret == -2:
- self.session.open(MessageBox, _("hidden ESSID empty"), type = MessageBox.TYPE_ERROR, timeout = 10)
- return
- 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 STB\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 += "\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\n"
- iffd.write(contents)
- else:
- iNetwork.setAdapterAttribute(self.iface, "up", False)
- iNetwork.deactivateInterface(self.iface)
- iffd.write(next_content)
- iffd.close()
- else :
- self.session.open(MessageBox, _("/etc/network/interfaces open error."), type = MessageBox.TYPE_ERROR, timeout = 10)
+
+ if not self.isWPAMethod(self.methodConfigEntry.value):
+ self.writeWpasupplicantConf()
+ else:
+ self.getWpaPhrase()
+
+ def getWpaPhrase(self):
+ cmd = "wpa_passphrase '%s' %s" % (self.ssidConfigEntry.value, self.keyConfigEntry.value)
+# print cmd
+ data = popen(cmd).readlines()
+ plainpwd = None
+ psk = None
+ for line in data:
+# print line,
+ try:
+ (key, value) = line.strip().split('=',1)
+ except:
+ continue
+
+ if key == '#psk':
+ plainpwd = line
+ elif key == 'psk':
+ psk = line
+ self.writeWpasupplicantConf(psk, plainpwd)
+
+ def writeWpasupplicantConf(self, passphrasekey=None, plainpwd=None):
+ wpaSupplicantName = self.getWpaSupplicantName(self.iface)
+ try:
+ wpafd = open(wpaSupplicantName, "w")
+ except:
+ self.session.open(MessageBox, _("%s open error." % wpaSupplicantName ), type = MessageBox.TYPE_ERROR, timeout = 10)
return
+
+ 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"
+# ssid
+ contents += "\tssid=\""+self.ssidConfigEntry.value+"\"\n"
+# hidden ssid
+ if self.hiddenssidConfigEntry.value is True:
+ contents += "\tscan_ssid=1\n"
+ else:
+ contents += "\tscan_ssid=0\n"
+
+ if self.methodConfigEntry.value == "None":
+ contents += "\tkey_mgmt=NONE\n"
+
+ elif self.methodConfigEntry.value == "wep":
+ contents += "\tkey_mgmt=NONE\n"
+ contents += "\twep_key0="
+ if self.keytypeConfigEntry.value == "ascii":
+ contents += "\""+self.keyConfigEntry.value+"\"\n"
+ else:
+ contents += self.keyConfigEntry.value+"\n"
+
+ else:
+ if self.methodConfigEntry.value == "wpa":
+ contents += "\tkey_mgmt=WPA-PSK\n"
+ contents += "\tproto=WPA\n"
+ contents += "\tpairwise=CCMP TKIP\n"
+ contents += "\tgroup=CCMP TKIP\n"
+ elif self.methodConfigEntry.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"
+
+# print "plainpwd : ",plainpwd
+# print "passphrasekey : ",passphrasekey
+ if plainpwd is not None and passphrasekey is not None:
+ contents += plainpwd
+ contents += passphrasekey
+ else:
+ contents += "\tpsk=%s\n" % self.keyConfigEntry.value
+
+ contents += "}\n"
+# print "content = \n"+contents
+ wpafd.write(contents)
+ wpafd.close()
+ self.writeNetConfig()
+
+ def writeNetConfig(self):
+ if self.activateInterfaceEntry.value is True:
+ iNetwork.setAdapterAttribute(self.iface, "up", True)
+ if self.usedhcpConfigEntry.value is True:
+ iNetwork.setAdapterAttribute(self.iface, "dhcp", True)
+ else:
+ iNetwork.setAdapterAttribute(self.iface, "dhcp", False)
+ iNetwork.setAdapterAttribute(self.iface, "ip", self.IPConfigEntry.value)
+ iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
+ if self.usegatewayConfigEntry.value is True:
+ iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
+ if self.useDNSConfigEntry.value is True or self.usedhcpConfigEntry.value is False:
+ 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)
+
+ wpaSupplicantName = self.getWpaSupplicantName(self.iface)
+ contents = "\tpre-up wpa_supplicant -i"+self.iface+" -c%s -B -D" % (wpaSupplicantName) +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 writeWpasupplicantConf(self):
- 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"
-
- if wlanconfig.essid.value == 'Input hidden ESSID':
- contents += "ap_scan=2\n"
- else :
- contents += "ap_scan=1\n"
- contents += "network={\n"
- if wlanconfig.essid.value == 'Input hidden ESSID':
- if len(wlanconfig.hiddenessid.value) == 0:
- wpafd.close()
- return -2
- contents += "\tssid=\""+wlanconfig.hiddenessid.value+"\"\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="
- 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=RSN\n"
- contents += "\tpairwise=CCMP TKIP\n"
- contents += "\tgroup=CCMP TKIP\n"
- contents += "\tpsk="
- else:
- contents += "\tkey_mgmt=WPA-PSK\n"
- contents += "\tproto=WPA RSN\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()
- return 0
- else :
- self.session.open(MessageBox, _("wpa_supplicant.conf open error."), type = MessageBox.TYPE_ERROR, timeout = 10)
- return -1
- def updateCurrentInterfaces(self,ret):
+ 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)
+ elif self.configurationmsg is not None:
+ self.configurationmsg.close(False)
def configurationMsgClose(self,ret):
- if ret is True and self.configurationmsg is not None:
- self.configurationmsg.close(True)
+ if self.configurationmsg is not None:
+ if ret is True:
+ self.configurationmsg.close(True)
+ else:
+ self.configurationmsg.close(False)
def configFinished(self,data):
- global selectap
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
+ global ESSID_SELECTED_IN_APLIST
+ ESSID_SELECTED_IN_APLIST = None
+ else:
+ self.session.openWithCallback(self.configFinishedCB, MessageBox, _("Network configuration is failed."), type = MessageBox.TYPE_INFO, timeout = 10)
- 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:
- result ="0.0.0.0"
-# print "result : ",result
- return result
- except:
- return "[N/A]"
+ def configFinishedCB(self, data):
+ if data is True:
+ self.close()
def keyCancelConfirm(self, result):
if not result:
+ self.onSelectHelpWindow()
return
+
if self.oldInterfaceState is False:
- iNetwork.setAdapterAttribute(self.iface, "up", False)
- iNetwork.deactivateInterface(self.iface,self.keyCancelCB)
+ iNetwork.deactivateInterface(self.iface, self.keyCancelCB)
else:
self.close()
def keyCancel(self,yesno = True):
if self["config"].isChanged():
+ self.onDeselectHelpWindow()
self.session.openWithCallback(self.keyCancelConfirm, MessageBox, _("Really close without saving settings?"))
else:
- self.keyCancelConfirm(True)
+ self.close()
def keyCancelCB(self,data):
- if data is not None:
- if data is True:
- self.close()
+ if data is True:
+ self.close()
-# def selectionChanged(self):
-# current = self["config"].getCurrent()
-# print current
+ def cleanup(self):
+ iNetwork.stopRestartConsole()
+ iNetwork.stopGetInterfacesConsole()
+ iNetwork.stopDeactivateInterfaceConsole()
+SHOW_HIDDEN_NETWORK = False
class WlanScanAp(Screen,HelpableScreen):
- skin = """
- <screen name="WlanScanAp" 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 AP 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" />
- <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
- <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,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="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" />
- <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" />
- <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="Address" render="Label" position="490,220" zPosition="1" size="300,30" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" foregroundColor="#1c1c1c" transparent="1" />
- <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" />
- <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" />
- <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" />
- <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" />
- <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" />
- </screen>"""
+ 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="aplist" position="20,20" size="230,275" backgroundColor="#371e1c1a" transparent="1" zPosition="10" scrollbarMode="showOnDemand" />
+
+ <widget source="ESSID" render="Label" position="265,70" zPosition="1" size="240,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="Address" 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,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="Channel" render="Label" position="265,190" zPosition="1" size="240,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="Encryption key" render="Label" position="265,220" zPosition="1" size="240,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="BitRate" render="Label" position="265,250" zPosition="1" size="240,30" font="Regular;18" halign="center" valign="center" />
+ <widget source="Status" render="Label" position="115,310" zPosition="1" size="300,30" font="Regular;18" halign="center" valign="center" />
+ </screen>
+ """
def __init__(self, session, iface):
Screen.__init__(self,session)
self.session = session
self.iface = iface
self.wlanscanap = None
-# self.scanAPcount = 5
- self.scanAPcount = 1
self.apList = {}
- self.SetApList = []
+ self.setApList = []
self["WizardActions"] = HelpableActionMap(self, "WizardActions",
{
"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["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
{
"blue": (self.startWlanConfig, "Edit Wireless settings"),
})
- self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
- {
- "ok": self.ok,
- "back": self.close,
- "up": self.up,
- "down": self.down,
- "red": self.close,
- "left": self.left,
- "right": self.right,
- }, -2)
-
- self["menulist"] = MenuList(self.SetApList)
+ self["aplist"] = MenuList(self.setApList)
self["key_red"] = StaticText(_("Close"))
self["key_green"] = StaticText(_("Select"))
self["key_blue"] = StaticText(_("EditSetting"))
- self["Address"] = StaticText(_("Scanning AP List.."))
- self["ESSID"] = StaticText(_("Wait a moment"))
+ self["Status"] = StaticText(_(" "))
+ self["ESSID"] = StaticText(" ")
+ self["Address"] = StaticText(" ")
self["Protocol"] = StaticText(" ")
self["Frequency"] = StaticText(" ")
+ self["Channel"] = StaticText(" ")
self["Encryption key"] = StaticText(" ")
self["BitRate"] = StaticText(" ")
- self.scanAPFailedTimer = eTimer()
- self.scanAPFailedTimer.callback.append(self.scanAPFailed)
+ self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
+
+ self.startupTimer = eTimer()
+ self.startupTimer.callback.append(self.startup)
+
+ self.activateIfaceTimer = eTimer()
+ self.activateIfaceTimer.callback.append(self.activateIface)
+
+ self.updateStatusTimer = eTimer()
+ self.updateStatusTimer.callback.append(self.updateStatus)
+
self.scanAplistTimer = eTimer()
self.scanAplistTimer.callback.append(self.scanApList)
- self.scanAplistTimer.start(100,True)
+ self.apList = {}
+ self.onClose.append(self.__onClose)
+ self.onShown.append(lambda: self.startupTimer.start(10, True))
+
+ def startup(self):
+ if self.oldInterfaceState is not True:
+ self["Status"].setText(("Please wait for activating interface..."))
+ self.activateIfaceTimer.start(10, True)
+ else:
+ self.updateStatusTimer.start(10, True)
+
+ def activateIface(self):
+ os_system("ifconfig "+self.iface+" up")
+ iNetwork.setAdapterAttribute(self.iface, "up", True)
+ self.updateStatusTimer.start(2000, True)
+
+
+ def updateStatus(self):
+ self["Status"].setText(("Please wait for scanning AP..."))
+ self.scanAplistTimer.stop()
+ self.scanAplistTimer.start(10, True)
+
+ def updateAPList(self):
+ self.updateStatusTimer.stop()
+ self.updateStatusTimer.start(8000, True)
+
def left(self):
- self["menulist"].pageUp()
+ self["aplist"].pageUp()
self.displayApInfo()
def right(self):
- self["menulist"].pageDown()
+ self["aplist"].pageDown()
self.displayApInfo()
def up(self):
- self["menulist"].up()
+ self["aplist"].up()
self.displayApInfo()
def down(self):
- self["menulist"].down()
+ self["aplist"].down()
self.displayApInfo()
def ok(self):
- global selectap
- selectAp=self["menulist"].getCurrent()[0]
- selectap = selectAp
+ global ESSID_SELECTED_IN_APLIST
+ if self["aplist"].getCurrent() is not None:
+ ESSID_SELECTED_IN_APLIST = self["aplist"].getCurrent()[0]
self.close()
- def startWlanConfig(self):
- global selectap
- selectAp=self["menulist"].getCurrent()[0]
- selectap = selectAp
- self.session.open(WlanConfig,self.iface)
-# self.close()
+ def startWlanConfig(self): # key blue
+ global ESSID_SELECTED_IN_APLIST
+ if self["aplist"].getCurrent() is not None:
+ ESSID_SELECTED_IN_APLIST = self["aplist"].getCurrent()[0]
+ self.close(True)
+
+ 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):
- # print "self.scanAPcount : ",self.scanAPcount
self.apList = {}
- self.SetApList = []
- self.configurationmsg = self.session.open(MessageBox, _("Please wait for scanning AP..."), type = MessageBox.TYPE_INFO, enable_input = False)
- os_system('ifconfig '+self.iface+" up")
- self.wlanscanap = Console()
- cmd = "iwlist "+self.iface+" scan"
- print cmd
- self.wlanscanap.ePopen(cmd, self.iwlistfinnished,self.APListParse)
-
- def iwlistfinnished(self, result, retval,extra_args):
-# print "iwlistfinnished"
- (statecallback) = extra_args
- if self.wlanscanap is not None:
-# print "retval = ",retval
- 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)
- else:
- statecallback(0)
+ self.setApList = []
- def APListParse(self,data):
- if data == 0:
- if self.scanAPcount >0:
- self.scanAPcount -=1
- self.configurationmsg.close(True)
- time.sleep(3)
- self.scanAplistTimer.start(500,True)
- return
+ wirelessObj = Wireless(self.iface)
+ Iwscanresult=self.getScanResult(wirelessObj)
+
+ if Iwscanresult is None or len(Iwscanresult.aplist) == 0:
+ self["Status"].setText(("NO AP detected"))
+ return
+
+ try:
+ (num_channels, frequencies) = wirelessObj.getChannelInfo()
+ except:
+ pass
+
+ index = 1
+ for ap in Iwscanresult:
+ self.apList[index] = {}
+ self.apList[index]["Address"] = ap.bssid
+ if len(ap.essid) == 0:
+ self.apList[index]["ESSID"] = None
else:
- self.configurationmsg.close(True)
- self.scanAPFailedTimer.start(500,True)
- return
- else:
-# print data
- self.apList = {}
-# self.scanAPcount =5
- self.scanAPcount =0
- list = data.splitlines()
- for line in list:
-# print "line : ",line
- if line.strip().startswith("Cell"): # Cell 01 - Address: 00:26:66:5C:EF:24
- parts = line.strip().split(" ")
- current_ap_id = int(parts[1])
- self.apList[current_ap_id]={}
- self.apList[current_ap_id]["Address"]=parts[4]
- elif line.strip().startswith("ESSID"):
- self.apList[current_ap_id]["ESSID"]=line.strip()[6:].strip('"')
- self.SetApList.append( (self.apList[current_ap_id]["ESSID"],current_ap_id) )
- elif line.strip().startswith("Protocol"):
- self.apList[current_ap_id]["Protocol"]=line.strip()[9:]
- elif line.strip().startswith("Frequency"):
- self.apList[current_ap_id]["Frequency"]=line.strip()[10:]
- elif line.strip().startswith("Encryption key"):
- self.apList[current_ap_id]["Encryption key"]=line.strip()[15:]
- elif line.strip().startswith("Bit Rates"):
- self.apList[current_ap_id]["BitRate"]=line.strip()[10:]
- print self.apList
- print len(self.apList)
- self.configurationmsg.close(True)
+ self.apList[index]["ESSID"] = ap.essid
+
+ 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 & wifi_flags.IW_ENCODE_DISABLED):
+ key_status = "off"
+ elif (ap.encode.flags & wifi_flags.IW_ENCODE_NOKEY):
+ if (ap.encode.length <= 0):
+ key_status = "on"
+ self.apList[index]["Encryption key"] = key_status
+
+# get bitrate
+ if len(ap.rate) > 0:
+ if len(ap.rate[0]) > 0:
+ self.apList[index]["BitRate"] = wirelessObj._formatBitrate(ap.rate[0][0])
+ else:
+ self.apList[index]["BitRate"] = ""
+ index += 1
+
+# print self.apList
+
+ # update menu list
+ ap_index = 0
+ for (ap_index, ap_info) in self.apList.items():
+ essid = ap_info.get("ESSID", None)
+ if essid is None:
+ global SHOW_HIDDEN_NETWORK
+ if SHOW_HIDDEN_NETWORK:
+ essid = "# Hidden Network"
+ else:
+ continue
+ self.setApList.append( (essid, int(ap_index)) )
+
+ self["aplist"].setList(self.setApList)
+# print "menu aplist : ", self.setApList
+ self["Status"].setText(("%d AP detected" % len(self.setApList)))
self.displayApInfo()
- def scanAPFailed(self):
- self.session.openWithCallback(self.ScanAPclose,MessageBox, _("Scan AP Failed"), MessageBox.TYPE_ERROR,10)
+ self.updateAPList()
def displayApInfo(self):
- if len(self.apList) >0:
- self["menulist"].setList(self.SetApList)
- index = self["menulist"].getCurrent()[1]
- for key in ["Address", "ESSID", "Protocol", "Frequency", "Encryption key", "BitRate"]:
- if self.apList[index].has_key(key):
- self[key].setText((key+": "+self.apList[index][key]))
+ if self["aplist"].getCurrent() is not None:
+ index = self["aplist"].getCurrent()[1]
+ for key in ["Address", "ESSID", "Protocol", "Frequency", "Encryption key", "BitRate", "Channel"]:
+ if self.apList[index].has_key(key) and self.apList[index][key] is not None:
+ value = str(self.apList[index][key])
else:
- self[key].setText(("None"))
- else:
- self.session.openWithCallback(self.ScanAPclose, MessageBox, _("No AP detected."), type = MessageBox.TYPE_INFO, timeout = 10)
+ value = "None"
+ self[key].setText(( "%s: %s" % (key, value) ))
- def ScanAPclose(self,data):
- self.close()
+ def __onClose(self):
+ if self.oldInterfaceState is not True:
+ os_system("ifconfig "+self.iface+" down")
+ iNetwork.setAdapterAttribute(self.iface, "up", False)
class NetworkAdapterTest(Screen):
def __init__(self, session,iface):
self["InfoText"].show()
self["key_red"].setText(_("Back"))
if self.activebutton == 6: # Edit Settings
- self.session.open(WlanConfig,self.iface)
+ self.cleanup()
+ self.session.open(WlanConfig, self.iface)
self["shortcuts"].setEnabled(True)
self["infoshortcuts"].setEnabled(False)
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
callback(self.apState)
class Wlanstatus(Screen):
- skin = """
- <screen name="Wlanstatus" 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 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;20" 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
"red": self.close,
}, -2)
self.readstatus()
+ self.onClose.append(self.cleanup)
def readstatus(self):
self.wlanstatus = Console()
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(WlanSelection)
if menuid != "system":
return [ ]
else:
- for x in iNetwork.getAdapterList():
+ for x in iNetwork.getInstalledAdapters():
if x.startswith('eth'):
continue
list.append(x)