Web Controller

Basic Controllers

class controllers.root.RootController(session, path='')[source]

Web root controller.

P_index(request)[source]

The “pages functions” must be called P_<pagename>.

Example

Contents for endpoint /index will be generated using a method named P_index.

Parameters:request (twisted.web.server.Request) – HTTP request object
Returns:Parameter values
Return type:dict
class controllers.base.BaseController(path='', **kwargs)[source]

Basic HTTP requests controller.

__init__(path='', **kwargs)[source]

Constructor

Parameters:
  • path (basestring) – Base path
  • session – enigma2 Session instance
loadTemplate(template_trunk_relpath, module, args)[source]

Try to generate template contents by trying to load optimised bytecode, python sourcefile and .tmpl file (in that order).

Parameters:
  • template_trunk_relpath (basestring) – template filename trunk
  • module (basestring) – module name
  • args (dict) – template parameters
Returns:

template content

Return type:

str

controllers.base.FOUR_O_FOUR = '\n<html><head><title>Open Webif</title></head>\n<body><h1>Error 404: Page not found</h1><br/>\nThe requested URL was not found on this server.</body></html>\n'

HTTP 404 Not Found response content

controllers.base.TEMPLATE_ALIASES = {'web/epgbouquet': 'web/e2eventlist', 'web/epgmulti': 'web/e2eventlist', 'web/epgnext': 'web/e2eventlist', 'web/epgnow': 'web/e2eventlist', 'web/epgnownext': 'web/e2eventlist', 'web/epgsearch': 'web/e2eventlist', 'web/epgservice': 'web/e2eventlist', 'web/epgservicenext': 'web/e2eventlist', 'web/epgservicenow': 'web/e2eventlist', 'web/epgsimilar': 'web/e2eventlist', 'web/getservices': 'web/e2servicelist', 'web/gettags': 'web/e2tags', 'web/loadepg': 'web/e2simplexmlresult', 'web/mediaplayeradd': 'web/e2simplexmlresult', 'web/mediaplayercmd': 'web/e2simplexmlresult', 'web/mediaplayerload': 'web/e2simplexmlresult', 'web/mediaplayerplay': 'web/e2simplexmlresult', 'web/mediaplayerremove': 'web/e2simplexmlresult', 'web/mediaplayerwrite': 'web/e2simplexmlresult', 'web/message': 'web/e2simplexmlresult', 'web/messageanswer': 'web/e2simplexmlresult', 'web/moviedelete': 'web/e2simplexmlresult', 'web/moviemove': 'web/e2simplexmlresult', 'web/movierename': 'web/e2simplexmlresult', 'web/movietags': 'web/e2tags', 'web/parentcontrollist': 'web/e2servicelist', 'web/pluginlistread': 'web/e2simplexmlresult', 'web/recordnow': 'web/e2simplexmlresult', 'web/removelocation': 'web/e2simplexmlresult', 'web/saveepg': 'web/e2simplexmlresult', 'web/servicelistreload': 'web/e2simplexmlresult', 'web/streamsubservices': 'web/e2servicelist', 'web/subservices': 'web/e2servicelist', 'web/timeradd': 'web/e2simplexmlresult', 'web/timeraddbyeventid': 'web/e2simplexmlresult', 'web/timerchange': 'web/e2simplexmlresult', 'web/timercleanup': 'web/e2simplexmlresult', 'web/timerdelete': 'web/e2simplexmlresult', 'web/timerlistwrite': 'web/e2simplexmlresult', 'web/timertogglestatus': 'web/e2simplexmlresult', 'web/zap': 'web/e2simplexmlresult'}

template aliases

controllers.base.TEMPLATE_E2_EVENT_LIST = 'web/e2eventlist'

template for enigma2 event list

controllers.base.TEMPLATE_E2_SERVICE_LIST = 'web/e2servicelist'

template for enigma2 service list

controllers.base.TEMPLATE_E2_SIMPLE_XML_RESULT = 'web/e2simplexmlresult'

template for simple XML result

controllers.base.TEMPLATE_E2_TAGS = 'web/e2tags'

template for enigma2 tags

controllers.base.error404(request)[source]

HTTP 404 Not Found response.

Parameters:request (twisted.web.server.Request) – HTTP request object
Returns:HTTP 404 Not Found response

OpenWebif Specific Controllers

class controllers.fs_access.RestrictedFilesystemAccessController(*args, **kwargs)[source]

Filesystem Access Controller.

Provides file downloading and generates .m3u playlists on the fly for requested files.

Note

This implementation

  • does not provide directory listing support
  • Limits access to files contained in RECORDINGS_ROOT_PATH
  • Limits access to files contained in FILE_ACCESS_WHITELIST
render_GET(request)[source]

Request handler for the file endpoint.

Parameters:request (twisted.web.server.Request) – HTTP request object
Returns:HTTP response with headers
GET /file
Query Parameters:
 
  • action (string) – one of download [default], stream
  • name (string) – m3u entry label
  • be-lyle (string) – bouquet reference

Other Controllers

class controllers.evil_proxy.EvilProxyController(*args, **kwargs)[source]

A rather evil controller - allows arbitrary execution of python code.

Warning

DANGER, WILL ROBINSON! Never ever allow unrestricted access to this endpoint!

render_POST(request)[source]

Execute python code defined by request parameter uma.

Parameters:request (twisted.web.server.Request) – HTTP request object
Returns:HTTP response with headers
POST /api/evil
Query Parameters:
 
  • uma (string) – python code snippet to be executed

Utility Functions

controllers.models.services.getSearchEpg(sstr, endtime=None, fulldesc=False, bouquetsonly=False)[source]

Search for EPG events.

Parameters:
  • sstr (basestring) – search term
  • endtime (int) – timetamp
  • fulldesc (bool) – search in event’s description field too
  • bouquetsonly (bool) – limit results to services in known bouquets
Returns:

event datasets

Return type:

list