mirror of
https://git.deluge-torrent.org/deluge
synced 2025-08-02 22:48:40 +00:00
add ssl support to the webui webserver
This commit is contained in:
parent
148afede5b
commit
b13efa08ff
2 changed files with 27 additions and 2 deletions
|
@ -47,6 +47,7 @@ import pkg_resources
|
||||||
|
|
||||||
from twisted.application import service, internet
|
from twisted.application import service, internet
|
||||||
from twisted.internet import reactor, error
|
from twisted.internet import reactor, error
|
||||||
|
from twisted.internet.ssl import SSL
|
||||||
from twisted.web import http, resource, server, static
|
from twisted.web import http, resource, server, static
|
||||||
|
|
||||||
from deluge import common, component
|
from deluge import common, component
|
||||||
|
@ -378,6 +379,15 @@ class TopLevel(resource.Resource):
|
||||||
request.setHeader("content-type", "text/html; charset=utf-8")
|
request.setHeader("content-type", "text/html; charset=utf-8")
|
||||||
return template.render(scripts=scripts, stylesheets=self.stylesheets)
|
return template.render(scripts=scripts, stylesheets=self.stylesheets)
|
||||||
|
|
||||||
|
class ServerContextFactory:
|
||||||
|
|
||||||
|
def getContext(self):
|
||||||
|
"""Creates an SSL context."""
|
||||||
|
ctx = SSL.Context(SSL.SSLv3_METHOD)
|
||||||
|
ctx.use_privatekey_file(common.get_default_config_dir(os.path.join('ssl', 'web.key')))
|
||||||
|
ctx.use_certificate_file(common.get_default_config_dir(os.path.join('ssl', 'web.crt')))
|
||||||
|
return ctx
|
||||||
|
|
||||||
class DelugeWeb(component.Component):
|
class DelugeWeb(component.Component):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -409,6 +419,7 @@ class DelugeWeb(component.Component):
|
||||||
self.top_level = TopLevel()
|
self.top_level = TopLevel()
|
||||||
self.site = server.Site(self.top_level)
|
self.site = server.Site(self.top_level)
|
||||||
self.port = self.config["port"]
|
self.port = self.config["port"]
|
||||||
|
self.https = self.config["https"]
|
||||||
self.web_api = WebApi()
|
self.web_api = WebApi()
|
||||||
self.auth = Auth()
|
self.auth = Auth()
|
||||||
|
|
||||||
|
@ -439,6 +450,14 @@ class DelugeWeb(component.Component):
|
||||||
self.port, self.port)
|
self.port, self.port)
|
||||||
self.plugins.enable_plugins()
|
self.plugins.enable_plugins()
|
||||||
reactor.run()
|
reactor.run()
|
||||||
|
|
||||||
|
def start_ssl(self):
|
||||||
|
log.info("%s %s.", _("Starting server in PID"), os.getpid())
|
||||||
|
reactor.listenSSL(self.port, self.site, ServerContextFactory())
|
||||||
|
log.info("serving on %s:%s view at https://127.0.0.1:%s", "0.0.0.0",
|
||||||
|
self.port, self.port)
|
||||||
|
self.plugins.enable_plugins()
|
||||||
|
reactor.run()
|
||||||
|
|
||||||
def shutdown(self, *args):
|
def shutdown(self, *args):
|
||||||
log.info("Shutting down webserver")
|
log.info("Shutting down webserver")
|
||||||
|
|
|
@ -54,6 +54,8 @@ class Web(_UI):
|
||||||
group.add_option("-p", "--port", dest="port", type="int",
|
group.add_option("-p", "--port", dest="port", type="int",
|
||||||
help="Sets the port to be used for the webserver",
|
help="Sets the port to be used for the webserver",
|
||||||
action="store", default=None)
|
action="store", default=None)
|
||||||
|
group.add_option("--ssl", dest="ssl", action="store_true",
|
||||||
|
help="Tells the webserver to use ssl", default=False)
|
||||||
self.parser.add_option_group(group)
|
self.parser.add_option_group(group)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -67,9 +69,13 @@ class Web(_UI):
|
||||||
self.__server = server.DelugeWeb()
|
self.__server = server.DelugeWeb()
|
||||||
|
|
||||||
if self.options.port:
|
if self.options.port:
|
||||||
self.server.port = self.options.port
|
self.server.port = self.options.port
|
||||||
|
|
||||||
self.server.start()
|
if self.options.ssl or self.server.https:
|
||||||
|
self.server.https = self.options.ssl
|
||||||
|
self.server.start_ssl()
|
||||||
|
else:
|
||||||
|
self.server.start()
|
||||||
|
|
||||||
def start():
|
def start():
|
||||||
web = Web()
|
web = Web()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue