tAdd support for multiple hostnames, e.g. Tor hidden service. - obelisk - Electrum server using libbitcoin as its backend
git clone https://git.parazyd.org/obelisk
Log
Files
Refs
README
LICENSE
---
commit 82ce1faffe224f34f490d96c3b658216c5a60316
parent f40c874ad0015bcacce35680e6ee8d49cb0bb0ad
Author: parazyd 
Date:   Fri, 16 Apr 2021 12:24:59 +0200

Add support for multiple hostnames, e.g. Tor hidden service.

Diffstat:
  M obelisk/obelisk                     |       3 ++-
  M obelisk/protocol.py                 |      11 +++++------
  M res/obelisk.cfg                     |       1 +

3 files changed, 8 insertions(+), 7 deletions(-)
---
diff --git a/obelisk/obelisk b/obelisk/obelisk
t@@ -58,7 +58,8 @@ async def run_electrum_server(config, chain):
     endpoints["trans"] = config.get("obelisk", "trans")
 
     server_cfg = {}
-    server_cfg["server_hostname"] = config.get("obelisk", "hostname")
+    hostname_list = config.get("obelisk", "hostname").split(",")
+    server_cfg["server_hostnames"] = hostname_list
     server_cfg["server_port"] = port
 
     global PROTOCOL
diff --git a/obelisk/protocol.py b/obelisk/protocol.py
t@@ -653,15 +653,14 @@ class ElectrumProtocol(asyncio.Protocol):  # pylint: disable=R0904,R0902
         Return a list of features and services supported by the server.
         """
         cfg = self.server_cfg
+        hosts = {}
+        for host in cfg["server_hostnames"]:
+            hosts[host] = {"tcp_port": cfg["server_port"]}
+
         return {
             "result": {
                 "genesis_hash": self.genesis,
-                "hosts": {
-                    cfg["server_hostname"]: {
-                        "tcp_port": cfg["server_port"],
-                        "ssl_port": None,
-                    },
-                },
+                "hosts": hosts,
                 "protocol_max": SERVER_PROTO_MAX,
                 "protocol_min": SERVER_PROTO_MIN,
                 "pruning": None,
diff --git a/res/obelisk.cfg b/res/obelisk.cfg
t@@ -4,6 +4,7 @@
 host = 127.0.0.1
 port = 50003
 # Public hostname for the server, ideally a valid domain or reachable IP
+# (comma-separated if there are more, e.g. Tor hidden service)
 hostname = localhost
 
 # Which chain should this instance of obelisk be using (mainnet/testnet)