deluge.ui.web package

Submodules

deluge.ui.web.auth module

class deluge.ui.web.auth.Auth(config)

Bases: deluge.ui.web.json_api.JSONComponent

The component that implements authentication into the JSON interface.

change_password(old_password, new_password)

Change the password.

Parameters
  • old_password (string) – the current password

  • new_password (string) – the password to change to

check_password(password)
check_request(request, method=None, level=None)

Check to ensure that a request is authorised to call the specified method of authentication level.

Parameters
  • request (twisted.web.http.Request) – The HTTP request in question

  • method (function) – Check the specified method

  • level (integer) – Check the specified auth level

Raises

Exception

check_session(session_id=None)

Check a session to see if it’s still valid.

Returns

True if the session is valid, False if not.

Return type

booleon

delete_session()

Removes a session.

Parameters

session_id (string) – the id for the session to remove

login(password)

Test a password to see if it’s valid.

Parameters

password (string) – the password to test

Returns

a session id or False

Return type

string or False

start()
stop()
deluge.ui.web.auth.get_session_id(session_id)

Checks a session id against its checksum

deluge.ui.web.auth.make_checksum(session_id)
deluge.ui.web.auth.make_expires(timeout)

deluge.ui.web.common module

class deluge.ui.web.common.Template(*args, **kwargs)

Bases: mako.template.Template

A template that adds some built-ins to the rendering

builtins = {'_': <function _>, 'escape': <function escape>, 'version': '2.1.1'}
render(*args, **data)
deluge.ui.web.common.escape(text)

Used by gettext.js template to escape any translated language strings that might contain newlines or quotes as they would break the script.

deluge.ui.web.json_api module

class deluge.ui.web.json_api.EventQueue

Bases: object

This class subscribes to events from the core and stores them until all the subscribed listeners have received the events.

add_listener(listener_id, event)

Add a listener to the event queue.

Parameters
  • listener_id (string) – A unique id for the listener

  • event (string) – The event name

get_events(listener_id)

Retrieve the pending events for the listener.

Parameters

listener_id (string) – A unique id for the listener

remove_listener(listener_id, event)

Remove a listener from the event queue.

Parameters
  • listener_id (string) – The unique id for the listener

  • event (string) – The event name

class deluge.ui.web.json_api.JSON(*args: Any, **kwargs: Any)

Bases: twisted.web.resource.Resource, deluge.component.Component

A Twisted Web resource that exposes a JSON-RPC interface for web clients to use.

deregister_object(obj)

Deregisters an objects exported rpc methods.

Parameters

obj (object) – The object that was previously registered.

get_remote_methods(result=None)

Updates remote methods from the daemon.

Returns

t.i.d.Deferred – A deferred returning the available remote methods

register_object(obj, name=None)

Registers an object to export it’s rpc methods.

These methods should be exported with the export decorator prior to registering the object.

Parameters
  • obj (object) – The object that we want to export.

  • name (str) – The name to use. If None, uses the object class name.

render(request)

Handles all the POST requests made to the /json controller.

class deluge.ui.web.json_api.JSONComponent(name, interval=1, depend=None)

Bases: deluge.component.Component

exception deluge.ui.web.json_api.JSONException(inner_exception)

Bases: Exception

class deluge.ui.web.json_api.WebApi

Bases: deluge.ui.web.json_api.JSONComponent

The component that implements all the methods required for managing the web interface. The complete web json interface also exposes all the methods available from the core RPC.

add_host(host, port, username='', password='')

Adds a host to the list.

Parameters
  • host (str) – The IP or hostname of the deluge daemon.

  • port (int) – The port of the deluge daemon.

  • username (str) – The username to login to the daemon with.

  • password (str) – The password to login to the daemon with.

Returns

tuple

A tuple of (bool, str). If True will contain the host_id, otherwise

if False will contain the error message.

add_torrents(torrents)

Add torrents by file

Parameters

torrents (list) – A list of dictionaries containing the torrent path and torrent options to add with.

json_api.web.add_torrents([{
    "path": "/tmp/deluge-web/some-torrent-file.torrent",
    "options": {"download_location": "/home/deluge/"}
}])
connect(host_id)

Connect the web client to a daemon.

Parameters

host_id (str) – The id of the daemon in the host list.

Returns

Deferred – List of methods the daemon supports.

connected()

The current connection state.

Returns

True if the client is connected

Return type

boolean

deregister_event_listener(event)

Remove an event listener from the event queue.

Parameters

event (string) – The event name

disable()
disconnect()

Disconnect the web interface from the connected daemon.

download_torrent_from_url(url, cookie=None)

Download a torrent file from a URL to a temporary directory.

Parameters

url (string) – the URL of the torrent

Returns

the temporary file name of the torrent file

Return type

string

edit_host(host_id, host, port, username='', password='')

Edit host details in the hostlist.

Parameters
  • host_id (str) – The host identifying hash.

  • host (str) – The IP or hostname of the deluge daemon.

  • port (int) – The port of the deluge daemon.

  • username (str) – The username to login to the daemon with.

  • password (str) – The password to login to the daemon with.

Returns

bool – True if successful, False otherwise.

enable()
get_config()

Get the configuration dictionary for the web interface.

Return type

dictionary

Returns

the configuration

get_events()

Retrieve the pending events for the session.

get_host_status(host_id)

Returns the current status for the specified host.

Parameters

host_id (string) – the hash id of the host

get_hosts()

Return the hosts in the hostlist.

get_magnet_info(uri)

Parse a magnet URI for hash and name.

get_plugin_info(name)

Get the details for a plugin.

get_plugin_resources(name)

Get the resource data files for a plugin.

get_plugins()

All available and enabled plugins within WebUI.

Note

This does not represent all plugins from deluge.client.core.

Returns

dict – A dict containing ‘available_plugins’ and ‘enabled_plugins’ lists.

get_torrent_files(torrent_id)

Gets the files for a torrent in tree format

Parameters

torrent_id (string) – the id of the torrent to retrieve.

Returns

The torrents files in a tree

Return type

dictionary

get_torrent_info(filename)

Return information about a torrent on the filesystem.

Parameters

filename (string) – the path to the torrent

Returns

information about the torrent:

{
    "name": the torrent name,
    "files_tree": the files the torrent contains,
    "info_hash" the torrents info_hash
}
Return type

dictionary

get_torrent_status(torrent_id, keys)

Get the status for a torrent, filtered by status keys.

register_event_listener(event)

Add a listener to the event queue.

Parameters

event (string) – The event name

remove_host(host_id)

Removes a host from the hostlist.

Parameters

host_id (str) – The host identifying hash.

Returns

bool – True if successful, False otherwise.

set_config(config)

Sets the configuration dictionary for the web interface.

Parameters

config (dictionary) – The configuration options to update

start()
start_daemon(port)

Starts a local daemon.

stop()
stop_daemon(host_id)

Stops a running daemon.

Parameters

host_id (string) – the hash id of the host

update_ui(keys, filter_dict)

Gather the information required for updating the web interface.

Parameters
  • keys (list) – the information about the torrents to gather

  • filter_dict (dictionary) – the filters to apply when selecting torrents.

Returns

The torrent and UI information.

Return type

dictionary

upload_plugin(filename, path)

Upload a plugin to config.

class deluge.ui.web.json_api.WebUtils

Bases: deluge.ui.web.json_api.JSONComponent

Utility functions for the Web UI that do not fit in the WebApi.

get_languages()

Get the available translated languages

Returns

list – of tuples [(lang-id, language-name), ...]

deluge.ui.web.json_api.export(auth_level=5)

Decorator function to register an object’s method as a RPC. The object will need to be registered with a :class:JSON to be effective.

Parameters
  • func (function) – the function to export

  • auth_level (int) – the auth level required to call this method

deluge.ui.web.pluginmanager module

class deluge.ui.web.pluginmanager.PluginManager

Bases: deluge.pluginmanagerbase.PluginManagerBase, deluge.component.Component

disable_plugin(name)

Disable a plugin.

Parameters

plugin_name (str) – The plugin name.

Returns

Deferred

A deferred with callback value True or False indicating

whether the plugin is disabled or not.

enable_plugin(name)

Enable a plugin.

Parameters

plugin_name (str) – The plugin name.

Returns

Deferred

A deferred with callback value True or False indicating

whether the plugin is enabled or not.

get_plugin_resources(name)
start()

Start up the plugin manager

stop()

Stop the plugin manager

update()
deluge.ui.web.pluginmanager.gather_info(plugin)

deluge.ui.web.server module

class deluge.ui.web.server.DelugeWeb(options=None, daemon=True)

Bases: deluge.component.Component

__init__(options=None, daemon=True)

Setup the DelugeWeb server.

Parameters
  • options (argparse.Namespace) – The web server options.

  • daemon (bool) – If True run web server as a separate daemon process (starts a twisted reactor). If False shares the process and twisted reactor from WebUI plugin or tests.

install_signal_handlers()
shutdown(*args)
start()

Start the DelugeWeb server

start_normal()
start_ssl()
stop()
class deluge.ui.web.server.Flag

Bases: twisted.web.resource.Resource

getChild(path, request)

Retrieve a ‘child’ resource from me.

Implement this to create dynamic resource generation – resources which are always available may be registered with self.putChild().

This will not be called if the class-level variable ‘isLeaf’ is set in your subclass; instead, the ‘postpath’ attribute of the request will be left as a list of the remaining path elements.

For example, the URL /foo/bar/baz will normally be:

| site.resource.getChild('foo').getChild('bar').getChild('baz').

However, if the resource returned by ‘bar’ has isLeaf set to true, then the getChild call will never be made on it.

Parameters and return value have the same meaning and requirements as those defined by L{IResource.getChildWithDefault}.

render(request)

Render a given resource. See L{IResource}’s render method.

I delegate to methods of self with the form ‘render_METHOD’ where METHOD is the HTTP that was used to make the request. Examples: render_GET, render_HEAD, render_POST, and so on. Generally you should implement those methods instead of overriding this one.

render_METHOD methods are expected to return a byte string which will be the rendered page, unless the return value is C{server.NOT_DONE_YET}, in which case it is this class’s responsibility to write the results using C{request.write(data)} and then call C{request.finish()}.

Old code that overrides render() directly is likewise expected to return a byte string or NOT_DONE_YET.

@see: L{IResource.render}

class deluge.ui.web.server.GetText

Bases: twisted.web.resource.Resource

render(request)

Render a given resource. See L{IResource}’s render method.

I delegate to methods of self with the form ‘render_METHOD’ where METHOD is the HTTP that was used to make the request. Examples: render_GET, render_HEAD, render_POST, and so on. Generally you should implement those methods instead of overriding this one.

render_METHOD methods are expected to return a byte string which will be the rendered page, unless the return value is C{server.NOT_DONE_YET}, in which case it is this class’s responsibility to write the results using C{request.write(data)} and then call C{request.finish()}.

Old code that overrides render() directly is likewise expected to return a byte string or NOT_DONE_YET.

@see: L{IResource.render}

class deluge.ui.web.server.LookupResource(name, *directories)

Bases: twisted.web.resource.Resource, deluge.component.Component

add_directory(directory, path='')
getChild(path, request)

Retrieve a ‘child’ resource from me.

Implement this to create dynamic resource generation – resources which are always available may be registered with self.putChild().

This will not be called if the class-level variable ‘isLeaf’ is set in your subclass; instead, the ‘postpath’ attribute of the request will be left as a list of the remaining path elements.

For example, the URL /foo/bar/baz will normally be:

| site.resource.getChild('foo').getChild('bar').getChild('baz').

However, if the resource returned by ‘bar’ has isLeaf set to true, then the getChild call will never be made on it.

Parameters and return value have the same meaning and requirements as those defined by L{IResource.getChildWithDefault}.

remove_directory(directory, path='')
render(request)

Render a given resource. See L{IResource}’s render method.

I delegate to methods of self with the form ‘render_METHOD’ where METHOD is the HTTP that was used to make the request. Examples: render_GET, render_HEAD, render_POST, and so on. Generally you should implement those methods instead of overriding this one.

render_METHOD methods are expected to return a byte string which will be the rendered page, unless the return value is C{server.NOT_DONE_YET}, in which case it is this class’s responsibility to write the results using C{request.write(data)} and then call C{request.finish()}.

Old code that overrides render() directly is likewise expected to return a byte string or NOT_DONE_YET.

@see: L{IResource.render}

class deluge.ui.web.server.MockGetText

Bases: twisted.web.resource.Resource

GetText Mocking class

This class will mock the file gettext.js in case it does not exists. It will be used to define the _ (underscore) function for translations, and will return the string to translate, as is.

render(request)

Render a given resource. See L{IResource}’s render method.

I delegate to methods of self with the form ‘render_METHOD’ where METHOD is the HTTP that was used to make the request. Examples: render_GET, render_HEAD, render_POST, and so on. Generally you should implement those methods instead of overriding this one.

render_METHOD methods are expected to return a byte string which will be the rendered page, unless the return value is C{server.NOT_DONE_YET}, in which case it is this class’s responsibility to write the results using C{request.write(data)} and then call C{request.finish()}.

Old code that overrides render() directly is likewise expected to return a byte string or NOT_DONE_YET.

@see: L{IResource.render}

class deluge.ui.web.server.Render

Bases: twisted.web.resource.Resource

getChild(path, request)

Retrieve a ‘child’ resource from me.

Implement this to create dynamic resource generation – resources which are always available may be registered with self.putChild().

This will not be called if the class-level variable ‘isLeaf’ is set in your subclass; instead, the ‘postpath’ attribute of the request will be left as a list of the remaining path elements.

For example, the URL /foo/bar/baz will normally be:

| site.resource.getChild('foo').getChild('bar').getChild('baz').

However, if the resource returned by ‘bar’ has isLeaf set to true, then the getChild call will never be made on it.

Parameters and return value have the same meaning and requirements as those defined by L{IResource.getChildWithDefault}.

render(request)

Render a given resource. See L{IResource}’s render method.

I delegate to methods of self with the form ‘render_METHOD’ where METHOD is the HTTP that was used to make the request. Examples: render_GET, render_HEAD, render_POST, and so on. Generally you should implement those methods instead of overriding this one.

render_METHOD methods are expected to return a byte string which will be the rendered page, unless the return value is C{server.NOT_DONE_YET}, in which case it is this class’s responsibility to write the results using C{request.write(data)} and then call C{request.finish()}.

Old code that overrides render() directly is likewise expected to return a byte string or NOT_DONE_YET.

@see: L{IResource.render}

class deluge.ui.web.server.ScriptResource

Bases: twisted.web.resource.Resource, deluge.component.Component

add_script(path, filepath, script_type=None)

Adds a script or scripts to the script resource.

Parameters
  • path (string) – The path of the script (this supports globbing)

  • filepath (string) – The physical location of the script

  • script_type – The type of script to add (normal, debug, dev)

  • script_type – string

add_script_folder(path, filepath, script_type=None, recurse=True)

Adds a folder of scripts to the script resource.

Parameters
  • path (string) – The path of the folder

  • filepath (string) – The physical location of the script

  • script_type – The type of script to add (normal, debug, dev)

  • script_type – string

  • recurse – Whether or not to recurse into other folders

  • recurse – bool

getChild(path, request)

Retrieve a ‘child’ resource from me.

Implement this to create dynamic resource generation – resources which are always available may be registered with self.putChild().

This will not be called if the class-level variable ‘isLeaf’ is set in your subclass; instead, the ‘postpath’ attribute of the request will be left as a list of the remaining path elements.

For example, the URL /foo/bar/baz will normally be:

| site.resource.getChild('foo').getChild('bar').getChild('baz').

However, if the resource returned by ‘bar’ has isLeaf set to true, then the getChild call will never be made on it.

Parameters and return value have the same meaning and requirements as those defined by L{IResource.getChildWithDefault}.

get_scripts(script_type=None)

Returns a list of the scripts that can be used for producing script tags.

Parameters
  • script_type – The type of scripts to get (normal, debug, dev)

  • script_type – string

has_script_type_files(script_type)

Returns whether all the script files exist for this script type.

Parameters

script_type (str) – The script type to check (normal, debug, dev).

Returns

bool – True if the files for this script type exist, otherwise False.

remove_script(path, script_type=None)

Removes a script or folder of scripts from the script resource.

Parameters
  • path (string) – The path of the folder

  • script_type – The type of script to add (normal, debug, dev)

  • script_type – string

render(request)

Render a given resource. See L{IResource}’s render method.

I delegate to methods of self with the form ‘render_METHOD’ where METHOD is the HTTP that was used to make the request. Examples: render_GET, render_HEAD, render_POST, and so on. Generally you should implement those methods instead of overriding this one.

render_METHOD methods are expected to return a byte string which will be the rendered page, unless the return value is C{server.NOT_DONE_YET}, in which case it is this class’s responsibility to write the results using C{request.write(data)} and then call C{request.finish()}.

Old code that overrides render() directly is likewise expected to return a byte string or NOT_DONE_YET.

@see: L{IResource.render}

class deluge.ui.web.server.Themes(*args, **kwargs)

Bases: twisted.web.static.File

getChild(path, request)
class deluge.ui.web.server.TopLevel

Bases: twisted.web.resource.Resource

add_script(script)

Adds a script to the server so it is included in the <head> element of the index page.

Parameters

script (string) – The path to the script

getChild(path, request)

Retrieve a ‘child’ resource from me.

Implement this to create dynamic resource generation – resources which are always available may be registered with self.putChild().

This will not be called if the class-level variable ‘isLeaf’ is set in your subclass; instead, the ‘postpath’ attribute of the request will be left as a list of the remaining path elements.

For example, the URL /foo/bar/baz will normally be:

| site.resource.getChild('foo').getChild('bar').getChild('baz').

However, if the resource returned by ‘bar’ has isLeaf set to true, then the getChild call will never be made on it.

Parameters and return value have the same meaning and requirements as those defined by L{IResource.getChildWithDefault}.

getChildWithDefault(path, request)

Retrieve a static or dynamically generated child resource from me.

First checks if a resource was added manually by putChild, and then call getChild to check for dynamic resources. Only override if you want to affect behaviour of all child lookups, rather than just dynamic ones.

This will check to see if I have a pre-registered child resource of the given name, and call getChild if I do not.

@see: L{IResource.getChildWithDefault}

remove_script(script)

Removes a script from the server.

Parameters

script (string) – The path to the script

render(request)

Render a given resource. See L{IResource}’s render method.

I delegate to methods of self with the form ‘render_METHOD’ where METHOD is the HTTP that was used to make the request. Examples: render_GET, render_HEAD, render_POST, and so on. Generally you should implement those methods instead of overriding this one.

render_METHOD methods are expected to return a byte string which will be the rendered page, unless the return value is C{server.NOT_DONE_YET}, in which case it is this class’s responsibility to write the results using C{request.write(data)} and then call C{request.finish()}.

Old code that overrides render() directly is likewise expected to return a byte string or NOT_DONE_YET.

@see: L{IResource.render}

property stylesheets
class deluge.ui.web.server.Tracker

Bases: twisted.web.resource.Resource

getChild(path, request)

Retrieve a ‘child’ resource from me.

Implement this to create dynamic resource generation – resources which are always available may be registered with self.putChild().

This will not be called if the class-level variable ‘isLeaf’ is set in your subclass; instead, the ‘postpath’ attribute of the request will be left as a list of the remaining path elements.

For example, the URL /foo/bar/baz will normally be:

| site.resource.getChild('foo').getChild('bar').getChild('baz').

However, if the resource returned by ‘bar’ has isLeaf set to true, then the getChild call will never be made on it.

Parameters and return value have the same meaning and requirements as those defined by L{IResource.getChildWithDefault}.

on_got_icon(icon, request)
render(request)

Render a given resource. See L{IResource}’s render method.

I delegate to methods of self with the form ‘render_METHOD’ where METHOD is the HTTP that was used to make the request. Examples: render_GET, render_HEAD, render_POST, and so on. Generally you should implement those methods instead of overriding this one.

render_METHOD methods are expected to return a byte string which will be the rendered page, unless the return value is C{server.NOT_DONE_YET}, in which case it is this class’s responsibility to write the results using C{request.write(data)} and then call C{request.finish()}.

Old code that overrides render() directly is likewise expected to return a byte string or NOT_DONE_YET.

@see: L{IResource.render}

class deluge.ui.web.server.Upload

Bases: twisted.web.resource.Resource

Twisted Web resource to handle file uploads

render(request)

Saves all uploaded files to the disk and returns a list of filenames, each on a new line.

deluge.ui.web.server.rpath(*paths)

Convert a relative path into an absolute path relative to the location of this script.

deluge.ui.web.web module

class deluge.ui.web.web.Web(*args, **kwargs)

Bases: deluge.ui.ui.UI

cmd_description = 'Web-based user interface (http://localhost:8112)'
property server
start()

Module contents

deluge.ui.web.start()