def __init__(self, session, path=""): BaseController.__init__(self, path=path, session=session) self.putChild("web", WebController(session)) self.putGZChild("api", ApiController(session)) self.putGZChild("ajax", AjaxController(session)) self.putChild("file", FileController()) self.putChild("grab", grabScreenshot(session)) if os.path.exists(getPublicPath('mobile')): self.putChild("mobile", MobileController(session)) self.putChild("m", static.File(getPublicPath() + "/mobile")) for static_val in ('js', 'css', 'static', 'images', 'fonts'): self.putChild(static_val, static.File(getPublicPath() + '/' + static_val)) for static_val in ('themes', 'webtv', 'vxg'): if os.path.exists(getPublicPath(static_val)): self.putChild(static_val, static.File(getPublicPath() + '/' + static_val)) if os.path.exists('/usr/bin/shellinaboxd'): self.putChild("terminal", proxy.ReverseProxyResource('::1', 4200, '/')) self.putGZChild("ipkg", IpkgController(session)) self.putChild("autotimer", ATController(session)) self.putChild("epgrefresh", ERController(session)) self.putChild("bouqueteditor", BQEController(session)) self.putChild("transcoding", TranscodingController()) self.putChild("wol", WOLClientController()) self.putChild("wolsetup", WOLSetupController(session)) if PICON_PATH: self.putChild("picon", static.File(PICON_PATH)) try: from NET import NetController self.putChild("net", NetController(session)) except: pass
def __init__(self, session, path=""): BaseController.__init__(self, path=path, session=session) self.putChild("web", WebController(session)) self.putGZChild("api", ApiController(session)) self.putGZChild("ajax", AjaxController(session)) self.putChild("file", FileController()) self.putChild("grab", grabScreenshot(session)) if os.path.exists(getPublicPath('mobile')): self.putChild("mobile", MobileController(session)) self.putChild("m", static.File(getPublicPath() + "/mobile")) for static_val in ('js', 'css', 'static', 'images', 'fonts'): self.putChild(static_val, static.File(getPublicPath() + '/' + static_val)) for static_val in ('themes', 'webtv', 'vxg'): if os.path.exists(getPublicPath(static_val)): self.putChild(static_val, static.File(getPublicPath() + '/' + static_val)) if os.path.exists('/usr/bin/shellinaboxd'): self.putChild("terminal", proxy.ReverseProxyResource('::1', 4200, '/')) self.putChild("ipkg", IpkgController(session)) self.putChild("autotimer", ATController(session)) self.putChild("serienrecorder", SRController(session)) self.putChild("epgrefresh", ERController(session)) self.putChild("bouqueteditor", BQEController(session)) self.putChild("transcoding", TranscodingController()) self.putChild("wol", WOLClientController()) self.putChild("wolsetup", WOLSetupController(session)) if PICON_PATH: self.putChild("picon", static.File(PICON_PATH)) try: from NET import NetController self.putChild("net", NetController(session)) except: pass
def P_boxinfo(self, request): info = getInfo(self.session, need_fullinfo=True) type = getBoxType() if fileExists(getPublicPath("/images/boxes/" + type + ".png")): info["boximage"] = type + ".png" elif fileExists(getPublicPath("/images/boxes/" + type + ".jpg")): info["boximage"] = type + ".jpg" else: info["boximage"] = "unknown.png" return info
def P_webtv(self, request): if config.OpenWebif.auth_for_streaming.value: session = GetSession() if session.GetAuth(request) is not None: auth = ':'.join(session.GetAuth(request)) + "@" else: auth = '-sid:' + str(session.GetSID(request)) + "@" else: auth = '' vxgenabled = False if fileExists(getPublicPath("/vxg/media_player.pexe")): vxgenabled = True transcoding = TRANSCODING transcoder_port = 0 if transcoding: try: transcoder_port = int( config.plugins.transcodingsetup.port.value) if getMachineBuild() in ('inihdp', 'hd2400', 'et10000', 'et13000', 'sf5008', 'ew7356', 'formuler1tc', 'tiviaraplus', '8100s'): transcoder_port = int(config.OpenWebif.streamport.value) except StandardError: transcoder_port = 0 return { "transcoder_port": transcoder_port, "vxgenabled": vxgenabled, "auth": auth }
def P_settings(self, request): ret = {"result": True} ret['configsections'] = getConfigsSections()['sections'] if config.OpenWebif.webcache.theme.value: if os.path.exists(getPublicPath('themes')): ret['themes'] = config.OpenWebif.webcache.theme.choices else: ret['themes'] = ['original', 'clear'] ret['theme'] = config.OpenWebif.webcache.theme.value else: ret['themes'] = [] ret['theme'] = 'original' if config.OpenWebif.webcache.moviedb.value: ret['moviedbs'] = config.OpenWebif.webcache.moviedb.choices ret['moviedb'] = config.OpenWebif.webcache.moviedb.value else: ret['moviedbs'] = [] ret['moviedb'] = 'IMDb' ret['zapstream'] = config.OpenWebif.webcache.zapstream.value ret['showchannelpicon'] = config.OpenWebif.webcache.showchannelpicon.value ret['showchanneldetails'] = config.OpenWebif.webcache.showchanneldetails.value ret['allowipkupload'] = config.OpenWebif.allow_upload_ipk.value loc = getLocations() ret['locations'] = loc['locations'] if os.path.exists(VIEWS_PATH + "/responsive"): ret['responsivedesign'] = config.OpenWebif.responsive_enabled.value return ret
def P_settings(self, request): ret = { "result": True } ret['configsections'] = getConfigsSections()['sections'] if config.OpenWebif.webcache.theme.value: if os.path.exists(getPublicPath('themes')): ret['themes'] = config.OpenWebif.webcache.theme.choices else: ret['themes'] = ['original', 'clear'] ret['theme'] = config.OpenWebif.webcache.theme.value else: ret['themes'] = [] ret['theme'] = 'original' if config.OpenWebif.webcache.moviedb.value: ret['moviedbs'] = config.OpenWebif.webcache.moviedb.choices ret['moviedb'] = config.OpenWebif.webcache.moviedb.value else: ret['moviedbs'] = [] ret['moviedb'] = 'IMDb' ret['zapstream'] = config.OpenWebif.webcache.zapstream.value ret['showchannelpicon'] = config.OpenWebif.webcache.showchannelpicon.value ret['showchanneldetails'] = config.OpenWebif.webcache.showchanneldetails.value ret['allowipkupload'] = config.OpenWebif.allow_upload_ipk.value loc = getLocations() ret['locations'] = loc['locations'] if os.path.exists(VIEWS_PATH + "/responsive"): ret['responsivedesign'] = config.OpenWebif.responsive_enabled.value return ret
def P_index(self, request): if config.OpenWebif.responsive_enabled.value and os.path.exists(VIEWS_PATH + "/responsive"): return {} mode = '' if "mode" in request.args.keys(): mode = request.args["mode"][0] uagent = request.getHeader('User-Agent') if uagent and mode != 'fullpage' and os.path.exists(getPublicPath('mobile')): if uagent.lower().find("iphone") != -1 or uagent.lower().find("ipod") != -1 or uagent.lower().find("blackberry") != -1 or uagent.lower().find("mobile") != -1: request.setHeader("Location", "/mobile/") request.setResponseCode(http.FOUND) return "" return {}
def P_webtv(self, request): if config.OpenWebif.auth_for_streaming.value: session = GetSession() if session.GetAuth(request) is not None: auth = ':'.join(session.GetAuth(request)) + "@" else: auth = '-sid:' + str(session.GetSID(request)) + "@" else: auth = '' vxgenabled = False if fileExists(getPublicPath("/vxg/media_player.pexe")): vxgenabled = True transcoding = TRANSCODING transcoder_port = 0 if transcoding: try: transcoder_port = int(config.plugins.transcodingsetup.port.value) if getMachineBuild() in ('inihdp', 'hd2400', 'et10000', 'et13000', 'sf5008', 'ew7356', 'formuler1tc', 'tiviaraplus', '8100s'): transcoder_port = int(config.OpenWebif.streamport.value) except StandardError: transcoder_port = 0 return {"transcoder_port": transcoder_port, "vxgenabled": vxgenabled, "auth": auth}
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 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'}) 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: 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 moviedb = config.OpenWebif.webcache.moviedb.value if config.OpenWebif.webcache.moviedb.value else 'IMDb' config.OpenWebif.webcache.moviedb.value = moviedb config.OpenWebif.webcache.moviedb.save() ret['moviedb'] = moviedb ret['webtv'] = os.path.exists(getPublicPath('webtv')) 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 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