def keySaveConfirm(self, ret = False): if ret: num_configured_if = len(iNetwork.getConfiguredAdapters()) if num_configured_if >= 1: if self.iface in iNetwork.getConfiguredAdapters(): self.applyConfig(True) else: self.session.openWithCallback(self.secondIfaceFoundCB, MessageBox, _("A second configured interface has been found.\n\nDo you want to disable the second network interface?"), default = True) else: self.applyConfig(True) else: self.keyCancel()
def getAllNetworks(): tempaddrs = [] # Get all IP networks if fileExists('/proc/net/if_inet6'): if has_ipv6 and version.major >= 12: proc = '/proc/net/if_inet6' for line in file(proc).readlines(): # Skip localhost if line.startswith('00000000000000000000000000000001'): continue tmp = line.split() tmpaddr = str(ipaddress.ip_address(int(tmp[0], 16))) if tmp[2].lower() != "ff": tmpaddr = "%s/%s" % (tmpaddr, int(tmp[2].lower(), 16)) tmpaddr = str(ipaddress.IPv6Network(unicode(tmpaddr), strict=False)) tempaddrs.append(tmpaddr) # Crappy legacy IPv4 has no proc entry with clean addresses ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: # IPv4 and old fashioned netmask are served as silly arrays crap = iNetwork.getAdapterAttribute(iface, "ip") if not crap or len(crap) != 4: continue ip = '.'.join(str(x) for x in crap) netmask = str(sum([bin(int(x)).count('1') for x in iNetwork.getAdapterAttribute(iface, "netmask")])) ip = ip + "/" + netmask tmpaddr = str(ipaddress.IPv4Network(unicode(ip), strict=False)) tempaddrs.append(tmpaddr) if tempaddrs == []: return None else: return tempaddrs
def buildInterfaceList(self,iface,name,default,active ): divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/div-h.png")) defaultpng = None activepng = None description = None interfacepng = None if active is True: interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wired-active.png")) elif active is False: interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wired-inactive.png")) else: interfacepng = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/network_wired.png")) num_configured_if = len(iNetwork.getConfiguredAdapters()) if num_configured_if >= 2: if default is True: defaultpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue.png")) elif default is False: defaultpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue_off.png")) if active is True: activepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_on.png")) elif active is False: activepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_error.png")) description = iNetwork.getFriendlyAdapterDescription(iface) return((iface, name, description, interfacepng, defaultpng, activepng, divpng))
def doServStart(self): self.activityTimer.stop() if os.path.exists('/media/hdd/tuner'): rmtree('/media/hdd/tuner') ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: ip = iNetwork.getAdapterAttribute(iface, 'ip') ipm = '%d.%d.%d.%d' % (ip[0], ip[1], ip[2], ip[3]) if ipm != '0.0.0.0': self.ip = ipm os.mkdir('/media/hdd/tuner', 0755) s_type = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 134) || (type == 195)' serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list(eServiceReference('%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % s_type)) bouquets = services and services.getContent('SN', True) count = 1 for bouquet in bouquets: self.poPulate(bouquet, count) count += 1 if config.osd.language.value == 'es_ES': mytext = "Servidor disponible en IP %s\nPara acceder a los sintonizadores de este receptor puedes conectarte desde la LAN o UPnP.\n\n1) Para conectar desde la LAN tienes que montar el directorio /media/hdd de este receptor en el directorio del receptor cliente /media/hdd. Una vez realizado todo esto, ya puedes acceder a la lista de canales del servidor desde el receptor cliente en Media player -> Disco duro -> tuner.\n\n2) Para conectar via UPnP necesitas un servidor UPnP que pueda gestionar archivos .m3u como MediaTomb." % (self.ip) self['lab1'].setText(_(mytext)) else: mytext = "Server avaliable on ip %s\nTo access this box's tuners you can connect via Lan or UPnP.\n\n1) To connect via lan you have to mount the /media/hdd folder of this box in the client /media/hdd folder. Then you can access the tuners server channel list from the client Media player -> Harddisk -> tuner.\n\n2) To connect via UPnP you need an UPnP server that can manage .m3u files like Mediatomb." % (self.ip) self['lab1'].setText(_(mytext)) self.session.open(MessageBox, _('Build Complete!'), MessageBox.TYPE_INFO, timeout=5) self.updateServ()
def prepareMainTemplate(self): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret["remotegrabscreenshot"] = getRemoteGrabScreenshot()["remotegrabscreenshot"] ret["configsections"] = getConfigsSections()["sections"] ret["zapstream"] = getZapStream()["zapstream"] ret["showname"] = getShowName()["showname"] ret["customname"] = getCustomName()["customname"] ret["boxname"] = getBoxName()["boxname"] if not ret["boxname"] or not ret["customname"]: ret["boxname"] = getInfo()["brand"] + " " + getInfo()["model"] ret["box"] = getBoxType() ret["remote"] = remote from Components.config import config if hasattr(eEPGCache, "FULL_DESCRIPTION_SEARCH"): ret["epgsearchcaps"] = True else: ret["epgsearchcaps"] = False if config.OpenWebif.webcache.epg_desc_search.value: config.OpenWebif.webcache.epg_desc_search.value = False config.OpenWebif.webcache.epg_desc_search.save() ret["epgsearchtype"] = getEPGSearchType()["epgsearchtype"] extras = [] extras.append({"key": "ajax/settings", "description": _("Settings")}) if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute(ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) try: lcd4linux_port = "http://" + ip + ":" + str(config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + "lcd4linux/config" except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({"key": lcd4linux_key, "description": _("LCD4Linux Setup")}) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer extras.append({"key": "ajax/at", "description": _("AutoTimer")}) except ImportError: pass if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.tmpl")): extras.append({"key": "ajax/bqe", "description": _("BouquetEditor")}) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh extras.append({"key": "ajax/epgr", "description": _("EPGRefresh")}) except ImportError: pass ret["extras"] = extras return ret
def doServStart(self): self.activityTimer.stop() if os.path.exists("/media/hdd/tuner"): rmtree("/media/hdd/tuner") ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: ip = iNetwork.getAdapterAttribute(iface, "ip") ipm = "%d.%d.%d.%d" % (ip[0], ip[1], ip[2], ip[3]) if ipm != "0.0.0.0": self.ip = ipm os.mkdir("/media/hdd/tuner", 0755) s_type = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 134) || (type == 195)' serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list(eServiceReference('%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet'%(s_type))) bouquets = services and services.getContent("SN", True) count = 1 for bouquet in bouquets: self.poPulate(bouquet, count) count += 1 mytext = "Server avaliable on ip %s\nTo access this box's tuners you can connect via Lan or UPnP.\n\n1) To connect via lan you have to mount the /media/hdd folder of this box in the client /media/hdd folder. Then you can access the tuners server channel list from the client Media player -> Harddisk -> tuner.\n2) To connect via UPnP you need an UPnP server that can manage .m3u files like Mediatomb." % (self.ip) self["lab1"].setText(_(mytext)) self.session.open(MessageBox, _("Build Complete!"), MessageBox.TYPE_INFO) self.updateServ()
def doServStart(self): self.activityTimer.stop() ret = system('rm -rf /media/hdd/tuner') ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: ip = iNetwork.getAdapterAttribute(iface, 'ip') ipm = '%d.%d.%d.%d' % (ip[0], ip[1], ip[2], ip[3]) if ipm != '0.0.0.0': self.ip = ipm ret = system('mkdir /media/hdd/tuner') chdir('/media/hdd/tuner') s_type = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 134) || (type == 195)' serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list(eServiceReference('%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % s_type)) bouquets = services and services.getContent('SN', True) count = 1 for bouquet in bouquets: self.poPulate(bouquet, count) count += 1 chdir('/home/root') mytext = _('Server avaliable on ip ' + self.ip + ' \n\n') mytext += _("To access this box's tuners you can connect via lan or UPnP.\n\n") mytext += _('1) To connect via lan you have to mount the /media/hdd folder of this box in the client /media/hdd folder. Then you can access the tuners server channel list from the client Media player -> Harddisk -> tuner.\n') mytext += _('2) To connect via UPnP you have to start Mediatomb on this box and then start Djmount on the client. Then you can access the tuners server channel list for the client Media Player -> DLNA -> MediaTomb -> playlists.\n\n') mytext += _('NOTE about UPnP: Because UPnP requires alot of memory, you should only use it if you need to access your box from a PS3 or other device that cannot be mounted via Lan. Also, After the server has been built we strongly suggest you delete the Bouquets directory that are not really needed BEFORE you start Mediatomb. This will save alot of memory and resources.') self['lab1'].setText(mytext) self.session.open(MessageBox, _('Build Complete.'), MessageBox.TYPE_INFO) self.updateServ()
def doServStart(self): self.activityTimer.stop() if os.path.exists("/media/hdd/tuner"): rmtree("/media/hdd/tuner") ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: ip = iNetwork.getAdapterAttribute(iface, "ip") ipm = "%d.%d.%d.%d" % (ip[0], ip[1], ip[2], ip[3]) if ipm != "0.0.0.0": self.ip = ipm os.mkdir("/media/hdd/tuner", 0755) s_type = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 134) || (type == 195)' serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list(eServiceReference('%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet'%(s_type))) bouquets = services and services.getContent("SN", True) count = 1 for bouquet in bouquets: self.poPulate(bouquet, count) count += 1 mytext = "Servidor disponible en la ip %s\nPara acceder a este sevidor, puede conectar via LAN o UPnP.\n\n1) Para conectar a traves de LAN tiene que montar la carpeta /media/hdd de este decodificador en el cliente. A continuacion, puede acceder a la lista de canales del servidor de sintonizadores desde el reproductor de medios del cliente. -> /media/hdd -> tuner.\n2) Para conectar mediante UPnP que necesita un servidor UPnP que pueda manejar archivos .m3u. Como Xupnpd que ya viene preinstalado en Openplus." % (self.ip) self["lab1"].setText(_(mytext)) self.session.open(MessageBox, _("Build Complete!"), MessageBox.TYPE_INFO) self.updateServ()
def getList(self): return [ (ifname, iNetwork.getAdapterAttribute(ifname, "mac"), iNetwork.getAdapterAttribute(ifname, "dhcp"), self.ConvertIP(iNetwork.getAdapterAttribute(ifname, "ip")), self.ConvertIP(iNetwork.getAdapterAttribute(ifname, "netmask")), self.ConvertIP(iNetwork.getAdapterAttribute(ifname, "gateway"))) for ifname in iNetwork.getConfiguredAdapters() ]
def getIP(): ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute( ifaces[0], "ip") # use only the first configured interface if ip_list: return "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) return None
def secondIfaceFoundCB(self,data): if data is False: self.applyConfig(True) else: configuredInterfaces = iNetwork.getConfiguredAdapters() for interface in configuredInterfaces: if interface == self.iface: continue iNetwork.setAdapterAttribute(interface, "up", False) iNetwork.deactivateInterface(configuredInterfaces,self.deactivateSecondInterfaceCB)
def prepareMainTemplate(self): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['remotegrabscreenshot'] = getRemoteGrabScreenshot()['remotegrabscreenshot'] ret['configsections'] = getConfigsSections()['sections'] ret['zapstream'] = getZapStream()['zapstream'] ret['box'] = "dmm" if fileExists("/proc/stb/info/model"): ret['box'] = open("/proc/stb/info/model").read().strip().lower() elif fileExists("/proc/stb/info/model"): ret['box'] = open("/proc/stb/info/model").read().strip().lower() if ret["box"] in ("nbox", "esi88", "adb2850", "adb2849", "dsi87"): ret["remote"] = "nbox" else: ret["remote"] = "dmm" extras = [] extras.append({ 'key': 'ajax/settings','description': _("Settings")}) if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): from Components.config import config from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute(ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) try: lcd4linux_port = "http://" + ip + ":" + str(config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup")}) # TODO AutoTimer,Epgrefresh,BouquetEditor as Webinterface # try: # from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer # extras.append({ 'key': 'ajax/xxx','description': 'AutoTimer'}) # except ImportError: # try: # from Plugins.Extensions.WebBouquetEditor.WebComponents.Sources.BouquetEditor import BouquetEditor # extras.append({ 'key': 'ajax/xxx','description': 'BouquetEditor'}) # except ImportError: # try: # from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh # extras.append({ 'key': 'ajax/xxx','description': 'EPGRefresh'}) # except ImportError: ret['extras'] = extras return ret
def getList(self): return [ ( ifname, iNetwork.getAdapterAttribute(ifname, "mac"), iNetwork.getAdapterAttribute(ifname, "dhcp"), self.ConvertIP(iNetwork.getAdapterAttribute(ifname, "ip")), self.ConvertIP(iNetwork.getAdapterAttribute(ifname, "netmask")), self.ConvertIP(iNetwork.getAdapterAttribute(ifname, "gateway")) ) for ifname in iNetwork.getConfiguredAdapters() ]
def GetNetworkInterfaces(self): self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()] if not self.adapters: self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getConfiguredAdapters()] if len(self.adapters) == 0: self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getInstalledAdapters()] for x in self.adapters: if iNetwork.getAdapterAttribute(x[1], 'up') is True: return x[1] return None
def GetNetworkInterfaces(self): adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()] if not adapters: adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getConfiguredAdapters()] if len(adapters) == 0: adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getInstalledAdapters()] for x in adapters: if iNetwork.getAdapterAttribute(x[1], 'up') is True: return x[1] return 'eth0'
def GetNetworkInterfaces(self): self.adapters = [ (iNetwork.getFriendlyAdapterName(x), x) for x in iNetwork.getAdapterList() ] if not self.adapters: self.adapters = [ (iNetwork.getFriendlyAdapterName(x), x) for x in iNetwork.getConfiguredAdapters() ] if len(self.adapters) == 0: self.adapters = [ (iNetwork.getFriendlyAdapterName(x), x) for x in iNetwork.getInstalledAdapters() ] self.activeInterface = None for x in self.adapters: if iNetwork.getAdapterAttribute(x[1], 'up') is True: self.activeInterface = x[1] return return
def cbConfirmDone(self, ret): if not ret: return if self["key_green"].getText() == 'Connect': networkAdapters = iNetwork.getConfiguredAdapters() for x in networkAdapters: if x[:3] == 'ppp': continue iNetwork.setAdapterAttribute(x, "up", False) iNetwork.deactivateInterface(x) x = {} try: x = self["menulist"].getCurrent()[1] except: printInfoModemMgr('no selected device..') return devFile = '/usr/share/usb_modeswitch/%s:%s' % (x.get("Vendor"), x.get("ProdID")) if not os.path.exists(devFile): message = "Can't found device file!! [%s]" % (devFile) printInfoModemMgr(message) self.session.open(MessageBox, _(message), MessageBox.TYPE_INFO) return if self["key_green"].getText() == 'Disconnect': cmd = "%s -s 0" % (self.commandBin) self.taskManager.append(cmd, self.cbPrintAvail, self.cbPrintClose) cmd = "%s -s 1" % (self.commandBin) self.taskManager.append(cmd, self.cbPrintAvail, self.cbUnloadClose) self.taskManager.setStatusCB(self.setDisconnectStatus) else: cmd = "%s -s 2 -e vendor=0x%s -e product=0x%s" % ( self.commandBin, x.get("Vendor"), x.get("ProdID")) self.taskManager.append(cmd, self.cbStep1PrintAvail, self.cbPrintClose) cmd = "%s -s 3 -e %s:%s" % (self.commandBin, x.get("Vendor"), x.get("ProdID")) self.taskManager.append(cmd, self.cbPrintAvail, self.cbPrintClose) cmd = "%s -s 4" % (self.commandBin) self.taskManager.append(cmd, self.cbStep3PrintAvail, self.cbMakeWvDialClose) cmd = "%s -s 5" % (self.commandBin) self.taskManager.append(cmd, self.cbRunWvDialAvail, self.cbPrintClose) self.taskManager.setStatusCB(self.setConnectStatus) self.taskManager.next()
def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self.setTitle(_("Select a network adapter")) self.wlan_errortext = _("No working wireless network adapter found.\nPlease verify that you have attached a compatible WLAN device and your network is configured correctly.") self.lan_errortext = _("No working local network adapter found.\nPlease verify that you have attached a network cable and your network is configured correctly.") self.oktext = _("Press OK on your remote control to continue.") self.edittext = _("Press OK to edit the settings.") self.defaulttext = _("Press yellow to set this interface as default interface.") self.restartLanRef = None self["key_red"] = StaticText(_("Close")) self["key_green"] = StaticText(_("Select")) self["key_yellow"] = StaticText("") self["key_blue"] = StaticText("") self["introduction"] = StaticText(self.edittext) self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": (self.close, _("Exit network interface list")), "ok": (self.okbuttonClick, _("Select interface")), }) self["ColorActions"] = HelpableActionMap(self, "ColorActions", { "red": (self.close, _("Exit network interface list")), "green": (self.okbuttonClick, _("Select interface")), "blue": (self.openNetworkWizard, _("Use the network wizard to configure selected network adapter")), }) self["DefaultInterfaceAction"] = HelpableActionMap(self, "ColorActions", { "yellow": (self.setDefaultInterface, [_("Set interface as default Interface"),_("* Only available if more than one interface is active.")] ), }) self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()] if not self.adapters: self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getConfiguredAdapters()] if len(self.adapters) == 0: self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getInstalledAdapters()] self.list = [] self["list"] = List(self.list) self.updateList() if len(self.adapters) == 1: self.onFirstExecBegin.append(self.okbuttonClick) self.onClose.append(self.cleanup)
def prepareMainTemplate(self): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['remotegrabscreenshot'] = getRemoteGrabScreenshot()['remotegrabscreenshot'] ret['configsections'] = getConfigsSections()['sections'] ret['zapstream'] = getZapStream()['zapstream'] ret['showname'] = getShowName()['showname'] ret['customname'] = getCustomName()['customname'] ret['boxname'] = getBoxName()['boxname'] if not ret['boxname'] or not ret['customname']: ret['boxname'] = getInfo()['brand']+" "+getInfo()['model'] ret['box'] = getBoxType() ret["remote"] = remote extras = [] extras.append({ 'key': 'ajax/settings','description': _("Settings")}) if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): from Components.config import config from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute(ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) try: lcd4linux_port = "http://" + ip + ":" + str(config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup")}) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer extras.append({ 'key': 'ajax/at','description': _('AutoTimer')}) except ImportError: pass if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.tmpl")): extras.append({ 'key': 'ajax/bqe','description': _('BouquetEditor')}) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh extras.append({ 'key': 'ajax/epgr','description': _('EPGRefresh')}) except ImportError: pass ret['extras'] = extras return ret
def prepareMainTemplate(self): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['remotegrabscreenshot'] = getRemoteGrabScreenshot()['remotegrabscreenshot'] ret['configsections'] = getConfigsSections()['sections'] ret['zapstream'] = getZapStream()['zapstream'] ret['showname'] = getShowName()['showname'] ret['customname'] = getCustomName()['customname'] ret['boxname'] = getBoxName()['boxname'] if not ret['boxname'] or not ret['customname']: ret['boxname'] = getInfo()['brand']+" "+getInfo()['model'] ret['box'] = getBoxType() ret["remote"] = rc_model.getRcFolder()+remotesuffix extras = [] extras.append({ 'key': 'ajax/settings','description': _("Settings")}) if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): from Components.config import config from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute(ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) try: lcd4linux_port = "http://" + ip + ":" + str(config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup")}) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer extras.append({ 'key': 'ajax/at','description': _('AutoTimer')}) except ImportError: pass if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.tmpl")): extras.append({ 'key': 'ajax/bqe','description': _('BouquetEditor')}) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh extras.append({ 'key': 'ajax/epgr','description': _('EPGRefresh')}) except ImportError: pass ret['extras'] = extras return ret
def setDefaultInterface(self): selection = self["list"].getCurrent() num_if = len(self.list) old_default_gw = None num_configured_if = len(iNetwork.getConfiguredAdapters()) if os.path.exists("/etc/default_gw"): fp = open('/etc/default_gw', 'r') old_default_gw = fp.read() fp.close() if num_configured_if > 1 and (not old_default_gw or old_default_gw != selection[0]): fp = open('/etc/default_gw', 'w+') fp.write(selection[0]) fp.close() self.restartLan() elif old_default_gw and num_configured_if < 2: os.unlink("/etc/default_gw") self.restartLan()
def getInfoNet(): ret = '' from Components.Network import iNetwork adapters = [(iNetwork.getFriendlyAdapterName(x), x) for x in iNetwork.getAdapterList()] if not adapters: return '' else: default_gw = None num_configured_if = len(iNetwork.getConfiguredAdapters()) if num_configured_if < 2 and path.exists('/etc/default_gw'): unlink('/etc/default_gw') if path.exists('/etc/default_gw'): fp = file('/etc/default_gw', 'r') result = fp.read() fp.close() default_gw = result if len(adapters) == 0: ret = '' else: for x in adapters: if x[1] == default_gw: default_int = True else: default_int = False if iNetwork.getAdapterAttribute(x[1], 'up') is True: active_int = True else: active_int = False if active_int: iNetwork.loadNameserverConfig() ret = 'IP: ' + str(iNetwork.getAdapterAttribute( x[1], 'ip')) + '' if iNetwork.getAdapterAttribute(x[1], 'dhcp'): ret = ret + ' (DHCP)' ippub = '' if len(ippub) > 8: ippub = ' - ' + _('Public IP') + ': ' + ippub + '' ret = ret + ippub break return ret.replace('[', '').replace(']', '').replace(',', '.').replace('. ', '.')
def cbConfirmDone(self, ret): if not ret: return if self["key_green"].getText() == 'Connect': networkAdapters = iNetwork.getConfiguredAdapters() for x in networkAdapters: if x[:3] == 'ppp': continue iNetwork.setAdapterAttribute(x, "up", False) iNetwork.deactivateInterface(x) x = {} try: x = self["menulist"].getCurrent()[1] except: printInfoModemMgr('no selected device..') return devFile = '/usr/share/usb_modeswitch/%s:%s' % (x.get("Vendor"), x.get("ProdID")) if not os.path.exists(devFile) : message = "Can't found device file!! [%s]" % (devFile) printInfoModemMgr(message) self.session.open(MessageBox, _(message), MessageBox.TYPE_INFO) return if self["key_green"].getText() == 'Disconnect': cmd = "%s -s 0" % (self.commandBin) self.taskManager.append(cmd, self.cbPrintAvail, self.cbPrintClose) cmd = "%s -s 1" % (self.commandBin) self.taskManager.append(cmd, self.cbPrintAvail, self.cbUnloadClose) self.taskManager.setStatusCB(self.setDisconnectStatus) else: cmd = "%s -s 2 -e vendor=0x%s -e product=0x%s" % (self.commandBin, x.get("Vendor"), x.get("ProdID")) self.taskManager.append(cmd, self.cbStep1PrintAvail, self.cbPrintClose) cmd = "%s -s 3 -e %s:%s" % (self.commandBin, x.get("Vendor"), x.get("ProdID")) self.taskManager.append(cmd, self.cbPrintAvail, self.cbPrintClose) cmd = "%s -s 4" % (self.commandBin) self.taskManager.append(cmd, self.cbStep3PrintAvail, self.cbMakeWvDialClose) cmd = "%s -s 5" % (self.commandBin) self.taskManager.append(cmd, self.cbRunWvDialAvail, self.cbPrintClose) self.taskManager.setStatusCB(self.setConnectStatus) self.taskManager.next()
def getAllNetworks(): tempaddrs = [] # Get all IP networks if fileExists('/proc/net/if_inet6'): if has_ipv6 and version.major >= 12: proc = '/proc/net/if_inet6' for line in open(proc).readlines(): # Skip localhost if line.startswith('00000000000000000000000000000001'): continue tmp = line.split() tmpaddr = str(ipaddress.ip_address(int(tmp[0], 16))) if tmp[2].lower() != "ff": tmpaddr = "%s/%s" % (tmpaddr, int(tmp[2].lower(), 16)) tmpaddr = str( ipaddress.IPv6Network(six.text_type(tmpaddr), strict=False)) tempaddrs.append(tmpaddr) # Crappy legacy IPv4 has no proc entry with clean addresses ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: # IPv4 and old fashioned netmask are served as silly arrays crap = iNetwork.getAdapterAttribute(iface, "ip") if not crap or len(crap) != 4: continue ip = '.'.join(str(x) for x in crap) netmask = str( sum([ bin(int(x)).count('1') for x in iNetwork.getAdapterAttribute(iface, "netmask") ])) ip = ip + "/" + netmask tmpaddr = str(ipaddress.IPv4Network(six.text_type(ip), strict=False)) tempaddrs.append(tmpaddr) if tempaddrs == []: return None else: return tempaddrs
def doServStart(self): self.activityTimer.stop() ret = system("rm -rf /media/hdd/tuner") ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: ip = iNetwork.getAdapterAttribute(iface, "ip") ipm = "%d.%d.%d.%d" % (ip[0], ip[1], ip[2], ip[3]) if ipm != "0.0.0.0": self.ip = ipm ret = system("mkdir /media/hdd/tuner") chdir("/media/hdd/tuner") s_type = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 134) || (type == 195)' serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list( eServiceReference( '%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % (s_type))) bouquets = services and services.getContent("SN", True) count = 1 for bouquet in bouquets: self.poPulate(bouquet, count) count += 1 chdir("/home/root") mytext = _("Server avaliable on ip " + self.ip + " \n\n") mytext += _( "To access this box's tuners you can connect via lan or UPnP.\n\n") mytext += _( "1) To connect via lan you have to mount the /media/hdd folder of this box in the client /media/hdd folder. Then you can access the tuners server channel list from the client Media player -> Harddisk -> tuner.\n" ) mytext += _( "2) To connect via UPnP you have to start Mediatomb on this box and then start Djmount on the client. Then you can access the tuners server channel list for the client Media Player -> DLNA -> MediaTomb -> playlists.\n\n" ) mytext += _( "NOTE about UPnP: Because UPnP requires alot of memory, you should only use it if you need to access your box from a PS3 or other device that cannot be mounted via Lan. Also, After the server has been built we strongly suggest you delete the Bouquets directory that are not really needed BEFORE you start Mediatomb. This will save alot of memory and resources." ) self["lab1"].setText(mytext) self.session.open(MessageBox, _("Build Complete."), MessageBox.TYPE_INFO) self.updateServ()
def getInfoNet(): ret = '' from Components.Network import iNetwork adapters = [ (iNetwork.getFriendlyAdapterName(x), x) for x in iNetwork.getAdapterList() ] if not adapters: return '' else: default_gw = None num_configured_if = len(iNetwork.getConfiguredAdapters()) if num_configured_if < 2 and path.exists('/etc/default_gw'): unlink('/etc/default_gw') if path.exists('/etc/default_gw'): fp = file('/etc/default_gw', 'r') result = fp.read() fp.close() default_gw = result if len(adapters) == 0: ret = '' else: for x in adapters: if x[1] == default_gw: default_int = True else: default_int = False if iNetwork.getAdapterAttribute(x[1], 'up') is True: active_int = True else: active_int = False if active_int: iNetwork.loadNameserverConfig() ret = 'IP: ' + str(iNetwork.getAdapterAttribute(x[1], 'ip')) + '' if iNetwork.getAdapterAttribute(x[1], 'dhcp'): ret = ret + ' (DHCP)' ippub = '' if len(ippub) > 8: ippub = ' - ' + _('Public IP') + ': ' + ippub + '' ret = ret + ippub break return ret.replace('[', '').replace(']', '').replace(',', '.').replace('. ', '.')
def updateList(self): self.list = [] default_gw = None num_configured_if = len(iNetwork.getConfiguredAdapters()) if num_configured_if >= 2: self["key_yellow"].setText(_("Default")) self["introduction"].setText(self.defaulttext) self["DefaultInterfaceAction"].setEnabled(True) else: self["key_yellow"].setText("") self["introduction"].setText(self.edittext) self["DefaultInterfaceAction"].setEnabled(False) if num_configured_if < 2 and os.path.exists("/etc/default_gw"): os.unlink("/etc/default_gw") if os.path.exists("/etc/default_gw"): fp = file('/etc/default_gw', 'r') result = fp.read() fp.close() default_gw = result for x in self.adapters: if x[1] == default_gw: default_int = True else: default_int = False if iNetwork.getAdapterAttribute(x[1], 'up') is True: active_int = True else: active_int = False self.list.append(self.buildInterfaceList(x[1],_(x[0]),default_int,active_int )) if os.path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")): self["key_blue"].setText(_("Network wizard")) self["list"].setList(self.list)
def doServStart(self): self.activityTimer.stop() if os.path.exists('/media/hdd/tuner'): rmtree('/media/hdd/tuner') ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: ip = iNetwork.getAdapterAttribute(iface, 'ip') ipm = '%d.%d.%d.%d' % (ip[0], ip[1], ip[2], ip[3]) if ipm != '0.0.0.0': self.ip = ipm os.mkdir('/media/hdd/tuner', 0755) s_type = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 134) || (type == 195)' serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list( eServiceReference( '%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % s_type)) bouquets = services and services.getContent('SN', True) count = 1 for bouquet in bouquets: self.poPulate(bouquet, count) count += 1 if config.osd.language.value == 'es_ES': mytext = "Servidor disponible en IP %s\nPara acceder a los sintonizadores de este receptor puedes conectarte desde la LAN o UPnP.\n\n1) Para conectar desde la LAN tienes que montar el directorio /media/hdd de este receptor en el directorio del receptor cliente /media/hdd. Una vez realizado todo esto, ya puedes acceder a la lista de canales del servidor desde el receptor cliente en Media player -> Disco duro -> tuner.\n\n2) Para conectar via UPnP necesitas un servidor UPnP que pueda gestionar archivos .m3u como MediaTomb." % ( self.ip) self['lab1'].setText(_(mytext)) else: mytext = "Server avaliable on ip %s\nTo access this box's tuners you can connect via Lan or UPnP.\n\n1) To connect via lan you have to mount the /media/hdd folder of this box in the client /media/hdd folder. Then you can access the tuners server channel list from the client Media player -> Harddisk -> tuner.\n\n2) To connect via UPnP you need an UPnP server that can manage .m3u files like Mediatomb." % ( self.ip) self['lab1'].setText(_(mytext)) self.session.open(MessageBox, _('Build Complete!'), MessageBox.TYPE_INFO, timeout=5) self.updateServ()
def prepareMainTemplate(self, request): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['configsections'] = getConfigsSections()['sections'] ret['showname'] = getShowName()['showname'] ret['customname'] = getCustomName()['customname'] ret['boxname'] = getBoxName()['boxname'] if not ret['boxname'] or not ret['customname']: ret['boxname'] = getInfo()['brand'] + " " + getInfo()['model'] ret['box'] = getBoxType() ret["remote"] = REMOTE if hasattr(eEPGCache, 'FULL_DESCRIPTION_SEARCH'): ret['epgsearchcaps'] = True else: ret['epgsearchcaps'] = False extras = [{'key': 'ajax/settings', 'description': _("Settings")}] ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute( ifaces[0], "ip") # use only the first configured interface if ip_list: ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) if fileExists( resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup"), 'nw': '1' }) oscamwebif, port, oscamconf, variant = self.oscamconfPath() # Assume http until we know better ... proto = "http" # config file exists if oscamwebif and oscamconf is not None: # oscam defaults to NOT to start the web interface unless a section for it exists, so reset port to None until we find one port = None data = open(oscamconf, "r").readlines() for i in data: if "httpport" in i.lower(): port = i.split("=")[1].strip() if port[0] == '+': proto = "https" port = port[1:] if oscamwebif and port is not None: url = "%s://%s:%s" % (proto, request.getRequestHostname(), port) if variant == "oscam": extras.append({ 'key': url, 'description': _("OSCam Webinterface"), 'nw': '1' }) elif variant == "ncam": extras.append({ 'key': url, 'description': _("NCam Webinterface"), 'nw': '1' }) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer # noqa: F401 extras.append({'key': 'ajax/at', 'description': _('AutoTimer')}) except ImportError as e: pass if fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.tmpl") ) or fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.pyo")): extras.append({ 'key': 'ajax/bqe', 'description': _('BouquetEditor') }) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh # noqa: F401 extras.append({'key': 'ajax/epgr', 'description': _('EPGRefresh')}) except ImportError as e: pass try: # this will currenly only works if NO Webiterface plugin installed # TODO: test if webinterface AND openwebif installed # 'nw'='1' -> target _blank # 'nw'='2' -> target popup # 'nw'=None -> target _self # syntax # addExternalChild( (Link, Resource, Name, Version, HasGUI, WebTarget) ) # example addExternalChild( ("webadmin", root, "WebAdmin", 1, True, "_self") ) from Plugins.Extensions.OpenWebif.WebChilds.Toplevel import loaded_plugins for plugins in loaded_plugins: if plugins[0] in [ "fancontrol", "iptvplayer", "serienrecorderui" ]: try: extras.append({ 'key': plugins[0], 'description': plugins[2], 'nw': '2' }) except KeyError: pass elif len(plugins) > 4: if plugins[4] == True: try: if len(plugins) > 5 and plugins[5] == "_self": extras.append({ 'key': plugins[0], 'description': plugins[2] }) else: extras.append({ 'key': plugins[0], 'description': plugins[2], 'nw': '1' }) except KeyError: pass except ImportError as e: pass if os.path.exists('/usr/bin/shellinaboxd') and (fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/terminal.tmpl" ) ) or fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/terminal.pyo") )): extras.append({ 'key': 'ajax/terminal', 'description': _('Terminal') }) ret['extras'] = extras theme = 'original' if config.OpenWebif.webcache.theme.value: theme = config.OpenWebif.webcache.theme.value if not os.path.exists(getPublicPath('themes')): if not (theme == 'original' or theme == 'clear'): theme = 'original' config.OpenWebif.webcache.theme.value = theme config.OpenWebif.webcache.theme.save() ret['theme'] = theme moviedb = config.OpenWebif.webcache.moviedb.value if config.OpenWebif.webcache.moviedb.value else EXT_EVENT_INFO_SOURCE config.OpenWebif.webcache.moviedb.value = moviedb config.OpenWebif.webcache.moviedb.save() ret['moviedb'] = moviedb imagedistro = getInfo()['imagedistro'] ret['vti'] = imagedistro in ("vti") and 1 or 0 ret['webtv'] = os.path.exists(getPublicPath('webtv')) ret['stbLang'] = STB_LANG return ret
def cbConfirmDone(self, ret): if not ret: return if self["key_green"].getText() == 'Connect': networkAdapters = iNetwork.getConfiguredAdapters() for x in networkAdapters: if x[:3] == 'ppp': continue iNetwork.setAdapterAttribute(x, "up", False) iNetwork.deactivateInterface(x) x = {} try: x = self["menulist"].getCurrent()[1] except: printInfoModemMgr('no selected device..') return devFile = '/usr/share/usb_modeswitch/%s:%s' % (x.get("Vendor"), x.get("ProdID")) if not os.path.exists(devFile) : message = "Can't found device file!! [%s]" % (devFile) printInfoModemMgr(message) #self.session.open(MessageBox, _(message), MessageBox.TYPE_INFO) return if self["key_green"].getText() == 'Disconnect': cmd = "%s 0" % (commandBin) self.taskManager.append(cmd, self.cbPrintAvail, self.cbPrintClose) cmd = "%s 1" % (commandBin) self.taskManager.append(cmd, self.cbPrintAvail, self.cbUnloadClose) self.taskManager.setStatusCB(self.setDisconnectStatus) self['myip'].setText(_('IP : 0.0.0.0')) # After Disconnect turn on all adapters and restart network networkAdapters = iNetwork.getConfiguredAdapters() for x in networkAdapters: iNetwork.setAdapterAttribute(x, "up", True) iNetwork.activateInterface(x) iNetwork.restartNetwork() else: cmd = "%s 2 vendor=0x%s product=0x%s" % (commandBin, x.get("Vendor"), x.get("ProdID")) self.taskManager.append(cmd, self.cbStep1PrintAvail, self.cbPrintClose) cmd = "%s 3 %s %s" % (commandBin, x.get("Vendor"), x.get("ProdID")) # do not save new vendor id and product id changed by usb-switchmode, use only 1st ones ( when no /dev/ttyUSB0 ) - it appears ONLY when it is switched to GSM MODE if not fileExists("/dev/ttyUSB0"): # SAVE Current Connection vendor and product ids for future Auto-Connect mode config.plugins.gmodemmanager.vendorid.setValue(x.get("Vendor")) config.plugins.gmodemmanager.productid.setValue(x.get("ProdID")) config.plugins.gmodemmanager.vendorid.save() config.plugins.gmodemmanager.productid.save() self.taskManager.append(cmd, self.cbPrintAvail, self.cbPrintClose) cmd = "%s 4" % (commandBin) self.taskManager.append(cmd, self.cbStep3PrintAvail, self.cbMakeWvDialClose) cmd = "%s 5" % (commandBin) self.taskManager.append(cmd, self.cbRunWvDialAvail, self.cbPrintClose) self.taskManager.setStatusCB(self.setConnectStatus) self.taskManager.next()
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/etc/.box"): brand = "HDMU" f = open("/etc/.box",'r') model = f.readline().strip().lower() if model.startswith("et"): brand = "Xtrend" elif model.startswith("vu"): brand = "VuPlus" elif model.startswith("gb"): brand = "GigaBlue" elif model.startswith("ufs") or model.startswith("ufc"): brand = "Kathrein" if model in ("ufs910", "ufs922", "ufc960"): chipset = "SH4 @266MHz" else: chipset = "SH4 @450MHz" elif model.startswith("xpeed"): brand = "GoldenInterstar" elif model.startswith("topf"): brand = "Topfield" chipset = "SH4 @266MHz" elif model.startswith("azbox"): brand = "AZBox" f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif model.startswith("spark"): brand = "Fulan" chipset = "SH4 @450MHz" elif fileExists("/proc/stb/info/hwmodel",'r'): # divide to brand model. f = open("/proc/stb/info/hwmodel",'r') f_model = f.readline().strip().lower() if f_model.startswith("me"): model = "Mediabox HD LX-1" brand = "Jepssen" elif f_model.startswith("op"): model = f_model[0:1].upper() + f_model[1:8].lower() + " " + f_model[8:].upper() # optimussos1 ==> Optimuss OS1 brand = "Edision" elif f_model.startswith("force1p"): if fileExists("/etc/.brandtype"): b = open("/etc/.brandtype",'r') b_brand = b.readline().strip().lower() if b_brand.startswith("ed"): model = "Optimuss OS3+" brand = "Edision" elif b_brand.startswith("te"): model = "TM-NANO-3T COMBO" brand = "Technomate" elif b_brand.startswith("sw"): model = "Force1+" brand = "4D" elif b_brand.startswith("wo"): model = "Force1+" brand = "Worldvision" else: model = "Force1+" brand = "Iqon" b.close() elif f_model.startswith("optimussos"): model = "Optimuss OS" brand = "Edision" elif f_model.startswith("force2plus"): model = "force2plus" brand = "Iqon" elif f_model.startswith("force2se"): model = "force2se" brand = "Iqon" elif f_model.startswith("force2"): model = "force2" brand = "Iqon" elif f_model.startswith("force2nano"): model = "force2nano" brand = "Iqon" elif f_model.startswith("tmnanosecombo"): model = "TM-NANO-SE Combo" brand = "Technomate" elif f_model.startswith("tmnanosem2"): model = "TM-NANO-SE M2" brand = "Technomate" elif f_model.startswith("tmnanoseplus"): model = "TM-NANO-SE Plus" brand = "Technomate" elif f_model.startswith("tmnanose"): model = "TM-NANO-SE" brand = "Technomate" elif f_model.startswith("tmnanom3"): model = "TM-NANO M3" brand = "Technomate" elif f_model.startswith("fusionhdse"): model = "FUSION HD SE" brand = "Xsarius" elif f_model.startswith("fusionhd"): model = "FUSION HD" brand = "Xsarius" elif f_model.startswith("purehd"): model = "PURE HD" if fileExists("/etc/.brandtype"): b = open("/etc/.brandtype",'r') b_brand = b.readline().strip().lower() brand = b_brand[0:1].upper() + b_brand[1:].lower() b.close() elif f_model.startswith("selfsat"): model = "SELF SAT" if fileExists("/etc/.brandtype"): b = open("/etc/.brandtype",'r') b_brand = b.readline().strip().lower() brand = b_brand[0:1].upper() + b_brand[1:].lower() b.close() else: model = f_model if fileExists("/etc/.brandtype"): b = open("/etc/.brandtype",'r') b_brand = b.readline().strip().lower() brand = b_brand[0:1].upper() + b_brand[1:].lower() b.close() f.close() elif fileExists("/proc/stb/info/boxtype"): brand = "Xtrend" f = open("/proc/stb/info/boxtype",'r') model = f.readline().strip().lower() if model.startswith("et"): brand = "Xtrend" elif model.startswith("ini"): if model.endswith("sv"): brand = "MiracleBox" elif model.endswith("ru"): brand = "Sezam" else: brand = "Venton" elif model.startswith("xp"): brand = "MaxDigital" elif model.startswith("ixuss"): brand = "Medialink" model = model.replace(" ", "") f.close() elif fileExists("/proc/stb/info/vumodel"): brand = "VuPlus" f = open("/proc/stb/info/vumodel",'r') model = f.readline().strip().lower() f.close() elif fileExists("/proc/stb/info/azmodel"): brand = "AZBox" f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" else: f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "tf7700hdpvr": brand = "Topfield" chipset = "SH4 @266MHz" elif model == "nbox": brand = "Advanced Digital Broadcast" chipset = "SH4 @266MHz" elif model in ("adb2850", "adb2849"): brand = "Advanced Digital Broadcast" chipset = "SH4 @450MHz" elif model in ("esi88", "uhd88", "dsi87"): brand = "SagemCom" chipset = "SH4 @450MHz" info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset",'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo",'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ',1)[0]) info['mem2'] = "%s kB" % memFree try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime/86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime/3600, (uptime%3600)/60) except: uptimetext = "?" info['uptime'] = uptimetext if fileExists("/etc/bhversion"): f = open("/etc/bhversion",'r') imagever = f.readline().strip() f.close() elif fileExists("/etc/vtiversion.info"): f = open("/etc/vtiversion.info",'r') imagever = f.readline().strip() f.close() else: imagever = about.getImageVersionString() info["webifver"] = getOpenWebifVer() info['imagever'] = imagever info['enigmaver'] = about.getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: if hdd.free() <= 1024: free = "%i MB" % (hdd.free()) else: free = float(hdd.free()) / float(1024) free = "%.3f GB" % free info['hdd'].append({ "model": hdd.model(), "capacity": hdd.capacity(), "free": free }) return info
def populate(self): if isVTISkin: self["EnigmaVersion"] = StaticText(_("Version") + ": " + about.getEnigmaVersionString()) self["ImageVersion"] = StaticText(_("Image") + ": " + about.getImageVersionString()) self["TunerHeader"] = StaticText(_("Detected NIMs:")) fp_version = getFPVersion() if fp_version is None: fp_version = "" else: fp_version = _("Frontprocessor version: %s") % str(fp_version) self["FPVersion"] = StaticText(fp_version) nims = nimmanager.nimList() self.tuner_list = [] if len(nims) <= 4 : for count in (0, 1, 2, 3, 4, 5, 6, 7): if count < len(nims): self["Tuner" + str(count)] = StaticText(nims[count]) self.tuner_list.append((nims[count] + "\n")) else: self["Tuner" + str(count)] = StaticText("") else: desc_list = [] count = 0 cur_idx = -1 while count < len(nims): data = nims[count].split(":") idx = data[0].strip('Tuner').strip() desc = data[1].strip() if desc_list and desc_list[cur_idx]['desc'] == desc: desc_list[cur_idx]['end'] = idx else: desc_list.append({'desc' : desc, 'start' : idx, 'end' : idx}) cur_idx += 1 count += 1 for count in (0, 1, 2, 3, 4, 5, 6, 7): if count < len(desc_list): if desc_list[count]['start'] == desc_list[count]['end']: text = "Tuner %s: %s" % (desc_list[count]['start'], desc_list[count]['desc']) else: text = "Tuner %s-%s: %s" % (desc_list[count]['start'], desc_list[count]['end'], desc_list[count]['desc']) else: text = "" self["Tuner" + str(count)] = StaticText(text) if text != "": self.tuner_list.append(text + "\n") self["HDDHeader"] = StaticText(_("Detected HDD:")) hddlist = harddiskmanager.HDDList() hdd = hddlist and hddlist[0][1] or None if hdd is not None and hdd.model() != "": self["hddA"] = StaticText(_("%s\n(%s, %d MB free)") % (hdd.model(), hdd.capacity(),hdd.free())) else: self["hddA"] = StaticText(_("none")) self.enigma2_version = _("Version") + ": " + about.getEnigmaVersionString() self.image_version = _("Image") + ": " + about.getImageVersionString() cpu_info = parseLines("/proc/cpuinfo") cpu_name = "N/A" for line in cpu_info: if line.find('model') != -1: cpu_name = line.split(':') if len(cpu_name) >= 2: cpu_name = cpu_name[1].strip() break self.cpu = _("CPU") + ": " + cpu_name self.chipset = _("Chipset") + ": " + parseFile("/proc/stb/info/chipset") self.tuner_header = _("Detected NIMs:") self.hdd_header = _("Detected HDD:") self.hdd_list = [] if len(hddlist): for hddX in hddlist: hdd = hddX[1] if hdd.model() != "": self.hdd_list.append((hdd.model() + "\n %.2f GB - %.2f GB" % (hdd.diskSize()/1000.0, hdd.free()/1000.0) + " " + _("free") + "\n\n")) ifaces = iNetwork.getConfiguredAdapters() iface_list = [] for iface in ifaces: iface_list.append((_("Interface") + " : " + iNetwork.getAdapterName(iface) + " ("+ iNetwork.getFriendlyAdapterName(iface) + ")\n")) iface_list.append((_("IP") + " : " + parse_ipv4(iNetwork.getAdapterAttribute(iface, "ip")) + "\n")) iface_list.append((_("Netmask") + " : " + parse_ipv4(iNetwork.getAdapterAttribute(iface, "netmask")) + "\n")) iface_list.append((_("Gateway") + " : " + parse_ipv4(iNetwork.getAdapterAttribute(iface, "gateway")) + "\n")) if iNetwork.getAdapterAttribute(iface, "dhcp"): iface_list.append((_("DHCP") + " : " + _("Yes") + "\n")) else: iface_list.append((_("DHCP") + " : " + _("No") + "\n")) iface_list.append((_("MAC") + " : " + iNetwork.getAdapterAttribute(iface, "mac") + "\n")) iface_list.append(("\n")) my_txt = self.enigma2_version + "\n" my_txt += self.image_version + "\n" my_txt += "\n" my_txt += self.cpu + "\n" my_txt += self.chipset + "\n" my_txt += "\n" my_txt += self.tuner_header + "\n" for x in self.tuner_list: my_txt += " " + x my_txt += "\n" my_txt += _("Network") + ":\n" for x in iface_list: my_txt += " " + x my_txt += self.hdd_header + "\n" for x in self.hdd_list: my_txt += " " + x my_txt += "\n" self["FullAbout"] = ScrollLabel(my_txt) else: self["lab1"] = StaticText(_("openESI")) self["lab2"] = StaticText(_("By openESI Image Team")) self["lab3"] = StaticText(_("Support at") + " www.openesi.eu") model = None AboutText = getAboutText()[0] self["AboutScrollLabel"] = ScrollLabel(AboutText)
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/proc/stb/info/hwmodel"): file = open("/proc/stb/info/hwmodel") model = file.read().strip().lower() file.close() if model == "tmtwinoe": model = "TM-TWIN-OE" brand = "Technomate" elif model == "tm2toe": model = "TM-2T-OE" brand = "Technomate" elif model == "tmsingle": model = "TM-SINGLE" brand = "Technomate" elif model == "tmnanooe": model = "TM-NANO-OE" brand = "Technomate" elif model == "ios100hd": model = "IOS-100HD" brand = "Iqon" elif model == "ios200hd": model = "IOS-200HD" brand = "Iqon" elif model == "ios300hd": model = "IOS-300HD" brand = "Iqon" elif model == "optimussos1": model = "Optimuss-OS1" brand = "Edision" elif model == "optimussos2": model = "Optimuss-OS2" brand = "Edision" elif model == "sogno-8800hd": brand = "Sogno" model = "Sogno 8800HD" elif fileExists("/proc/stb/info/boxtype"): file = open("/proc/stb/info/boxtype") model = file.read().strip().lower() file.close() if model == "gigablue": brand = "GigaBlue" if fileExists("/proc/stb/info/gbmodel"): file = open("/proc/stb/info/gbmodel") model = file.read().strip().lower() file.close() elif model.startswith("et"): brand = "Clarke-Xtrend" if model == "et9500": model = "et9x00" elif model.startswith("ini"): if model.endswith("sv"): brand = "MiracleBox" if model == "ini-5000sv": model = "Premium Twin" elif model == "ini-1000sv": model = "Premium Mini" else: model elif model.endswith("de"): brand = "Golden Interstar" if model == "ini-1000de": model = "Xpeed LX" elif model == "ini-9000de": model = "Xpeed LX3" else: model elif model.endswith("ru"): brand = "Sezam" if model == "ini-1000ru": model = "Sezam 1000-HD" elif model == "ini-5000ru": model = "Sezam 5000-HD" elif model == "ini-9000ru": model = "Sezam Marvel" else: model else: brand = "Venton" elif model == "enfinity": brand = "EVO" model = "ENfinity" elif model == "xp1000": brand = "XP-Series" elif model == "xp1000s": brand = "Octagon" model = "SF8 HD" elif model == "odinm9": brand = "Odin-Series" elif model == "odinm7": if getImageDistro() == 'axassupport': brand = "AXAS" model = "Class M" elif getBoxType() == 'odinm6': brand = "TELESTAR" model = "STARSAT LX" elif getMachineName() == 'AX-Odin': brand = "Opticum" model = "AX-Odin" else: brand = "Odin-Series" elif model == "e3hd": if getImageDistro() == 'axassupport': brand = "AXAS" model = "Class E" else: brand = "E3-Series" elif model == "ebox5000": brand = "MixOs-Series" model = "MixOs F5" elif model == "ebox5100": brand = "MixOs-Series" model = "MixOs F5mini" elif model == "ebox7358": brand = "MixOs-Series" model = "MixOs F7" elif model.startswith("ixuss"): brand = "Ixuss-Series" chipset = "BCM7405" elif fileExists("/proc/stb/info/azmodel"): brand = "AZBOX" file = open("/proc/stb/info/model") model = file.read().strip().lower() file.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif fileExists("/proc/stb/info/vumodel"): brand = "Vu Plus" file = open("/proc/stb/info/vumodel") model = file.read().strip().lower() file.close() else: file = open("/proc/stb/info/model") model = file.read().strip().lower() if model.startswith('spar'): brand = "Spark" file.close() info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset",'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 file = open("/proc/meminfo",'r') for line in file: parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ',1)[0]) info['mem2'] = "%s kB" % memFree file.close() try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime/86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime/3600, (uptime%3600)/60) except: uptimetext = "?" info['uptime'] = uptimetext info["webifver"] = getOpenWebifVer() info['imagedistro'] = getImageDistro() info['imagever'] = getImageVersion() + '.' + getImageBuild() info['enigmaver'] = getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: if hdd.free() <= 1024: free = "%i MB" % (hdd.free()) else: free = float(hdd.free()) / float(1024) free = "%.3f GB" % free info['hdd'].append({ "model": hdd.model(), "capacity": hdd.capacity(), "free": free }) return info
def prepareMainTemplate(self): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['remotegrabscreenshot'] = getRemoteGrabScreenshot()['remotegrabscreenshot'] ret['configsections'] = getConfigsSections()['sections'] ret['zapstream'] = getZapStream()['zapstream'] ret['box'] = "dmm" if open("/proc/stb/info/model",'r').read().strip().lower() == "gigablue": ret['box'] = "gigablue" if fileExists("/proc/stb/info/boxtype"): ret['box'] = open("/proc/stb/info/boxtype").read().strip().lower() elif fileExists("/proc/stb/info/vumodel"): ret['box'] = open("/proc/stb/info/vumodel").read().strip().lower() elif fileExists("/proc/stb/info/azmodel"): ret['box'] = open("/proc/stb/info/model").read().strip().lower() if ret["box"] in ("solo", "duo", "uno", "solo2", "duo2"): ret["remote"] = "vu_normal" elif ret["box"] == "ultimo": ret["remote"] = "vu_ultimo" elif ret["box"] in ("et9x00", "et9000", "et9200", "et9500"): ret["remote"] = "et9x00" elif ret["box"] in ("et5x00", "et5000", "et6000"): ret["remote"] = "et5x00" elif ret["box"] in ("et4x00", "et4000"): ret["remote"] = "et4x00" elif ret["box"] == "gigablue": ret["remote"] = "gigablue" elif ret["box"] in ("me", "minime"): ret["remote"] = "me" elif ret["box"] in ("premium", "premium+"): ret["remote"] = "premium" elif ret["box"] in ("elite", "ultra"): ret["remote"] = "elite" elif ret["box"] in ("ini-1000", "ini-1000ru"): ret["remote"] = "ini-1000" elif ret["box"] in ("ini-1000sv", "ini-5000sv"): ret["remote"] = "miraclebox" elif ret["box"] == "ini-3000": ret["remote"] = "ini-3000" elif ret["box"] in ("ini-7012", "ini-7000", "ini-5000", "ini-5000ru"): ret["remote"] = "ini-7000" elif ret["box"] == "xp1000": ret["remote"] = "xp1000" else: ret["remote"] = "dmm" extras = [] extras.append({ 'key': 'ajax/settings','description': _("Settings")}) if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): from Components.config import config from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute(ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) try: lcd4linux_port = "http://" + ip + ":" + str(config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup")}) # TODO AutoTimer,Epgrefresh,BouquetEditor as Webinterface # try: # from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer # extras.append({ 'key': 'ajax/xxx','description': 'AutoTimer'}) # except ImportError: # try: # from Plugins.Extensions.WebBouquetEditor.WebComponents.Sources.BouquetEditor import BouquetEditor # extras.append({ 'key': 'ajax/xxx','description': 'BouquetEditor'}) # except ImportError: # try: # from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh # extras.append({ 'key': 'ajax/xxx','description': 'EPGRefresh'}) # except ImportError: ret['extras'] = extras return ret
def prepareMainTemplate(self): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['remotegrabscreenshot'] = getRemoteGrabScreenshot( )['remotegrabscreenshot'] ret['configsections'] = getConfigsSections()['sections'] ret['zapstream'] = getZapStream()['zapstream'] ret['showname'] = getShowName()['showname'] ret['customname'] = getCustomName()['customname'] ret['boxname'] = getBoxName()['boxname'] if not ret['boxname'] or not ret['customname']: ret['boxname'] = getInfo()['brand'] + " " + getInfo()['model'] ret['box'] = "dmm" # if open("/proc/stb/info/model",'r').read().strip().lower() == "gigablue": # ret['box'] = "gigablue" if fileExists("/etc/.box"): ret['box'] = open("/etc/.box").read().strip().lower() elif fileExists("/proc/stb/info/boxtype"): ret['box'] = open("/proc/stb/info/boxtype").read().strip().lower() elif fileExists("/proc/stb/info/vumodel"): ret['box'] = open("/proc/stb/info/vumodel").read().strip().lower() elif fileExists("/proc/stb/info/azmodel"): ret['box'] = open("/proc/stb/info/azmodel").read().strip().lower() elif fileExists("/proc/stb/info/model"): ret['box'] = open("/proc/stb/info/model").read().strip().lower() if ret["box"] in ("vusolo", "vuduo", "vuuno", "vusolo2", "vuduo2", "vusolose", "solo", "duo", "uno", "solo2", "duo2", "solose"): ret["remote"] = "vu_normal" elif ret["box"] in ("vuultimo", "ultimo"): ret["remote"] = "vu_ultimo" elif ret["box"] == "e3hd": ret["remote"] = "e3hd" elif ret["box"] in ("et9x00", "et9000", "et9200", "et9500"): ret["remote"] = "et9x00" elif ret["box"] in ("et5x00", "et5000", "et6x00", "et6000"): ret["remote"] = "et5x00" elif ret["box"] in ("et4x00", "et4000"): ret["remote"] = "et4x00" elif ret["box"] == "gbquad": ret["remote"] = "gigablue" elif ret["box"] == "gbquadplus": ret["remote"] = "gbquadplus" elif ret["box"] == "et6500": ret["remote"] = "et6500" elif ret["box"] in ("et8x00", "et8000", "et1x000", "et10000"): ret["remote"] = "et8000" elif ret["box"] in ("formuler1", "formuler3"): ret["remote"] = "formuler1" elif ret["box"] in ("azboxme", "azboxminime", "me", "minime"): ret["remote"] = "me" elif ret["box"] in ("optimussos1", "optimussos1plus", "optimussos2", "optimussos2plus"): ret["remote"] = "optimuss" elif ret["box"] in ("premium", "premium+"): ret["remote"] = "premium" elif ret["box"] in ("elite", "ultra"): ret["remote"] = "elite" elif ret["box"] in ("ini-1000", "ini-1000ru"): ret["remote"] = "ini-1000" elif ret["box"] in ("ini-1000sv", "ini-5000sv"): ret["remote"] = "miraclebox" elif ret["box"] == "ini-3000": ret["remote"] = "ini-3000" elif ret["box"] in ("ini-7012", "ini-7000", "ini-5000", "ini-5000ru"): ret["remote"] = "ini-7000" elif ret["box"].startswith("spark"): ret["remote"] = "spark" elif ret["box"] == "xp1000": ret["remote"] = "xp1000" elif ret["box"].startswith("xpeedlx"): ret["remote"] = "xpeedlx" elif ret["box"] in ("nbox", "esi88", "adb2850", "adb2849", "dsi87"): ret["remote"] = "nbox" elif ret["box"] == "hd2400": ret["remote"] = "hd2400" elif ret["box"].startswith("ixuss"): ret["remote"] = ret["box"].replace(" ", "") else: ret["remote"] = "dmm" extras = [] extras.append({'key': 'ajax/settings', 'description': _("Settings")}) if fileExists( resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists( resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): from Components.config import config from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute( ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) try: lcd4linux_port = "http://" + ip + ":" + str( config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup") }) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer extras.append({'key': 'ajax/at', 'description': _('AutoTimer')}) except ImportError: pass if fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.tmpl")): extras.append({ 'key': 'ajax/bqe', 'description': _('BouquetEditor') }) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh extras.append({'key': 'ajax/epgr', 'description': _('EPGRefresh')}) except ImportError: pass ret['extras'] = extras return ret
def populate(self): self["lab1"] = StaticText(_("Miraclebox")) self["lab2"] = StaticText(_("By Miraclebox Image Team")) model = None self["lab3"] = StaticText(_("Support at") + " www.miraclebox.se") if isVTISkin: self["EnigmaVersion"] = StaticText(_("Version") + ": " + about.getEnigmaVersionString()) self["ImageVersion"] = StaticText(_("Image") + ": " + about.getImageVersionString()) self["TunerHeader"] = StaticText(_("Detected NIMs:")) fp_version = getFPVersion() if fp_version is None: fp_version = "" else: fp_version = _("Frontprocessor version: %d") % fp_version self["FPVersion"] = StaticText(fp_version) nims = nimmanager.nimList() self.tuner_list = [] if len(nims) <= 4 : for count in (0, 1, 2, 3, 4, 5, 6, 7): if count < len(nims): self["Tuner" + str(count)] = StaticText(nims[count]) self.tuner_list.append((nims[count] + "\n")) else: self["Tuner" + str(count)] = StaticText("") else: desc_list = [] count = 0 cur_idx = -1 while count < len(nims): data = nims[count].split(":") idx = data[0].strip('Tuner').strip() desc = data[1].strip() if desc_list and desc_list[cur_idx]['desc'] == desc: desc_list[cur_idx]['end'] = idx else: desc_list.append({'desc' : desc, 'start' : idx, 'end' : idx}) cur_idx += 1 count += 1 for count in (0, 1, 2, 3, 4, 5, 6, 7): if count < len(desc_list): if desc_list[count]['start'] == desc_list[count]['end']: text = "Tuner %s: %s" % (desc_list[count]['start'], desc_list[count]['desc']) else: text = "Tuner %s-%s: %s" % (desc_list[count]['start'], desc_list[count]['end'], desc_list[count]['desc']) else: text = "" self["Tuner" + str(count)] = StaticText(text) if text != "": self.tuner_list.append(text + "\n") self["HDDHeader"] = StaticText(_("Detected HDD:")) hddlist = harddiskmanager.HDDList() hdd = hddlist and hddlist[0][1] or None if hdd is not None and hdd.model() != "": self["hddA"] = StaticText(_("%s\n(%s, %d MB free)") % (hdd.model(), hdd.capacity(),hdd.free())) else: self["hddA"] = StaticText(_("none")) self.enigma2_version = _("Version") + ": " + about.getEnigmaVersionString() self.image_version = _("Image") + ": " + about.getImageVersionString() cpu_info = parseLines("/proc/cpuinfo") cpu_name = "N/A" for line in cpu_info: if line.find('model') != -1: cpu_name = line.split(':') if len(cpu_name) >= 2: cpu_name = cpu_name[1].strip() break self.cpu = _("CPU") + ": " + cpu_name self.chipset = _("Chipset") + ": " + parseFile("/proc/stb/info/chipset") self.tuner_header = _("Detected NIMs:") self.hdd_header = _("Detected HDD:") self.hdd_list = [] if len(hddlist): for hddX in hddlist: hdd = hddX[1] if hdd.model() != "": self.hdd_list.append((hdd.model() + "\n %.2f GB - %.2f GB" % (hdd.diskSize()/1000.0, hdd.free()/1000.0) + " " + _("free") + "\n\n")) ifaces = iNetwork.getConfiguredAdapters() iface_list = [] for iface in ifaces: iface_list.append((_("Interface") + " : " + iNetwork.getAdapterName(iface) + " ("+ iNetwork.getFriendlyAdapterName(iface) + ")\n")) iface_list.append((_("IP") + " : " + parse_ipv4(iNetwork.getAdapterAttribute(iface, "ip")) + "\n")) iface_list.append((_("Netmask") + " : " + parse_ipv4(iNetwork.getAdapterAttribute(iface, "netmask")) + "\n")) iface_list.append((_("Gateway") + " : " + parse_ipv4(iNetwork.getAdapterAttribute(iface, "gateway")) + "\n")) if iNetwork.getAdapterAttribute(iface, "dhcp"): iface_list.append((_("DHCP") + " : " + _("Yes") + "\n")) else: iface_list.append((_("DHCP") + " : " + _("No") + "\n")) iface_list.append((_("MAC") + " : " + iNetwork.getAdapterAttribute(iface, "mac") + "\n")) iface_list.append(("\n")) my_txt = self.enigma2_version + "\n" my_txt += self.image_version + "\n" my_txt += "\n" my_txt += self.cpu + "\n" my_txt += self.chipset + "\n" my_txt += "\n" my_txt += self.tuner_header + "\n" for x in self.tuner_list: my_txt += " " + x my_txt += "\n" my_txt += _("Network") + ":\n" for x in iface_list: my_txt += " " + x my_txt += self.hdd_header + "\n" for x in self.hdd_list: my_txt += " " + x my_txt += "\n" self["FullAbout"] = ScrollLabel(my_txt) else: self["lab1"] = StaticText(_("openATV")) self["lab2"] = StaticText(_("By openATV Image Team")) self["lab3"] = StaticText(_("Support at") + " www.opena.tv") model = None AboutText = getAboutText()[0] self["AboutScrollLabel"] = ScrollLabel(AboutText)
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/proc/stb/info/vumodel"): brand = "Vuplus" f = open("/proc/stb/info/vumodel", 'r') model = f.readline().strip() f.close() elif fileExists("/proc/stb/info/boxtype"): brand = "Clarke-Xtrend" f = open("/proc/stb/info/boxtype", 'r') model = f.readline().strip() f.close() else: f = open("/proc/stb/info/model", 'r') model = f.readline().strip() f.close() info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset", 'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset f = open("/proc/meminfo", 'r') parts = f.readline().split(':') info['mem1'] = parts[1].strip() parts = f.readline().split(':') info['mem2'] = parts[1].strip() f.close() f = os.popen("uptime") parts = f.readline().split(',') info['uptime'] = parts[0].strip() f.close() if fileExists("/etc/bhversion"): f = open("/etc/bhversion", 'r') imagever = f.readline().strip() f.close() else: imagever = about.getImageVersionString() info["webifver"] = "0.0.0" info['imagever'] = imagever info['enigmaver'] = about.getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: if hdd.free() <= 1024: free = "%i MB" % (hdd.free()) else: free = float(hdd.free()) / float(1024) free = "%.3f GB" % free info['hdd'].append({ "model": hdd.model(), "capacity": hdd.capacity(), "free": free }) return info
def prepareMainTemplate(self, request): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['configsections'] = getConfigsSections()['sections'] ret['showname'] = getShowName()['showname'] ret['customname'] = getCustomName()['customname'] ret['boxname'] = getBoxName()['boxname'] if not ret['boxname'] or not ret['customname']: ret['boxname'] = getInfo()['brand'] + " " + getInfo()['model'] ret['box'] = getBoxType() ret["remote"] = REMOTE if hasattr(eEPGCache, 'FULL_DESCRIPTION_SEARCH'): ret['epgsearchcaps'] = True else: ret['epgsearchcaps'] = False extras = [{'key': 'ajax/settings', 'description': _("Settings")}] ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute(ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): try: lcd4linux_port = "http://" + ip + ":" + str(config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except: # noqa: E722 lcd4linux_key = None if lcd4linux_key: extras.append({'key': lcd4linux_key, 'description': _("LCD4Linux Setup"), 'nw': '1'}) self.oscamconf = self.oscamconfPath() if self.oscamconf is not None: data = open(self.oscamconf, "r").readlines() proto = "http" port = None for i in data: if "httpport" in i.lower(): port = i.split("=")[1].strip() if port[0] == '+': proto = "https" port = port[1:] if port is not None: url = "%s://%s:%s" % (proto, request.getRequestHostname(), port) extras.append({'key': url, 'description': _("OSCam Webinterface"), 'nw': '1'}) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer # noqa: F401 extras.append({'key': 'ajax/at', 'description': _('AutoTimer')}) except ImportError: pass if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.tmpl")) or fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.pyo")): extras.append({'key': 'ajax/bqe', 'description': _('BouquetEditor')}) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh # noqa: F401 extras.append({'key': 'ajax/epgr', 'description': _('EPGRefresh')}) except ImportError: pass try: # this will currenly only works if NO Webiterface plugin installed # TODO: test if webinterface AND openwebif installed from Plugins.Extensions.WebInterface.WebChilds.Toplevel import loaded_plugins for plugins in loaded_plugins: if plugins[0] in ["fancontrol", "iptvplayer"]: try: extras.append({'key': plugins[0], 'description': plugins[2], 'nw': '2'}) except KeyError: pass except ImportError: pass if os.path.exists('/usr/bin/shellinaboxd') and (fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/terminal.tmpl")) or fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/terminal.pyo"))): extras.append({'key': 'ajax/terminal', 'description': _('Terminal')}) ret['extras'] = extras theme = 'original' if config.OpenWebif.webcache.theme.value: theme = config.OpenWebif.webcache.theme.value if not os.path.exists(getPublicPath('themes')): if not (theme == 'original' or theme == 'clear'): theme = 'original' config.OpenWebif.webcache.theme.value = theme config.OpenWebif.webcache.theme.save() ret['theme'] = theme ret['webtv'] = os.path.exists(getPublicPath('webtv')) return ret
def getInfo(session=None, need_fullinfo=False): # TODO: get webif versione somewhere! info = {} global STATICBOXINFO if not (STATICBOXINFO is None or need_fullinfo): return STATICBOXINFO info['brand'] = getMachineBrand() info['model'] = getMachineName() info['boxtype'] = getBoxType() info['machinebuild'] = getMachineBuild() try: # temporary due OE-A info['lcd'] = getLcd() except: # nosec # noqa: E722 info['lcd'] = 0 try: # temporary due OE-A info['grabpip'] = getGrabPip() except: # nosec # noqa: E722 info['grabpip'] = 0 chipset = "unknown" if fileExists("/etc/.box"): f = open("/etc/.box", 'r') model = f.readline().strip().lower() f.close() if model.startswith("ufs") or model.startswith("ufc"): if model in ("ufs910", "ufs922", "ufc960"): chipset = "SH4 @266MHz" else: chipset = "SH4 @450MHz" elif model in ("topf", "tf7700hdpvr"): chipset = "SH4 @266MHz" elif model.startswith("azbox"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif model.startswith("spark"): if model == "spark7162": chipset = "SH4 @540MHz" else: chipset = "SH4 @450MHz" elif fileExists("/proc/stb/info/azmodel"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif fileExists("/proc/stb/info/model"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "tf7700hdpvr": chipset = "SH4 @266MHz" elif model == "nbox": chipset = "STi7100 @266MHz" elif model == "arivalink200": chipset = "STi7109 @266MHz" elif model in ("adb2850", "adb2849", "dsi87"): chipset = "STi7111 @450MHz" elif model in ("sagemcom88", "esi88"): chipset = "STi7105 @450MHz" elif model.startswith("spark"): if model == "spark7162": chipset = "STi7162 @540MHz" else: chipset = "STi7111 @450MHz" elif model == "dm800": chipset = "bcm7401" elif model in ("dm800se", "dm500hd", "dm7020hd", "dm800sev2", "dm500hdv2", "dm7020hdv2"): chipset = "bcm7405" elif model == "dm8000": chipset = "bcm7400" elif model in ("dm820", "dm7080"): chipset = "bcm7435" elif model in ("dm520", "dm525"): chipset = "bcm73625" elif model in ("dm900", "dm920"): chipset = "bcm7252S" if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset", 'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo", 'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip().replace("kB", _("kB")) elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s %s" % (memFree, _("kB")) info['mem3'] = _("%s free / %s total") % (info['mem2'], info['mem1']) try: f = open("/proc/uptime", "r") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime / 86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime / 3600, (uptime % 3600) / 60) except: # nosec # noqa: E722 uptimetext = "?" info['uptime'] = uptimetext info["webifver"] = OPENWEBIFVER info['imagedistro'] = getImageDistro() info['friendlyimagedistro'] = getFriendlyImageDistro() info['oever'] = getOEVersion() info['imagever'] = getImageVersion() ib = getImageBuild() if ib: info['imagever'] = info['imagever'] + "." + ib info['enigmaver'] = getEnigmaVersionString() info['driverdate'] = getDriverDate() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion try: info['fp_version'] = getFPVersion() except: # nosec # noqa: E722 info['fp_version'] = None friendlychipsetdescription = _("Chipset") friendlychipsettext = info['chipset'].replace("bcm", "Broadcom ") if friendlychipsettext in ("7335", "7356", "7362", "73625", "7424", "7425", "7429"): friendlychipsettext = "Broadcom " + friendlychipsettext if not (info['fp_version'] is None or info['fp_version'] == 0): friendlychipsetdescription = friendlychipsetdescription + " (" + _( "Front processor version") + ")" friendlychipsettext = friendlychipsettext + " (" + str( info['fp_version']) + ")" info['friendlychipsetdescription'] = friendlychipsetdescription info['friendlychipsettext'] = friendlychipsettext info['tuners'] = [] for i in list(range(0, nimmanager.getSlotCount())): print( "[OpenWebif] -D- tuner '%d' '%s' '%s'" % (i, nimmanager.getNimName(i), nimmanager.getNim(i).getSlotName())) info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")", "rec": "", "live": "" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "friendlynic": getFriendlyNICChipSet(iface), "linkspeed": getLinkSpeed(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ipv4method": getIPv4Method(iface), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "v4prefix": sum([ bin(int(x)).count('1') for x in formatIp( iNetwork.getAdapterAttribute(iface, "netmask")).split('.') ]), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface)['addr'], "ipmethod": getIPMethod(iface), "firstpublic": getAdapterIPv6(iface)['firstpublic'] }) info['hdd'] = [] for hdd in harddiskmanager.hdd: dev = hdd.findMount() if dev: stat = os.statvfs(dev) free = stat.f_bavail * stat.f_frsize / 1048576. else: free = -1 if free <= 1024: free = "%i %s" % (free, _("MB")) else: free = free / 1024. free = "%.1f %s" % (free, _("GB")) size = hdd.diskSize() * 1000000 / 1048576. if size > 1048576: size = "%.1f %s" % ((size / 1048576.), _("TB")) elif size > 1024: size = "%.1f %s" % ((size / 1024.), _("GB")) else: size = "%d %s" % (size, _("MB")) iecsize = hdd.diskSize() # Harddisks > 1000 decimal Gigabytes are labelled in TB if iecsize > 1000000: iecsize = (iecsize + 50000) // float(100000) / 10 # Omit decimal fraction if it is 0 if (iecsize % 1 > 0): iecsize = "%.1f %s" % (iecsize, _("TB")) else: iecsize = "%d %s" % (iecsize, _("TB")) # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB elif iecsize > 300000: iecsize = "%d %s" % (((iecsize + 5000) // 10000 * 10), _("GB")) # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB elif iecsize > 1000: iecsize = "%d %s" % (((iecsize + 500) // 1000), _("GB")) else: iecsize = "%d %s" % (iecsize, _("MB")) info['hdd'].append({ "model": hdd.model(), "capacity": size, "labelled_capacity": iecsize, "free": free, "mount": dev, "friendlycapacity": _("%s free / %s total") % (free, size + ' ("' + iecsize + '")') }) info['shares'] = [] autofiles = ('/etc/auto.network', '/etc/auto.network_vti') for autofs in autofiles: if fileExists(autofs): method = "autofs" for line in open(autofs).readlines(): if not line.startswith('#'): # Replace escaped spaces that can appear inside credentials with underscores # Not elegant but we wouldn't want to expose credentials on the OWIF anyways tmpline = line.replace("\ ", "_") tmp = tmpline.split() if not len(tmp) == 3: continue name = tmp[0].strip() type = "unknown" if "cifs" in tmp[1]: # Linux still defaults to SMBv1 type = "SMBv1.0" settings = tmp[1].split(",") for setting in settings: if setting.startswith("vers="): type = setting.replace("vers=", "SMBv") elif "nfs" in tmp[1]: type = "NFS" # Default is r/w mode = _("r/w") settings = tmp[1].split(",") for setting in settings: if setting == "ro": mode = _("r/o") uri = tmp[2] parts = [] parts = tmp[2].split(':') if parts[0] == "": server = uri.split('/')[2] uri = uri.strip()[1:] else: server = parts[0] ipaddress = None if server: # Will fail on literal IPs try: # Try IPv6 first, as will Linux if has_ipv6: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET6) if tmpaddress: ipaddress = "[" + list( tmpaddress)[0][4][0] + "]" # Use IPv4 if IPv6 fails or is not present if ipaddress is None: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET) if tmpaddress: ipaddress = list(tmpaddress)[0][4][0] except: # nosec # noqa: E722 pass friendlyaddress = server if ipaddress is not None and not ipaddress == server: friendlyaddress = server + " (" + ipaddress + ")" info['shares'].append({ "name": name, "method": method, "type": type, "mode": mode, "path": uri, "host": server, "ipaddress": ipaddress, "friendlyaddress": friendlyaddress }) # TODO: fstab info['transcoding'] = TRANSCODING info['EX'] = '' if session: try: # gets all current stream clients for images using eStreamServer # TODO: get tuner info for streams # TODO: get recoding/timer info if more than one info['streams'] = GetStreamInfo() recs = NavigationInstance.instance.getRecordings() if recs: # only one stream s_name = '' if len(info['streams']) == 1: sinfo = info['streams'][0] s_name = sinfo["name"] + ' (' + sinfo["ip"] + ')' print("[OpenWebif] -D- s_name '%s'" % s_name) sname = '' timers = [] for timer in NavigationInstance.instance.RecordTimer.timer_list: if timer.isRunning() and not timer.justplay: timers.append( removeBad(timer.service_ref.getServiceName())) print("[OpenWebif] -D- timer '%s'" % timer.service_ref.getServiceName()) # TODO: more than one recording if len(timers) == 1: sname = timers[0] if sname == '' and s_name != '': sname = s_name print("[OpenWebif] -D- recs count '%d'" % len(recs)) for rec in recs: feinfo = rec.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['rec'] = getOrbitalText( cur_info) + ' / ' + sname service = session.nav.getCurrentService() if service is not None: sname = service.info().getName() feinfo = service.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['live'] = getOrbitalText( cur_info) + ' / ' + sname except Exception as error: info['EX'] = error info['timerpipzap'] = False info['timerautoadjust'] = False try: timer = RecordTimerEntry(ServiceReference("1:0:1:0:0:0:0:0:0:0"), 0, 0, '', '', 0) if hasattr(timer, "pipzap"): info['timerpipzap'] = True if hasattr(timer, "autoadjust"): info['timerautoadjust'] = True except Exception as error: print("[OpenWebif] -D- RecordTimerEntry check %s" % error) STATICBOXINFO = info return info
def areadyExistAnotherAdapter(): networkAdapters = iNetwork.getConfiguredAdapters() for x in networkAdapters: if x[:3] != 'ppp': return True return False
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/etc/.box"): brand = "HDMU" f = open("/etc/.box",'r') model = f.readline().strip().lower() if model.startswith("et"): brand = "Xtrend" elif model.startswith("vu"): brand = "VuPlus" elif model.startswith("gb"): brand = "GigaBlue" elif model.startswith("ufs") or model.startswith("ufc"): brand = "Kathrein" if model in ("ufs910", "ufs922", "ufc960"): chipset = "SH4 @266MHz" else: chipset = "SH4 @450MHz" elif model.startswith("xpeed"): brand = "GoldenInterstar" elif model.startswith("topf"): brand = "Topfield" chipset = "SH4 @266MHz" elif model.startswith("azbox"): brand = "AZBox" f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif model.startswith("spark"): brand = "Fulan" chipset = "SH4 @450MHz" elif fileExists("/proc/stb/info/boxtype"): brand = "Xtrend" f = open("/proc/stb/info/boxtype",'r') model = f.readline().strip().lower() if model.startswith("et"): brand = "Xtrend" elif model.startswith("ini"): if model.endswith("9000ru"): brand = "Sezam" model = "Marvel" elif model.endswith("5000ru"): brand = "Sezam" model = "hdx" elif model.endswith("1000ru"): brand = "Sezam" model = "hde" elif model.endswith("5000sv"): brand = "Miraclebox" model = "mbtwin" elif model.endswith("1000sv"): brand = "Miraclebox" model = "mbmini" elif model.endswith("1000de"): brand = "Golden Interstar" model = "xpeedlx" elif model.endswith("1000lx"): brand = "Golden Interstar" model = "xpeedlx" elif model.endswith("9000de"): brand = "Golden Interstar" model = "xpeedlx3" elif model.endswith("1000am"): brand = "Atemio" model = "5x00" elif model.endswith("de"): brand = "Golden Interstar" else: brand = "Venton" model = "Venton-hdx" elif model.startswith("xp"): brand = "MaxDigital" elif model.startswith("ixuss"): brand = "Medialink" model = model.replace(" ", "") elif model.startswith("formuler"): brand = "Formuler" f.close() elif fileExists("/proc/stb/info/vumodel"): brand = "VuPlus" f = open("/proc/stb/info/vumodel",'r') model = f.readline().strip().lower() f.close() elif fileExists("/proc/stb/info/azmodel"): brand = "AZBox" f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" else: f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "tf7700hdpvr": brand = "Topfield" chipset = "SH4 @266MHz" elif model == "nbox": brand = "Advanced Digital Broadcast" chipset = "SH4 @266MHz" elif model in ("adb2850", "adb2849"): brand = "Advanced Digital Broadcast" chipset = "SH4 @450MHz" elif model in ("esi88", "uhd88", "dsi87"): brand = "SagemCom" chipset = "SH4 @450MHz" info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset",'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo",'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ',1)[0]) info['mem2'] = "%s kB" % memFree try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime/86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime/3600, (uptime%3600)/60) except: uptimetext = "?" info['uptime'] = uptimetext if fileExists("/etc/bhversion"): f = open("/etc/bhversion",'r') imagever = f.readline().strip() f.close() elif fileExists("/etc/vtiversion.info"): f = open("/etc/vtiversion.info",'r') imagever = f.readline().strip() f.close() else: imagever = about.getImageVersionString() info["webifver"] = getOpenWebifVer() info['imagever'] = imagever info['enigmaver'] = about.getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "v4prefix": sum([bin(int(x)).count('1') for x in formatIp(iNetwork.getAdapterAttribute(iface, "netmask")).split('.')]), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: dev = hdd.findMount() if dev: stat = os.statvfs(dev) free = int((stat.f_bfree/1024) * (stat.f_bsize/1024)) else: free = -1 if free <= 1024: free = "%i MB" % free else: free = float(free) / float(1024) free = "%.3f GB" % free size = hdd.diskSize() * 1000000 / float(1048576) if size > 1048576: size = "%.2f TB" % (size / float(1048576)) elif size > 1024: size = "%d GB" % (size / float(1024)) else: size = "%d MB" % size iecsize = hdd.diskSize() # Harddisks > 1000 decimal Gigabytes are labelled in TB if iecsize > 1000000: iecsize = (iecsize + 50000) // float(100000) / 10 # Omit decimal fraction if it is 0 if (iecsize % 1 > 0): iecsize = "%.1f TB" % iecsize else: iecsize = "%d TB" % iecsize # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB elif iecsize > 300000: iecsize = "%d GB" % ((iecsize + 5000) // 10000 * 10) # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB elif iecsize > 1000: iecsize = "%d GB" % ((iecsize + 500) // 1000) else: iecsize = "%d MB" % iecsize info['hdd'].append({ "model": hdd.model(), "capacity": size, "labelled_capacity": iecsize, "free": free }) global STATICBOXINFO STATICBOXINFO = info return info
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/proc/stb/info/boxtype"): brand = "Clarke-Xtrend" f = open("/proc/stb/info/boxtype", 'r') model = f.readline().strip() if model == "ini-3000" or model == "ini-5000" or model == "ini-7000": brand = "INI-Series" f.close() elif fileExists("/proc/stb/info/vumodel"): brand = "Vuplus" f = open("/proc/stb/info/vumodel", 'r') model = f.readline().strip() f.close() elif fileExists("/proc/stb/info/azmodel"): brand = "AZBOX" f = open("/proc/stb/info/model", 'r') model = f.readline().strip() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" else: f = open("/proc/stb/info/model", 'r') model = f.readline().strip() if model == "spark" or model == "spark7162": brand = "AMIKO" f.close() info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset", 'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo", 'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s kB" % memFree try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime / 86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime / 3600, (uptime % 3600) / 60) except: uptimetext = "?" info['uptime'] = uptimetext if fileExists("/etc/bhversion"): f = open("/etc/bhversion", 'r') imagever = f.readline().strip() f.close() elif fileExists("/etc/vtiversion.info"): f = open("/etc/vtiversion.info", 'r') imagever = f.readline().strip() f.close() else: imagever = about.getImageVersionString() info["webifver"] = getOpenWebifVer() info['imagever'] = imagever info['enigmaver'] = about.getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: if hdd.free() <= 1024: free = "%i MB" % (hdd.free()) else: free = float(hdd.free()) / float(1024) free = "%.3f GB" % free info['hdd'].append({ "model": hdd.model(), "capacity": hdd.capacity(), "free": free }) return info
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/proc/stb/info/hwmodel"): file = open("/proc/stb/info/hwmodel") model = file.read().strip().lower() file.close() if model == "tmtwinoe": model = "TM-TWIN-OE" brand = "Technomate" elif model == "tm2toe": model = "TM-2T-OE" brand = "Technomate" elif model == "tmsingle": model = "TM-SINGLE" brand = "Technomate" elif model == "tmnanooe": model = "TM-NANO-OE" brand = "Technomate" elif model == "ios100hd": model = "IOS-100HD" brand = "Iqon" elif model == "ios200hd": model = "IOS-200HD" brand = "Iqon" elif model == "ios300hd": model = "IOS-300HD" brand = "Iqon" elif model == "optimussos1": model = "Optimuss-OS1" brand = "Edision" elif model == "optimussos2": model = "Optimuss-OS2" brand = "Edision" elif model == "sogno-8800hd": brand = "Sogno" model = "Sogno 8800HD" elif fileExists("/proc/stb/info/boxtype"): file = open("/proc/stb/info/boxtype") model = file.read().strip().lower() file.close() if model == "gigablue": brand = "GigaBlue" if fileExists("/proc/stb/info/gbmodel"): file = open("/proc/stb/info/gbmodel") model = file.read().strip().lower() file.close() elif model.startswith("et"): brand = "Clarke-Xtrend" if model == "et9500": model = "et9x00" elif model.startswith("ini"): if model.endswith("sv"): brand = "MiracleBox" if model == "ini-5000sv": model = "Premium Twin" elif model == "ini-1000sv": model = "Premium Mini" else: model elif model.endswith("de"): brand = "Golden Interstar" if model == "ini-1000de": model = "Xpeed LX" elif model == "ini-9000de": model = "Xpeed LX3" else: model elif model.endswith("ru"): brand = "Sezam" if model == "ini-1000ru": model = "Sezam 1000-HD" elif model == "ini-5000ru": model = "Sezam 5000-HD" elif model == "ini-9000ru": model = "Sezam Marvel" else: model else: brand = "Venton" elif model == "enfinity": brand = "EVO" model = "ENfinity" elif model == "xp1000": brand = "XP-Series" elif model == "xp1000s": brand = "Octagon" model = "SF8 HD" elif model == "odinm9": brand = "Odin-Series" elif model == "odinm7": if getImageDistro() == 'axassupport': brand = "AXAS" model = "Class M" elif getBoxType() == 'odinm6': brand = "TELESTAR" model = "STARSAT LX" elif getMachineName() == 'AX-Odin': brand = "Opticum" model = "AX-Odin" else: brand = "Odin-Series" elif model == "e3hd": if getImageDistro() == 'axassupport': brand = "AXAS" model = "Class E" else: brand = "E3-Series" elif model == "ebox5000": brand = "MixOs-Series" model = "MixOs F5" elif model == "ebox5100": brand = "MixOs-Series" model = "MixOs F5mini" elif model == "ebox7358": brand = "MixOs-Series" model = "MixOs F7" elif model.startswith("ixuss"): brand = "Ixuss-Series" chipset = "BCM7405" elif fileExists("/proc/stb/info/azmodel"): brand = "AZBOX" file = open("/proc/stb/info/model") model = file.read().strip().lower() file.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif fileExists("/proc/stb/info/vumodel"): brand = "Vu Plus" file = open("/proc/stb/info/vumodel") model = file.read().strip().lower() file.close() else: file = open("/proc/stb/info/model") model = file.read().strip().lower() if model.startswith('spar'): brand = "Spark" file.close() info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset", 'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 file = open("/proc/meminfo", 'r') for line in file: parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s kB" % memFree file.close() try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime / 86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime / 3600, (uptime % 3600) / 60) except: uptimetext = "?" info['uptime'] = uptimetext info["webifver"] = getOpenWebifVer() info['imagedistro'] = getImageDistro() info['imagever'] = getImageVersion() + '.' + getImageBuild() info['enigmaver'] = getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: if hdd.free() <= 1024: free = "%i MB" % (hdd.free()) else: free = float(hdd.free()) / float(1024) free = "%.3f GB" % free info['hdd'].append({ "model": hdd.model(), "capacity": hdd.capacity(), "free": free }) return info
def getInfo(): # TODO: get webif versione somewhere! info = {} info['brand'] = getMachineBrand() info['model'] = getMachineName() info['boxtype'] = getBoxType() info['machinebuild'] = getMachineBuild() chipset = "unknown" if fileExists("/etc/.box"): f = open("/etc/.box",'r') model = f.readline().strip().lower() f.close() if model.startswith("ufs") or model.startswith("ufc"): if model in ("ufs910", "ufs922", "ufc960"): chipset = "SH4 @266MHz" else: chipset = "SH4 @450MHz" elif model in ("topf", "tf7700hdpvr"): chipset = "SH4 @266MHz" elif model.startswith("azbox"): f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif model.startswith("spark"): if model == "spark7162": chipset = "SH4 @540MHz" else: chipset = "SH4 @450MHz" elif fileExists("/proc/stb/info/azmodel"): f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif fileExists("/proc/stb/info/model"): f = open("/proc/stb/info/model",'r') model = f.readline().strip().lower() f.close() if model == "tf7700hdpvr": chipset = "SH4 @266MHz" elif model == "nbox": chipset = "STi7100 @266MHz" elif model == "arivalink200": chipset = "STi7109 @266MHz" elif model in ("adb2850", "adb2849", "dsi87"): chipset = "STi7111 @450MHz" elif model in ("sagemcom88", "esi88"): chipset = "STi7105 @450MHz" elif model.startswith("spark"): if model == "spark7162": chipset = "STi7162 @540MHz" else: chipset = "STi7111 @450MHz" if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset",'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo",'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ',1)[0]) info['mem2'] = "%s kB" % memFree try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime/86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime/3600, (uptime%3600)/60) except: uptimetext = "?" info['uptime'] = uptimetext info["webifver"] = getOpenWebifVer() info['imagedistro'] = getImageDistro() info['oever'] = getOEVersion() info['imagever'] = getImageVersion() + '.' + getImageBuild() info['enigmaver'] = getEnigmaVersionString() info['driverdate'] = getDriverDate() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "v4prefix": sum([bin(int(x)).count('1') for x in formatIp(iNetwork.getAdapterAttribute(iface, "netmask")).split('.')]), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface)['addr'], "firstpublic": getAdapterIPv6(iface)['firstpublic'] }) info['hdd'] = [] for hdd in harddiskmanager.hdd: dev = hdd.findMount() if dev: stat = os.statvfs(dev) free = int((stat.f_bfree/1024) * (stat.f_bsize/1024)) else: free = -1 if free <= 1024: free = "%i MB" % free else: free = free / 1024. free = "%.3f GB" % free size = hdd.diskSize() * 1000000 / 1048576. if size > 1048576: size = "%.2f TB" % (size / 1048576.) elif size > 1024: size = "%.1f GB" % (size / 1024.) else: size = "%d MB" % size iecsize = hdd.diskSize() # Harddisks > 1000 decimal Gigabytes are labelled in TB if iecsize > 1000000: iecsize = (iecsize + 50000) // float(100000) / 10 # Omit decimal fraction if it is 0 if (iecsize % 1 > 0): iecsize = "%.1f TB" % iecsize else: iecsize = "%d TB" % iecsize # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB elif iecsize > 300000: iecsize = "%d GB" % ((iecsize + 5000) // 10000 * 10) # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB elif iecsize > 1000: iecsize = "%d GB" % ((iecsize + 500) // 1000) else: iecsize = "%d MB" % iecsize info['hdd'].append({ "model": hdd.model(), "capacity": size, "labelled_capacity": iecsize, "free": free }) info['transcoding'] = False if (info['model'] in ("Solo4K", "Solo²", "Duo²", "Solo SE", "Quad", "Quad Plus") or info['machinebuild'] in ('inihdp', 'hd2400', 'et10000', 'xpeedlx3', 'ew7356', 'dags3', 'dags4')): if os.path.exists(eEnv.resolve('${libdir}/enigma2/python/Plugins/SystemPlugins/TransCodingSetup/plugin.pyo')) or os.path.exists(eEnv.resolve('${libdir}/enigma2/python/Plugins/SystemPlugins/TranscodingSetup/plugin.pyo')) or os.path.exists(eEnv.resolve('${libdir}/enigma2/python/Plugins/SystemPlugins/MultiTransCodingSetup/plugin.pyo')): info['transcoding'] = True info['kinopoisk'] = False lang = ['ru', 'uk', 'lv', 'lt', 'et'] for l in lang: if l in language.getLanguage(): info['kinopoisk'] = True global STATICBOXINFO STATICBOXINFO = info return info
def getInfo(): # TODO: get webif versione somewhere! info = {} info['brand'] = getMachineBrand() info['model'] = getMachineName() info['boxtype'] = getBoxType() info['machinebuild'] = getMachineBuild() chipset = "unknown" if fileExists("/etc/.box"): f = open("/etc/.box", 'r') model = f.readline().strip().lower() f.close() if model.startswith("ufs") or model.startswith("ufc"): if model in ("ufs910", "ufs922", "ufc960"): chipset = "SH4 @266MHz" else: chipset = "SH4 @450MHz" elif model in ("topf", "tf7700hdpvr"): chipset = "SH4 @266MHz" elif model.startswith("azbox"): f = open("/usr/local/e2/etc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif model.startswith("spark"): if model == "spark7162": chipset = "SH4 @540MHz" else: chipset = "SH4 @450MHz" elif fileExists("/usr/local/e2/etc/stb/info/azmodel"): f = open("/usr/local/e2/etc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" else: f = open("/usr/local/e2/etc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model in ("esi88", "sagemcom88", "nbox"): if fileExists("/proc/boxtype"): f = open("/proc/boxtype", 'r') model = f.readline().strip().lower() f.close() if model == "tf7700hdpvr": chipset = "SH4 @266MHz" elif model in ("nbox", "bska", "bsla", "bxzb", "bzzb"): chipset = "SH4 @266MHz" elif model in ("adb2850", "adb2849"): chipset = "SH4 @450MHz" elif model in ("sagemcom88", "esi88", "uhd88", "dsi87"): chipset = "SH4 @450MHz" if fileExists("/usr/local/e2/etc/stb/info/chipset"): f = open("/usr/local/e2/etc/stb/info/chipset", 'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo", 'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s kB" % memFree try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime / 86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime / 3600, (uptime % 3600) / 60) except: uptimetext = "?" info['uptime'] = uptimetext info["webifver"] = getOpenWebifVer() info['imagedistro'] = getImageDistro() info['oever'] = getOEVersion() info['imagever'] = getImageVersion() + '.' + getImageBuild() info['enigmaver'] = getEnigmaVersionString() info['driverdate'] = getDriverDate() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "v4prefix": sum([ bin(int(x)).count('1') for x in formatIp( iNetwork.getAdapterAttribute(iface, "netmask")).split('.') ]), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface)['addr'], "firstpublic": getAdapterIPv6(iface)['firstpublic'] }) info['hdd'] = [] for hdd in harddiskmanager.hdd: dev = hdd.findMount() if dev: stat = os.statvfs(dev) free = int((stat.f_bfree / 1024) * (stat.f_bsize / 1024)) else: free = -1 if free <= 1024: free = "%i MB" % free else: free = free / 1024. free = "%.3f GB" % free size = hdd.diskSize() * 1000000 / 1048576. if size > 1048576: size = "%.2f TB" % (size / 1048576.) elif size > 1024: size = "%.1f GB" % (size / 1024.) else: size = "%d MB" % size iecsize = hdd.diskSize() # Harddisks > 1000 decimal Gigabytes are labelled in TB if iecsize > 1000000: iecsize = (iecsize + 50000) // float(100000) / 10 # Omit decimal fraction if it is 0 if (iecsize % 1 > 0): iecsize = "%.1f TB" % iecsize else: iecsize = "%d TB" % iecsize # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB elif iecsize > 300000: iecsize = "%d GB" % ((iecsize + 5000) // 10000 * 10) # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB elif iecsize > 1000: iecsize = "%d GB" % ((iecsize + 500) // 1000) else: iecsize = "%d MB" % iecsize info['hdd'].append({ "model": hdd.model(), "capacity": size, "labelled_capacity": iecsize, "free": free }) global STATICBOXINFO STATICBOXINFO = info return info
def populate(self): if isVTISkin: self['EnigmaVersion'] = StaticText( _('Version') + ': ' + about.getEnigmaVersionString()) self['ImageVersion'] = StaticText( _('Image') + ': ' + about.getImageVersionString()) self['TunerHeader'] = StaticText(_('Detected NIMs:')) fp_version = getFPVersion() if fp_version is None: fp_version = '' else: fp_version = _('Frontprocessor version: %d') % fp_version self['FPVersion'] = StaticText(fp_version) nims = nimmanager.nimList() self.tuner_list = [] if len(nims) <= 4: for count in (0, 1, 2, 3, 4, 5, 6, 7): if count < len(nims): self['Tuner' + str(count)] = StaticText(nims[count]) self.tuner_list.append(nims[count] + '\n') else: self['Tuner' + str(count)] = StaticText('') else: desc_list = [] count = 0 cur_idx = -1 while count < len(nims): data = nims[count].split(':') idx = data[0].strip('Tuner').strip() desc = data[1].strip() if desc_list and desc_list[cur_idx]['desc'] == desc: desc_list[cur_idx]['end'] = idx else: desc_list.append({ 'desc': desc, 'start': idx, 'end': idx }) cur_idx += 1 count += 1 for count in (0, 1, 2, 3, 4, 5, 6, 7): if count < len(desc_list): if desc_list[count]['start'] == desc_list[count]['end']: text = 'Tuner %s: %s' % (desc_list[count]['start'], desc_list[count]['desc']) else: text = 'Tuner %s-%s: %s' % (desc_list[count]['start'], desc_list[count]['end'], desc_list[count]['desc']) else: text = '' self['Tuner' + str(count)] = StaticText(text) if text != '': self.tuner_list.append(text + '\n') self['HDDHeader'] = StaticText(_('Detected HDD:')) hddlist = harddiskmanager.HDDList() hdd = hddlist and hddlist[0][1] or None if hdd is not None and hdd.model() != '': self['hddA'] = StaticText( _('%s\n(%s, %d MB free)') % (hdd.model(), hdd.capacity(), hdd.free())) else: self['hddA'] = StaticText(_('none')) self.enigma2_version = _( 'Version') + ': ' + about.getEnigmaVersionString() self.image_version = _( 'EGAMI ') + ': ' + about.getImageVersionString() cpu_info = parseLines('/proc/cpuinfo') cpu_name = 'N/A' for line in cpu_info: if line.find('model') != -1: cpu_name = line.split(':') if len(cpu_name) >= 2: cpu_name = cpu_name[1].strip() break self.cpu = _('CPU') + ': ' + cpu_name self.chipset = _('Chipset') + ': ' + parseFile( '/proc/stb/info/chipset') self.tuner_header = _('Detected NIMs:') self.hdd_header = _('Detected HDD:') self.hdd_list = [] if len(hddlist): for hddX in hddlist: hdd = hddX[1] if hdd.model() != '': self.hdd_list.append( hdd.model() + '\n %.2f GB - %.2f GB' % (hdd.diskSize() / 1000.0, hdd.free() / 1000.0) + ' ' + _('free') + '\n\n') ifaces = iNetwork.getConfiguredAdapters() iface_list = [] for iface in ifaces: iface_list.append( _('Interface') + ' : ' + iNetwork.getAdapterName(iface) + ' (' + iNetwork.getFriendlyAdapterName(iface) + ')\n') iface_list.append( _('IP') + ' : ' + parse_ipv4(iNetwork.getAdapterAttribute(iface, 'ip')) + '\n') iface_list.append( _('Netmask') + ' : ' + parse_ipv4( iNetwork.getAdapterAttribute(iface, 'netmask')) + '\n') iface_list.append( _('Gateway') + ' : ' + parse_ipv4( iNetwork.getAdapterAttribute(iface, 'gateway')) + '\n') if iNetwork.getAdapterAttribute(iface, 'dhcp'): iface_list.append(_('DHCP') + ' : ' + _('Yes') + '\n') else: iface_list.append(_('DHCP') + ' : ' + _('No') + '\n') iface_list.append( _('MAC') + ' : ' + iNetwork.getAdapterAttribute(iface, 'mac') + '\n') iface_list.append('\n') my_txt = self.enigma2_version + '\n' my_txt += self.image_version + '\n' my_txt += '\n' my_txt += self.cpu + '\n' my_txt += self.chipset + '\n' my_txt += '\n' my_txt += self.tuner_header + '\n' for x in self.tuner_list: my_txt += ' ' + x my_txt += '\n' my_txt += _('Network') + ':\n' for x in iface_list: my_txt += ' ' + x my_txt += self.hdd_header + '\n' for x in self.hdd_list: my_txt += ' ' + x my_txt += '\n' self['FullAbout'] = ScrollLabel(my_txt) else: EGAMIVersion = _('EGAMI %s') % about.getImageVersionString() self['lab1'] = Label(EGAMIVersion) model = None AboutText = getAboutText()[0] self['AboutScrollLabel'] = ScrollLabel(AboutText) return
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/etc/.box"): brand = "HDMU" f = open("/etc/.box", 'r') model = f.readline().strip().lower() if model.startswith("et"): brand = "Xtrend" elif model.startswith("vu"): brand = "VuPlus" elif model.startswith("gb"): brand = "GigaBlue" elif model.startswith("ufs") or model.startswith("ufc"): brand = "Kathrein" if model in ("ufs910", "ufs922", "ufc960"): chipset = "SH4 @266MHz" else: chipset = "SH4 @450MHz" elif model.startswith("xpeed"): brand = "GoldenInterstar" elif model.startswith("topf"): brand = "Topfield" chipset = "SH4 @266MHz" elif model.startswith("azbox"): brand = "AZBox" f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif model.startswith("spark"): brand = "Fulan" chipset = "SH4 @450MHz" elif fileExists("/proc/stb/info/boxtype"): brand = "Xtrend" f = open("/proc/stb/info/boxtype", 'r') model = f.readline().strip().lower() if model.startswith("et"): brand = "Xtrend" elif model.startswith("ini"): if model.endswith("sv"): brand = "MiracleBox" elif model.endswith("ru"): brand = "Sezam" else: brand = "Venton" elif model.startswith("xp"): brand = "MaxDigital" elif model.startswith("ixuss"): brand = "Medialink" model = model.replace(" ", "") f.close() elif fileExists("/proc/stb/info/vumodel"): brand = "VuPlus" f = open("/proc/stb/info/vumodel", 'r') model = f.readline().strip().lower() f.close() elif fileExists("/proc/stb/info/azmodel"): brand = "AZBox" f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" else: f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "tf7700hdpvr": brand = "Topfield" model = "TF 7700 HDPVR" chipset = "SH4 @266MHz" elif model == "nbox": brand = "Advanced Digital Broadcast" chipset = "SH4 @266MHz" elif model in ("adb2850", "adb2849"): brand = "Advanced Digital Broadcast" chipset = "SH4 @450MHz" elif model in ("esi88", "uhd88", "dsi87"): brand = "SagemCom" chipset = "SH4 @450MHz" info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset", 'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo", 'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s kB" % memFree try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime / 86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime / 3600, (uptime % 3600) / 60) except: uptimetext = "?" info['uptime'] = uptimetext if fileExists("/etc/bhversion"): f = open("/etc/bhversion", 'r') imagever = f.readline().strip() f.close() elif fileExists("/etc/vtiversion.info"): f = open("/etc/vtiversion.info", 'r') imagever = f.readline().strip() f.close() else: imagever = about.getImageVersionString() info["webifver"] = getOpenWebifVer() info['imagever'] = imagever info['enigmaver'] = about.getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: if hdd.free() <= 1024: free = "%i MB" % (hdd.free()) else: free = float(hdd.free()) / float(1024) free = "%.3f GB" % free info['hdd'].append({ "model": hdd.model(), "capacity": hdd.capacity(), "free": free }) return info
def getInfo(session=None, need_fullinfo=False): # TODO: get webif versione somewhere! info = {} global STATICBOXINFO if not (STATICBOXINFO is None or need_fullinfo): return STATICBOXINFO info['brand'] = getBoxBrand() info['model'] = getBoxType() info['platform'] = boxbranding.getMachineBuild() try: info['procmodel'] = getBoxProc() except: # noqa: E722 info['procmodel'] = boxbranding.getMachineProcModel() try: info['procmodeltype'] = getBoxProcType() except: # noqa: E722 info['procmodeltype'] = None try: info['lcd'] = getLcd() except: # noqa: E722 info['lcd'] = 0 try: info['grabpip'] = getGrabPip() except: # noqa: E722 info['grabpip'] = 0 cpu = about.getCPUInfoString() info['chipset'] = cpu info['cpubrand'] = about.getCPUBrand() info['socfamily'] = boxbranding.getSoCFamily() info['cpuarch'] = about.getCPUArch() if config.OpenWebif.about_benchmark.value is True: info['cpubenchmark'] = about.getCPUBenchmark() else: info['cpubenchmark'] = _("Disabled in configuration") info['flashtype'] = about.getFlashType() memFree = 0 for line in open("/proc/meminfo", 'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip().replace("kB", _("kB")) elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s %s" % (memFree, _("kB")) info['mem3'] = _("%s free / %s total") % (info['mem2'], info['mem1']) info['uptime'] = about.getBoxUptime() info["webifver"] = OPENWEBIFVER info['imagedistro'] = boxbranding.getImageDistro() info['oever'] = boxbranding.getImageBuild() info['visionversion'] = boxbranding.getVisionVersion() info['visionrevision'] = boxbranding.getVisionRevision() info['visionmodule'] = about.getVisionModule() if fileExists("/etc/openvision/multiboot"): multibootflag = open("/etc/openvision/multiboot", "r").read().strip() if multibootflag == "1": info['multiboot'] = _("Yes") else: info['multiboot'] = _("No") else: info['multiboot'] = _("Yes") info['enigmaver'] = getEnigmaVersionString() info['driverdate'] = about.getDriverInstalledDate() info['kernelver'] = boxbranding.getKernelVersion() info['dvbapitype'] = about.getDVBAPI() info['gstreamerversion'] = about.getGStreamerVersionString(cpu) info['ffmpegversion'] = about.getFFmpegVersionString() info['pythonversion'] = about.getPythonVersionString() try: info['hwserial'] = getHWSerial() except: # noqa: E722 info['hwserial'] = None if (info['hwserial'] is None or info['hwserial'] == "unknown"): info['hwserial'] = about.getCPUSerial() try: info['boxrctype'] = getBoxRCType() except: # noqa: E722 info['boxrctype'] = None if (info['boxrctype'] is None or info['boxrctype'] == "unknown"): if fileExists("/usr/bin/remotecfg"): info['boxrctype'] = _("Amlogic remote") elif fileExists("/usr/sbin/lircd"): info['boxrctype'] = _("LIRC remote") info['ovrctype'] = boxbranding.getRCType() info['ovrcname'] = boxbranding.getRCName() info['ovrcidnum'] = boxbranding.getRCIDNum() info['transcoding'] = boxbranding.getHaveTranscoding() info['multitranscoding'] = boxbranding.getHaveMultiTranscoding() info['displaytype'] = boxbranding.getDisplayType() info['updatedatestring'] = about.getUpdateDateString() info['enigmadebuglvl'] = eGetEnigmaDebugLvl() info['imagearch'] = boxbranding.getImageArch() info['imagefolder'] = boxbranding.getImageFolder() info['imagefilesystem'] = boxbranding.getImageFileSystem() info['feedsurl'] = boxbranding.getFeedsUrl() info['developername'] = boxbranding.getDeveloperName() info['builddatestring'] = about.getBuildDateString() info['imagefpu'] = boxbranding.getImageFPU() info['havemultilib'] = boxbranding.getHaveMultiLib() try: info['fp_version'] = getFPVersion() except: # noqa: E722 info['fp_version'] = None info['tuners'] = [] for i in list(range(0, nimmanager.getSlotCount())): print( "[OpenWebif] -D- tuner '%d' '%s' '%s'" % (i, nimmanager.getNimName(i), nimmanager.getNim(i).getSlotName())) info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")", "rec": "", "live": "" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "friendlynic": getFriendlyNICChipSet(iface), "linkspeed": getLinkSpeed(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ipv4method": getIPv4Method(iface), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "v4prefix": sum([ bin(int(x)).count('1') for x in formatIp( iNetwork.getAdapterAttribute(iface, "netmask")).split('.') ]), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface)['addr'], "ipmethod": getIPMethod(iface), "firstpublic": getAdapterIPv6(iface)['firstpublic'] }) info['hdd'] = [] for hdd in harddiskmanager.hdd: dev = hdd.findMount() if dev: stat = os.statvfs(dev) free = stat.f_bavail * stat.f_frsize / 1048576. else: free = -1 if free <= 1024: free = "%i %s" % (free, _("MB")) else: free = free / 1024. free = "%.1f %s" % (free, _("GB")) size = hdd.diskSize() * 1000000 / 1048576. if size > 1048576: size = "%.1f %s" % ((size / 1048576.), _("TB")) elif size > 1024: size = "%.1f %s" % ((size / 1024.), _("GB")) else: size = "%d %s" % (size, _("MB")) iecsize = hdd.diskSize() # Harddisks > 1000 decimal Gigabytes are labelled in TB if iecsize > 1000000: iecsize = (iecsize + 50000) // float(100000) / 10 # Omit decimal fraction if it is 0 if (iecsize % 1 > 0): iecsize = "%.1f %s" % (iecsize, _("TB")) else: iecsize = "%d %s" % (iecsize, _("TB")) # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB elif iecsize > 300000: iecsize = "%d %s" % (((iecsize + 5000) // 10000 * 10), _("GB")) # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB elif iecsize > 1000: iecsize = "%d %s" % (((iecsize + 500) // 1000), _("GB")) else: iecsize = "%d %s" % (iecsize, _("MB")) info['hdd'].append({ "model": hdd.model(), "capacity": size, "labelled_capacity": iecsize, "free": free, "mount": dev, "friendlycapacity": _("%s free / %s total") % (free, size + ' ("' + iecsize + '")') }) info['shares'] = [] autofiles = ('/etc/auto.network', '/etc/auto.network_vti') for autofs in autofiles: if fileExists(autofs): method = "autofs" for line in open(autofs).readlines(): if not line.startswith('#'): # Replace escaped spaces that can appear inside credentials with underscores # Not elegant but we wouldn't want to expose credentials on the OWIF anyways tmpline = line.replace("\ ", "_") tmp = tmpline.split() if not len(tmp) == 3: continue name = tmp[0].strip() type = "unknown" if "cifs" in tmp[1]: # Linux still defaults to SMBv1 type = "SMBv1.0" settings = tmp[1].split(",") for setting in settings: if setting.startswith("vers="): type = setting.replace("vers=", "SMBv") elif "nfs" in tmp[1]: type = "NFS" # Default is r/w mode = _("r/w") settings = tmp[1].split(",") for setting in settings: if setting == "ro": mode = _("r/o") uri = tmp[2] parts = [] parts = tmp[2].split(':') if parts[0] == "": server = uri.split('/')[2] uri = uri.strip()[1:] else: server = parts[0] ipaddress = None if server: # Will fail on literal IPs try: # Try IPv6 first, as will Linux if has_ipv6: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET6) if tmpaddress: ipaddress = "[" + list( tmpaddress)[0][4][0] + "]" # Use IPv4 if IPv6 fails or is not present if ipaddress is None: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET) if tmpaddress: ipaddress = list(tmpaddress)[0][4][0] except: # noqa: E722 pass friendlyaddress = server if ipaddress is not None and not ipaddress == server: friendlyaddress = server + " (" + ipaddress + ")" info['shares'].append({ "name": name, "method": method, "type": type, "mode": mode, "path": uri, "host": server, "ipaddress": ipaddress, "friendlyaddress": friendlyaddress }) # TODO: fstab info['EX'] = '' if session: try: # gets all current stream clients for images using eStreamServer # TODO: merge eStreamServer and streamList # TODO: get tuner info for streams # TODO: get recoding/timer info if more than one info['streams'] = [] try: from enigma import eStreamServer streamServer = eStreamServer.getInstance() if streamServer is not None: for x in streamServer.getConnectedClients(): servicename = ServiceReference( x[1]).getServiceName() or "(unknown service)" if int(x[2]) == 0: strtype = "S" else: strtype = "T" info['streams'].append({ "ref": x[1], "name": servicename, "ip": x[0], "type": strtype }) except Exception as error: print("[OpenWebif] -D- no eStreamServer %s" % error) recs = NavigationInstance.instance.getRecordings() if recs: # only one stream and only TV from Plugins.Extensions.OpenWebif.controllers.stream import streamList s_name = '' # s_cip = '' print("[OpenWebif] -D- streamList count '%d'" % len(streamList)) if len(streamList) == 1: from Screens.ChannelSelection import service_types_tv # from enigma import eEPGCache # epgcache = eEPGCache.getInstance() serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list( eServiceReference('%s ORDER BY name' % (service_types_tv))) channels = services and services.getContent("SN", True) s = streamList[0] srefs = s.ref.toString() for channel in channels: if srefs == channel[0]: s_name = channel[1] + ' (' + s.clientIP + ')' break print("[OpenWebif] -D- s_name '%s'" % s_name) # only for debug for stream in streamList: srefs = stream.ref.toString() print("[OpenWebif] -D- srefs '%s'" % srefs) sname = '' timers = [] for timer in NavigationInstance.instance.RecordTimer.timer_list: if timer.isRunning() and not timer.justplay: timers.append( removeBad(timer.service_ref.getServiceName())) print("[OpenWebif] -D- timer '%s'" % timer.service_ref.getServiceName()) # TODO: more than one recording if len(timers) == 1: sname = timers[0] if sname == '' and s_name != '': sname = s_name print("[OpenWebif] -D- recs count '%d'" % len(recs)) for rec in recs: feinfo = rec.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['rec'] = getOrbitalText( cur_info) + ' / ' + sname service = session.nav.getCurrentService() if service is not None: sname = service.info().getName() feinfo = service.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['live'] = getOrbitalText( cur_info) + ' / ' + sname except Exception as error: info['EX'] = error info['timerpipzap'] = False info['timerautoadjust'] = False try: timer = RecordTimerEntry('', 0, 0, '', '', 0) if hasattr(timer, "pipzap"): info['timerpipzap'] = True if hasattr(timer, "autoadjust"): info['timerautoadjust'] = True except Exception as error: print("[OpenWebif] -D- RecordTimerEntry check %s" % error) STATICBOXINFO = info return info
def prepareMainTemplate(self, request): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['remotegrabscreenshot'] = getRemoteGrabScreenshot( )['remotegrabscreenshot'] ret['configsections'] = getConfigsSections()['sections'] ret['showname'] = getShowName()['showname'] ret['customname'] = getCustomName()['customname'] ret['boxname'] = getBoxName()['boxname'] if not ret['boxname'] or not ret['customname']: ret['boxname'] = getInfo()['brand'] + " " + getInfo()['model'] ret['box'] = getBoxType() ret["remote"] = remote from Components.config import config if hasattr(eEPGCache, 'FULL_DESCRIPTION_SEARCH'): ret['epgsearchcaps'] = True else: ret['epgsearchcaps'] = False if config.OpenWebif.webcache.epg_desc_search.value: config.OpenWebif.webcache.epg_desc_search.value = False config.OpenWebif.webcache.epg_desc_search.save() ret['epgsearchtype'] = getEPGSearchType()['epgsearchtype'] extras = [] extras.append({'key': 'ajax/settings', 'description': _("Settings")}) from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute( ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) if fileExists( resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists( resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): try: lcd4linux_port = "http://" + ip + ":" + str( config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup"), 'nw': '1' }) self.oscamconf = self.oscamconfPath() if self.oscamconf is not None: data = open(self.oscamconf, "r").readlines() proto = "http" port = None for i in data: if "httpport" in i.lower(): port = i.split("=")[1].strip() if port[0] == '+': proto = "https" port = port[1:] if port is not None: url = "%s://%s:%s" % (proto, request.getRequestHostname(), port) extras.append({ 'key': url, 'description': _("OSCam Webinterface"), 'nw': '1' }) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer extras.append({'key': 'ajax/at', 'description': _('AutoTimer')}) except ImportError: pass if fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.tmpl")): extras.append({ 'key': 'ajax/bqe', 'description': _('BouquetEditor') }) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh extras.append({'key': 'ajax/epgr', 'description': _('EPGRefresh')}) except ImportError: pass ret['extras'] = extras if config.OpenWebif.webcache.theme.value: ret['theme'] = config.OpenWebif.webcache.theme.value else: ret['theme'] = 'original' return ret
def getInfo(session=None, need_fullinfo=False): # TODO: get webif versione somewhere! info = {} global STATICBOXINFO if not (STATICBOXINFO is None or need_fullinfo): return STATICBOXINFO info['brand'] = getMachineBrand() info['model'] = getMachineName() info['boxtype'] = getBoxType() info['machinebuild'] = getMachineBuild() chipset = "unknown" if fileExists("/etc/.box"): f = open("/etc/.box", 'r') model = f.readline().strip().lower() f.close() if model.startswith("ufs") or model.startswith("ufc"): if model in ("ufs910", "ufs922", "ufc960"): chipset = "SH4 @266MHz" else: chipset = "SH4 @450MHz" elif model in ("topf", "tf7700hdpvr"): chipset = "SH4 @266MHz" elif model.startswith("azbox"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif model.startswith("spark"): if model == "spark7162": chipset = "SH4 @540MHz" else: chipset = "SH4 @450MHz" elif fileExists("/proc/stb/info/azmodel"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif fileExists("/proc/stb/info/model"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "tf7700hdpvr": chipset = "SH4 @266MHz" elif model == "nbox": chipset = "STi7100 @266MHz" elif model == "arivalink200": chipset = "STi7109 @266MHz" elif model in ("adb2850", "adb2849", "dsi87"): chipset = "STi7111 @450MHz" elif model in ("sagemcom88", "esi88"): chipset = "STi7105 @450MHz" elif model.startswith("spark"): if model == "spark7162": chipset = "STi7162 @540MHz" else: chipset = "STi7111 @450MHz" elif model == "dm800": chipset = "bcm7401" elif model == "dm800se": chipset = "bcm7405" elif model == "dm500hd": chipset = "bcm7405" elif model == "dm7020hd": chipset = "bcm7405" elif model == "dm8000": chipset = "bcm7400" elif model == "dm820": chipset = "bcm7435" elif model == "dm7080": chipset = "bcm7435" elif model == "dm520": chipset = "bcm73625" elif model == "dm525": chipset = "bcm73625" elif model == "dm900": chipset = "bcm7252S" elif model == "dm920": chipset = "bcm7252S" if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset", 'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo", 'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip().replace("kB", _("kB")) elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s %s" % (memFree, _("kB")) info['mem3'] = _("%s free / %s total") % (info['mem2'], info['mem1']) try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime / 86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime / 3600, (uptime % 3600) / 60) except: # noqa: E722 uptimetext = "?" info['uptime'] = uptimetext info["webifver"] = OPENWEBIFVER info['imagedistro'] = getImageDistro() info['friendlyimagedistro'] = getFriendlyImageDistro() info['oever'] = getOEVersion() info['imagever'] = getImageVersion() ib = getImageBuild() if ib: info['imagever'] = info['imagever'] + "." + ib info['enigmaver'] = getEnigmaVersionString() info['driverdate'] = getDriverDate() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion try: info['fp_version'] = getFPVersion() except: # noqa: E722 info['fp_version'] = None friendlychipsetdescription = _("Chipset") friendlychipsettext = info['chipset'].replace("bcm", "Broadcom ") if friendlychipsettext in ("7335", "7356", "7362", "73625", "7424", "7425", "7429"): friendlychipsettext = "Broadcom " + friendlychipsettext if not (info['fp_version'] is None or info['fp_version'] == 0): friendlychipsetdescription = friendlychipsetdescription + " (" + _("Frontprocessor Version") + ")" friendlychipsettext = friendlychipsettext + " (" + str(info['fp_version']) + ")" info['friendlychipsetdescription'] = friendlychipsetdescription info['friendlychipsettext'] = friendlychipsettext info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): print "[OpenWebif] -D- tuner '%d' '%s' '%s'" % (i, nimmanager.getNimName(i), nimmanager.getNim(i).getSlotName()) info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")", "rec": "", "live": "" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "friendlynic": getFriendlyNICChipSet(iface), "linkspeed": getLinkSpeed(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ipv4method": getIPv4Method(iface), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "v4prefix": sum([bin(int(x)).count('1') for x in formatIp(iNetwork.getAdapterAttribute(iface, "netmask")).split('.')]), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface)['addr'], "ipmethod": getIPMethod(iface), "firstpublic": getAdapterIPv6(iface)['firstpublic'] }) info['hdd'] = [] for hdd in harddiskmanager.hdd: dev = hdd.findMount() if dev: stat = os.statvfs(dev) free = stat.f_bavail * stat.f_frsize / 1048576. else: free = -1 if free <= 1024: free = "%i %s" % (free, _("MB")) else: free = free / 1024. free = "%.1f %s" % (free, _("GB")) size = hdd.diskSize() * 1000000 / 1048576. if size > 1048576: size = "%.1f %s" % ((size / 1048576.), _("TB")) elif size > 1024: size = "%.1f %s" % ((size / 1024.), _("GB")) else: size = "%d %s" % (size, _("MB")) iecsize = hdd.diskSize() # Harddisks > 1000 decimal Gigabytes are labelled in TB if iecsize > 1000000: iecsize = (iecsize + 50000) // float(100000) / 10 # Omit decimal fraction if it is 0 if (iecsize % 1 > 0): iecsize = "%.1f %s" % (iecsize, _("TB")) else: iecsize = "%d %s" % (iecsize, _("TB")) # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB elif iecsize > 300000: iecsize = "%d %s" % (((iecsize + 5000) // 10000 * 10), _("GB")) # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB elif iecsize > 1000: iecsize = "%d %s" % (((iecsize + 500) // 1000), _("GB")) else: iecsize = "%d %s" % (iecsize, _("MB")) info['hdd'].append({ "model": hdd.model(), "capacity": size, "labelled_capacity": iecsize, "free": free, "mount": dev, "friendlycapacity": _("%s free / %s total") % (free, size + ' ("' + iecsize + '")') }) info['shares'] = [] autofiles = ('/etc/auto.network', '/etc/auto.network_vti') for autofs in autofiles: if fileExists(autofs): method = "autofs" for line in file(autofs).readlines(): if not line.startswith('#'): # Replace escaped spaces that can appear inside credentials with underscores # Not elegant but we wouldn't want to expose credentials on the OWIF anyways tmpline = line.replace("\ ", "_") tmp = tmpline.split() if not len(tmp) == 3: continue name = tmp[0].strip() type = "unknown" if "cifs" in tmp[1]: # Linux still defaults to SMBv1 type = "SMBv1.0" settings = tmp[1].split(",") for setting in settings: if setting.startswith("vers="): type = setting.replace("vers=", "SMBv") elif "nfs" in tmp[1]: type = "NFS" # Default is r/w mode = _("r/w") settings = tmp[1].split(",") for setting in settings: if setting == "ro": mode = _("r/o") uri = tmp[2] parts = [] parts = tmp[2].split(':') if parts[0] is "": server = uri.split('/')[2] uri = uri.strip()[1:] else: server = parts[0] ipaddress = None if server: # Will fail on literal IPs try: # Try IPv6 first, as will Linux if has_ipv6: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET6) if tmpaddress: ipaddress = "[" + list(tmpaddress)[0][4][0] + "]" # Use IPv4 if IPv6 fails or is not present if ipaddress is None: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET) if tmpaddress: ipaddress = list(tmpaddress)[0][4][0] except: # noqa: E722 pass friendlyaddress = server if ipaddress is not None and not ipaddress == server: friendlyaddress = server + " (" + ipaddress + ")" info['shares'].append({ "name": name, "method": method, "type": type, "mode": mode, "path": uri, "host": server, "ipaddress": ipaddress, "friendlyaddress": friendlyaddress }) # TODO: fstab info['transcoding'] = TRANSCODING info['kinopoisk'] = KINOPOISK info['EX'] = '' if session: try: recs = NavigationInstance.instance.getRecordings() if recs: # only one stream and only TV from Plugins.Extensions.OpenWebif.controllers.stream import streamList s_name = '' # s_cip = '' print "[OpenWebif] -D- streamList count '%d'" % len(streamList) if len(streamList) == 1: from Screens.ChannelSelection import service_types_tv # from enigma import eEPGCache # epgcache = eEPGCache.getInstance() serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list(eServiceReference('%s ORDER BY name' % (service_types_tv))) channels = services and services.getContent("SN", True) s = streamList[0] srefs = s.ref.toString() for channel in channels: if srefs == channel[0]: s_name = channel[1] + ' (' + s.clientIP + ')' break print "[OpenWebif] -D- s_name '%s'" % s_name for stream in streamList: srefs = stream.ref.toString() print "[OpenWebif] -D- srefs '%s'" % srefs sname = '' timers = [] for timer in NavigationInstance.instance.RecordTimer.timer_list: if timer.isRunning() and not timer.justplay: timers.append(timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')) print "[OpenWebif] -D- timer '%s'" % timer.service_ref.getServiceName() # only one recording if len(timers) == 1: sname = timers[0] if sname == '' and s_name != '': sname = s_name print "[OpenWebif] -D- recs count '%d'" % len(recs) for rec in recs: feinfo = rec.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['rec'] = getOrbitalText(cur_info) + ' / ' + sname service = session.nav.getCurrentService() if service is not None: sname = service.info().getName() feinfo = service.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['live'] = getOrbitalText(cur_info) + ' / ' + sname except Exception, error: info['EX'] = error
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/proc/stb/info/boxtype"): brand = "Clarke-Xtrend" f = open("/proc/stb/info/boxtype",'r') model = f.readline().strip() if model == "ini-3000" or model == "ini-5000" or model == "ini-7000": brand = "INI-Series" f.close() elif fileExists("/proc/stb/info/vumodel"): brand = "Vuplus" f = open("/proc/stb/info/vumodel",'r') model = f.readline().strip() f.close() elif fileExists("/proc/stb/info/azmodel"): brand = "AZBOX" f = open("/proc/stb/info/model",'r') model = f.readline().strip() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" else: f = open("/proc/stb/info/model",'r') model = f.readline().strip() f.close() info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset",'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo",'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip() elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ',1)[0]) info['mem2'] = "%s kB" % memFree try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime/86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime/3600, (uptime%3600)/60) except: uptimetext = "?" info['uptime'] = uptimetext if fileExists("/etc/bhversion"): f = open("/etc/bhversion",'r') imagever = f.readline().strip() f.close() elif fileExists("/etc/vtiversion.info"): f = open("/etc/vtiversion.info",'r') imagever = f.readline().strip() f.close() else: imagever = about.getImageVersionString() info["webifver"] = getOpenWebifVer() info['imagever'] = imagever info['enigmaver'] = about.getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: if hdd.free() <= 1024: free = "%i MB" % (hdd.free()) else: free = float(hdd.free()) / float(1024) free = "%.3f GB" % free info['hdd'].append({ "model": hdd.model(), "capacity": hdd.capacity(), "free": free }) return info
def prepareMainTemplate(self): from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute(ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) ret = getCollapsedMenus() ret['remotegrabscreenshot'] = getRemoteGrabScreenshot()['remotegrabscreenshot'] ret['configsections'] = getConfigsSections()['sections'] ret['zapstream'] = getZapStream()['zapstream'] ret['showname'] = getShowName()['showname'] ret['customname'] = getCustomName()['customname'] ret['boxname'] = getBoxName()['boxname'] if not ret['boxname'] or not ret['customname']: ret['boxname'] = getInfo()['brand']+" "+getInfo()['model'] ret['box'] = getBoxType() ret["remote"] = remote from Components.config import config if hasattr(eEPGCache, 'FULL_DESCRIPTION_SEARCH'): ret['epgsearchcaps'] = True else: ret['epgsearchcaps'] = False if config.ModernWebif.webcache.epg_desc_search.value: config.ModernWebif.webcache.epg_desc_search.value = False config.ModernWebif.webcache.epg_desc_search.save() ret['epgsearchtype'] = getEPGSearchType()['epgsearchtype'] extras = [] extras.append({ 'key': 'ajax/settings','description': _("Settings")}) if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): try: lcd4linux_port = "http://" + ip + ":" + str(config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup")}) if fileExists("/usr/keys/oscam_atv/oscam.conf"): oscam_atv_config = ConfigParser.ConfigParser() oscam_atv_config.readfp(open('/usr/keys/oscam_atv/oscam.conf')) oscam_port = oscam_atv_config.get("webif","httpport"); oscam_link = "http://" + ip + ":" + oscam_port + "/" extras.append({ 'key': oscam_link, 'description': _("OSCam Webinterface")}) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer extras.append({ 'key': 'ajax/at','description': _('AutoTimer')}) except ImportError: pass if fileExists(resolveFilename(SCOPE_PLUGINS, "Extensions/ModernWebif/controllers/views/ajax/bqe.tmpl")): extras.append({ 'key': 'ajax/bqe','description': _('BouquetEditor')}) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh extras.append({ 'key': 'ajax/epgr','description': _('EPGRefresh')}) except ImportError: pass ret['extras'] = extras return ret
def prepareMainTemplate(self, request): # here will be generated the dictionary for the main template ret = getCollapsedMenus() ret['configsections'] = getConfigsSections()['sections'] ret['showname'] = getShowName()['showname'] ret['customname'] = getCustomName()['customname'] ret['boxname'] = getBoxName()['boxname'] if not ret['boxname'] or not ret['customname']: ret['boxname'] = getInfo()['brand'] + " " + getInfo()['model'] ret['box'] = getBoxType() ret["remote"] = remote from Components.config import config if hasattr(eEPGCache, 'FULL_DESCRIPTION_SEARCH'): ret['epgsearchcaps'] = True else: ret['epgsearchcaps'] = False extras = [] extras.append({'key': 'ajax/settings', 'description': _("Settings")}) from Components.Network import iNetwork ifaces = iNetwork.getConfiguredAdapters() if len(ifaces): ip_list = iNetwork.getAdapterAttribute( ifaces[0], "ip") # use only the first configured interface ip = "%d.%d.%d.%d" % (ip_list[0], ip_list[1], ip_list[2], ip_list[3]) if fileExists( resolveFilename(SCOPE_PLUGINS, "Extensions/LCD4linux/WebSite.pyo")): lcd4linux_key = "lcd4linux/config" if fileExists( resolveFilename(SCOPE_PLUGINS, "Extensions/WebInterface/plugin.pyo")): try: lcd4linux_port = "http://" + ip + ":" + str( config.plugins.Webinterface.http.port.value) + "/" lcd4linux_key = lcd4linux_port + 'lcd4linux/config' except KeyError: lcd4linux_key = None if lcd4linux_key: extras.append({ 'key': lcd4linux_key, 'description': _("LCD4Linux Setup"), 'nw': '1' }) self.oscamconf = self.oscamconfPath() if self.oscamconf is not None: data = open(self.oscamconf, "r").readlines() proto = "http" port = None for i in data: if "httpport" in i.lower(): port = i.split("=")[1].strip() if port[0] == '+': proto = "https" port = port[1:] if port is not None: url = "%s://%s:%s" % (proto, request.getRequestHostname(), port) extras.append({ 'key': url, 'description': _("OSCam Webinterface"), 'nw': '1' }) try: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer extras.append({'key': 'ajax/at', 'description': _('AutoTimer')}) except ImportError: pass if fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/bqe.tmpl")): extras.append({ 'key': 'ajax/bqe', 'description': _('BouquetEditor') }) try: from Plugins.Extensions.EPGRefresh.EPGRefresh import epgrefresh extras.append({'key': 'ajax/epgr', 'description': _('EPGRefresh')}) except ImportError: pass try: # this will currenly only works if NO Webiterface plugin installed # TODO: test if webinterface AND openwebif installed from Plugins.Extensions.WebInterface.WebChilds.Toplevel import loaded_plugins for plugins in loaded_plugins: if plugins[0] in ["fancontrol", "iptvplayer"]: try: extras.append({ 'key': plugins[0], 'description': plugins[2], 'nw': '2' }) except KeyError: pass except ImportError: pass if os.path.exists('/usr/bin/shellinaboxd') and (fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/terminal.tmpl" ) ) or fileExists( resolveFilename( SCOPE_PLUGINS, "Extensions/OpenWebif/controllers/views/ajax/terminal.pyo") )): extras.append({ 'key': 'ajax/terminal', 'description': _('Terminal') }) ret['extras'] = extras theme = 'original' if config.OpenWebif.webcache.theme.value: theme = config.OpenWebif.webcache.theme.value if not os.path.exists(getPublicPath('themes')): if not (theme == 'original' or theme == 'clear'): theme = 'original' config.OpenWebif.webcache.theme.value = theme config.OpenWebif.webcache.theme.save() ret['theme'] = theme ret['webtv'] = os.path.exists(getPublicPath('webtv')) return ret
def getLocalIPAddress(self): for iface in iNetwork.getConfiguredAdapters(): return self.formatIp(iNetwork.getAdapterAttribute(iface, "ip")) return "127.0.0.1"
def getInfo(session=None, need_fullinfo=False): # TODO: get webif versione somewhere! info = {} global STATICBOXINFO if not (STATICBOXINFO is None or need_fullinfo): return STATICBOXINFO info['brand'] = getMachineBrand() info['model'] = getMachineName() info['boxtype'] = getBoxType() info['machinebuild'] = getMachineBuild() chipset = "unknown" if fileExists("/etc/.box"): f = open("/etc/.box", 'r') model = f.readline().strip().lower() f.close() if model.startswith("ufs") or model.startswith("ufc"): if model in ("ufs910", "ufs922", "ufc960"): chipset = "SH4 @266MHz" else: chipset = "SH4 @450MHz" elif model in ("topf", "tf7700hdpvr"): chipset = "SH4 @266MHz" elif model.startswith("azbox"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif model.startswith("spark"): if model == "spark7162": chipset = "SH4 @540MHz" else: chipset = "SH4 @450MHz" elif fileExists("/proc/stb/info/azmodel"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "me": chipset = "SIGMA 8655" elif model == "minime": chipset = "SIGMA 8653" else: chipset = "SIGMA 8634" elif fileExists("/proc/stb/info/model"): f = open("/proc/stb/info/model", 'r') model = f.readline().strip().lower() f.close() if model == "tf7700hdpvr": chipset = "SH4 @266MHz" elif model == "nbox": chipset = "STi7100 @266MHz" elif model == "arivalink200": chipset = "STi7109 @266MHz" elif model in ("adb2850", "adb2849", "dsi87"): chipset = "STi7111 @450MHz" elif model in ("sagemcom88", "esi88"): chipset = "STi7105 @450MHz" elif model.startswith("spark"): if model == "spark7162": chipset = "STi7162 @540MHz" else: chipset = "STi7111 @450MHz" if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset", 'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset memFree = 0 for line in open("/proc/meminfo", 'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip().replace("kB", _("kB")) elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s %s" % (memFree, _("kB")) info['mem3'] = _("%s free / %s total") % (info['mem2'], info['mem1']) try: f = open("/proc/uptime", "rb") uptime = int(float(f.readline().split(' ', 2)[0].strip())) f.close() uptimetext = '' if uptime > 86400: d = uptime / 86400 uptime = uptime % 86400 uptimetext += '%dd ' % d uptimetext += "%d:%.2d" % (uptime / 3600, (uptime % 3600) / 60) except: uptimetext = "?" info['uptime'] = uptimetext info["webifver"] = getOpenWebifVer() info['imagedistro'] = getImageDistro() info['friendlyimagedistro'] = getFriendlyImageDistro() info['oever'] = getOEVersion() info['imagever'] = getImageVersion() ib = getImageBuild() if ib: info['imagever'] = info['imagever'] + "." + ib info['enigmaver'] = getEnigmaVersionString() info['driverdate'] = getDriverDate() info['kernelver'] = about.getKernelVersionString() try: from Tools.StbHardware import getFPVersion except ImportError: from Tools.DreamboxHardware import getFPVersion try: info['fp_version'] = getFPVersion() except: info['fp_version'] = None friendlychipsetdescription = _("Chipset") friendlychipsettext = info['chipset'].replace("bcm", "Broadcom ") if friendlychipsettext in ("7335", "7356", "7362", "73625", "7424", "7425", "7429"): friendlychipsettext = "Broadcom " + friendlychipsettext if not (info['fp_version'] is None or info['fp_version'] == 0): friendlychipsetdescription = friendlychipsetdescription + " (" + _( "Frontprocessor Version") + ")" friendlychipsettext = friendlychipsettext + " (" + str( info['fp_version']) + ")" info['friendlychipsetdescription'] = friendlychipsetdescription info['friendlychipsettext'] = friendlychipsettext info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): print "[OpenWebif] -D- tuner '%d' '%s' '%s'" % ( i, nimmanager.getNimName(i), nimmanager.getNim(i).getSlotName()) info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")", "rec": "", "live": "" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "friendlynic": getFriendlyNICChipSet(iface), "linkspeed": getLinkSpeed(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ipv4method": getIPv4Method(iface), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "v4prefix": sum([ bin(int(x)).count('1') for x in formatIp( iNetwork.getAdapterAttribute(iface, "netmask")).split('.') ]), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface)['addr'], "ipmethod": getIPMethod(iface), "firstpublic": getAdapterIPv6(iface)['firstpublic'] }) info['hdd'] = [] for hdd in harddiskmanager.hdd: dev = hdd.findMount() if dev: stat = os.statvfs(dev) free = int((stat.f_bfree / 1024) * (stat.f_bsize / 1024)) else: free = -1 if free <= 1024: free = "%i %s" % (free, _("MB")) else: free = free / 1024. free = "%.1f %s" % (free, _("GB")) size = hdd.diskSize() * 1000000 / 1048576. if size > 1048576: size = "%.1f %s" % ((size / 1048576.), _("TB")) elif size > 1024: size = "%.1f %s" % ((size / 1024.), _("GB")) else: size = "%d %s" % (size, _("MB")) iecsize = hdd.diskSize() # Harddisks > 1000 decimal Gigabytes are labelled in TB if iecsize > 1000000: iecsize = (iecsize + 50000) // float(100000) / 10 # Omit decimal fraction if it is 0 if (iecsize % 1 > 0): iecsize = "%.1f %s" % (iecsize, _("TB")) else: iecsize = "%d %s" % (iecsize, _("TB")) # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB elif iecsize > 300000: iecsize = "%d %s" % (((iecsize + 5000) // 10000 * 10), _("GB")) # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB elif iecsize > 1000: iecsize = "%d %s" % (((iecsize + 500) // 1000), _("GB")) else: iecsize = "%d %s" % (iecsize, _("MB")) info['hdd'].append({ "model": hdd.model(), "capacity": size, "labelled_capacity": iecsize, "free": free, "mount": dev, "friendlycapacity": _("%s free / %s total") % (free, size + ' ("' + iecsize + '")') }) info['shares'] = [] autofiles = ('/etc/auto.network', '/etc/auto.network_vti') for autofs in autofiles: if fileExists(autofs): method = "autofs" for line in file(autofs).readlines(): if not line.startswith('#'): # Replace escaped spaces that can appear inside credentials with underscores # Not elegant but we wouldn't want to expose credentials on the OWIF anyways tmpline = line.replace("\ ", "_") tmp = tmpline.split() if not len(tmp) == 3: continue name = tmp[0].strip() type = "unknown" if "cifs" in tmp[1]: # Linux still defaults to SMBv1 type = "SMBv1.0" settings = tmp[1].split(",") for setting in settings: if setting.startswith("vers="): type = setting.replace("vers=", "SMBv") elif "nfs" in tmp[1]: type = "NFS" # Default is r/w mode = _("r/w") settings = tmp[1].split(",") for setting in settings: if setting == "ro": mode = _("r/o") uri = tmp[2] parts = [] parts = tmp[2].split(':') if parts[0] is "": server = uri.split('/')[2] uri = uri.strip()[1:] else: server = parts[0] ipaddress = None if server: # Will fail on literal IPs try: # Try IPv6 first, as will Linux if has_ipv6: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET6) if tmpaddress: ipaddress = "[" + list( tmpaddress)[0][4][0] + "]" # Use IPv4 if IPv6 fails or is not present if ipaddress is None: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET) if tmpaddress: ipaddress = list(tmpaddress)[0][4][0] except: pass friendlyaddress = server if ipaddress is not None and not ipaddress == server: friendlyaddress = server + " (" + ipaddress + ")" info['shares'].append({ "name": name, "method": method, "type": type, "mode": mode, "path": uri, "host": server, "ipaddress": ipaddress, "friendlyaddress": friendlyaddress }) # TODO: fstab info['transcoding'] = False if (info['model'] in ("Uno4K", "Ultimo4K", "Solo4K", "Solo²", "Duo²", "Solo SE", "Quad", "Quad Plus") or info['machinebuild'] in ('inihdp', 'hd2400', 'et10000', 'et13000', 'sf5008', 'xpeedlx3', 'ew7356', 'dags7356', 'dags7252', 'formuler1tc', 'gb7356', 'gb7252', 'tiviaraplus', '8100s')): if os.path.exists( eEnv.resolve( '${libdir}/enigma2/python/Plugins/SystemPlugins/TransCodingSetup/plugin.pyo' ) ) or os.path.exists( eEnv.resolve( '${libdir}/enigma2/python/Plugins/SystemPlugins/TranscodingSetup/plugin.pyo' ) ) or os.path.exists( eEnv.resolve( '${libdir}/enigma2/python/Plugins/SystemPlugins/MultiTransCodingSetup/plugin.pyo' )): info['transcoding'] = True info['kinopoisk'] = False lang = ['ru', 'uk', 'lv', 'lt', 'et'] for l in lang: if l in language.getLanguage(): info['kinopoisk'] = True info['EX'] = '' if session: try: recs = NavigationInstance.instance.getRecordings() if recs: # only one stream and only TV from Plugins.Extensions.OpenWebif.controllers.stream import streamList s_name = '' s_cip = '' print "[OpenWebif] -D- streamList count '%d'" % len(streamList) if len(streamList) == 1: from Screens.ChannelSelection import service_types_tv from enigma import eEPGCache epgcache = eEPGCache.getInstance() serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list( eServiceReference('%s ORDER BY name' % (service_types_tv))) channels = services and services.getContent("SN", True) s = streamList[0] srefs = s.ref.toString() for channel in channels: if srefs == channel[0]: s_name = channel[1] + ' (' + s.clientIP + ')' break print "[OpenWebif] -D- s_name '%s'" % s_name for stream in streamList: srefs = stream.ref.toString() print "[OpenWebif] -D- srefs '%s'" % srefs sname = '' timers = [] for timer in NavigationInstance.instance.RecordTimer.timer_list: if timer.isRunning() and not timer.justplay: timers.append( timer.service_ref.getServiceName().replace( '\xc2\x86', '').replace('\xc2\x87', '')) print "[OpenWebif] -D- timer '%s'" % timer.service_ref.getServiceName( ) # only one recording if len(timers) == 1: sname = timers[0] if sname == '' and s_name != '': sname = s_name print "[OpenWebif] -D- recs count '%d'" % len(recs) for rec in recs: feinfo = rec.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['rec'] = getOrbitalText( cur_info) + ' / ' + sname service = session.nav.getCurrentService() if service is not None: sname = service.info().getName() feinfo = service.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['live'] = getOrbitalText( cur_info) + ' / ' + sname except Exception, error: info['EX'] = error
def getInfo(): # TODO: get webif versione somewhere! info = {} brand = "Dream Multimedia" model = "unknown" chipset = "unknown" if fileExists("/proc/stb/info/vumodel"): brand = "Vuplus" f = open("/proc/stb/info/vumodel",'r') model = f.readline().strip() f.close() elif fileExists("/proc/stb/info/boxtype"): brand = "Clarke-Xtrend" f = open("/proc/stb/info/boxtype",'r') model = f.readline().strip() f.close() else: f = open("/proc/stb/info/model",'r') model = f.readline().strip() f.close() info['brand'] = brand info['model'] = model if fileExists("/proc/stb/info/chipset"): f = open("/proc/stb/info/chipset",'r') chipset = f.readline().strip() f.close() info['chipset'] = chipset f = open("/proc/meminfo",'r') parts = f.readline().split(':') info['mem1'] = parts[1].strip() parts = f.readline().split(':') info['mem2'] = parts[1].strip() f.close() f = os.popen("uptime") parts = f.readline().split(',') info['uptime'] = parts[0].strip() f.close() if fileExists("/etc/bhversion"): f = open("/etc/bhversion",'r') imagever = f.readline().strip() f.close() else: imagever = about.getImageVersionString() info["webifver"] = "0.0.0" info['imagever'] = imagever info['enigmaver'] = about.getEnigmaVersionString() info['kernelver'] = about.getKernelVersionString() info['fp_version'] = getFPVersion() info['tuners'] = [] for i in range(0, nimmanager.getSlotCount()): info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")) }) info['hdd'] = [] for hdd in harddiskmanager.hdd: if hdd.free() <= 1024: free = "%i MB" % (hdd.free()) else: free = float(hdd.free()) / float(1024) free = "%.3f GB" % free info['hdd'].append({ "model": hdd.model(), "capacity": hdd.capacity(), "free": free }) return info