URI: 
       tadd SSL context to watchtower server - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 1ecbafb920a7fb87dd3c7d38c8e5ed3560d52183
   DIR parent 26efef9e069616ab675231548b642b6296342019
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Fri, 13 Sep 2019 12:26:27 +0200
       
       add SSL context to watchtower server
       
       Diffstat:
         M electrum/daemon.py                  |      19 ++++++-------------
         M electrum/simple_config.py           |       9 +++++++++
       
       2 files changed, 15 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/electrum/daemon.py b/electrum/daemon.py
       t@@ -34,7 +34,6 @@ import aiohttp
        from aiohttp import web
        from base64 import b64decode
        from collections import defaultdict
       -import ssl
        
        import jsonrpcclient
        import jsonrpcserver
       t@@ -163,7 +162,7 @@ class WatchTowerServer(Logger):
                port = self.config.get('watchtower_port', 12345)
                self.runner = web.AppRunner(self.app)
                await self.runner.setup()
       -        site = web.TCPSite(self.runner, host, port)
       +        site = web.TCPSite(self.runner, host, port, ssl_context=self.config.get_ssl_context())
                await site.start()
        
            async def get_ctn(self, *args):
       t@@ -172,7 +171,8 @@ class WatchTowerServer(Logger):
            async def add_sweep_tx(self, *args):
                return await self.lnwatcher.sweepstore.add_sweep_tx(*args)
        
       -class HttpServer(Logger):
       +
       +class PayServer(Logger):
        
            def __init__(self, daemon: 'Daemon'):
                Logger.__init__(self)
       t@@ -191,13 +191,6 @@ class HttpServer(Logger):
                host = self.config.get('payserver_host', 'localhost')
                port = self.config.get('payserver_port')
                root = self.config.get('payserver_root', '/r')
       -        ssl_keyfile = self.config.get('ssl_keyfile')
       -        ssl_certfile = self.config.get('ssl_certfile')
       -        if ssl_keyfile and ssl_certfile:
       -            ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
       -            ssl_context.load_cert_chain(ssl_certfile, ssl_keyfile)
       -        else:
       -            ssl_context = None
                app = web.Application()
                app.add_routes([web.post('/api/create_invoice', self.create_request)])
                app.add_routes([web.get('/api/get_invoice', self.get_request)])
       t@@ -206,7 +199,7 @@ class HttpServer(Logger):
                app.add_routes([web.static(root, 'electrum/www')])
                runner = web.AppRunner(app)
                await runner.setup()
       -        site = web.TCPSite(runner, port=port, host=host, ssl_context=ssl_context)
       +        site = web.TCPSite(runner, port=port, host=host, ssl_context=self.config.get_ssl_context())
                await site.start()
        
            async def create_request(self, request):
       t@@ -294,8 +287,8 @@ class Daemon(Logger):
                    jobs.append(self.start_jsonrpc(config, fd))
                # request server
                if self.config.get('payserver_port'):
       -            self.http_server = HttpServer(self)
       -            jobs.append(self.http_server.run())
       +            self.pay_server = PayServer(self)
       +            jobs.append(self.pay_server.run())
                # server-side watchtower
                self.watchtower = WatchTowerServer(self.network) if self.config.get('watchtower_host') else None
                if self.watchtower:
   DIR diff --git a/electrum/simple_config.py b/electrum/simple_config.py
       t@@ -3,6 +3,7 @@ import threading
        import time
        import os
        import stat
       +import ssl
        from decimal import Decimal
        from typing import Union, Optional
        from numbers import Real
       t@@ -584,6 +585,14 @@ class SimpleConfig(Logger):
                    device = ''
                return device
        
       +    def get_ssl_context(self):
       +        ssl_keyfile = self.get('ssl_keyfile')
       +        ssl_certfile = self.get('ssl_certfile')
       +        if ssl_keyfile and ssl_certfile:
       +            ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
       +            ssl_context.load_cert_chain(ssl_certfile, ssl_keyfile)
       +            return ssl_context
       +
        
        def read_user_config(path):
            """Parse and store the user config settings in electrum.conf into user_config[]."""