Skip to content

Commit 6d5697c

Browse files
committed
feat: external mode of lnd
1 parent 81986bb commit 6d5697c

File tree

9 files changed

+194
-7
lines changed

9 files changed

+194
-7
lines changed

images/utils/launcher/config/config.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,33 @@ def parse_command_line_arguments(self):
265265
action="store_true",
266266
help="Preserve lndbtc lnd.conf file during updates"
267267
)
268+
group.add_argument(
269+
"--lndbtc.mode",
270+
metavar="<mode>",
271+
choices=["native", "external"],
272+
help="Lndbtc service mode"
273+
)
274+
group.add_argument(
275+
"--lndbtc.rpc-host",
276+
metavar="<hostname>",
277+
help="External lndbtc RPC hostname"
278+
)
279+
group.add_argument(
280+
"--lndbtc.rpc-port",
281+
type=int,
282+
metavar="<port>",
283+
help="External lndbtc RPC port"
284+
)
285+
group.add_argument(
286+
"--lndbtc.certpath",
287+
metavar="<hostname>",
288+
help="External lndbtc TLS certificate file"
289+
)
290+
group.add_argument(
291+
"--lndbtc.macaroonpath",
292+
metavar="<hostname>",
293+
help="External lndbtc admin.macaroon path"
294+
)
268295

269296
group = parser.add_argument_group("lndltc")
270297
group.add_argument(
@@ -277,6 +304,33 @@ def parse_command_line_arguments(self):
277304
action="store_true",
278305
help="Preserve lndltc lnd.conf file during updates"
279306
)
307+
group.add_argument(
308+
"--lndltc.mode",
309+
metavar="<mode>",
310+
choices=["native", "external"],
311+
help="Lndltc service mode"
312+
)
313+
group.add_argument(
314+
"--lndltc.rpc-host",
315+
metavar="<hostname>",
316+
help="External lndltc RPC hostname"
317+
)
318+
group.add_argument(
319+
"--lndltc.rpc-port",
320+
type=int,
321+
metavar="<port>",
322+
help="External lndltc RPC port"
323+
)
324+
group.add_argument(
325+
"--lndltc.certpath",
326+
metavar="<hostname>",
327+
help="External lndltc TLS certificate file"
328+
)
329+
group.add_argument(
330+
"--lndltc.macaroonpath",
331+
metavar="<hostname>",
332+
help="External lndltc admin.macaroon path"
333+
)
280334

281335
group = parser.add_argument_group("connext")
282336
group.add_argument(

images/utils/launcher/config/mainnet.conf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,24 @@
104104
# 10010 - REST port
105105
#expose-ports = ["9735", "10009", "10010"]
106106

107+
#mode = "external"
108+
#rpc-host = "127.0.0.1"
109+
#rpc-port = 10009
110+
#certpath = "$HOME/.lnd/tls.cert"
111+
#macaroonpath = "$HOME/.lnd/data/chain/bitcoin/mainnet/admin.macaroon"
112+
107113
[lndltc]
108114
# 10735 - P2P port
109115
# 11009 - gRPC port
110116
# 11010 - REST port
111117
#expose-ports = ["10735", "11009:10009", "11010:10010"]
112118

119+
#mode = "external"
120+
#rpc-host = "127.0.0.1"
121+
#rpc-port = 10009
122+
#certpath = "$HOME/.lnd/tls.cert"
123+
#macaroonpath = "$HOME/.lnd/data/chain/litecoin/mainnet/admin.macaroon"
124+
113125
[connext]
114126
# 5040 - connext API port
115127
#expose-ports = ["5040"]

images/utils/launcher/config/simnet.conf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,24 @@
1717
# 30010 - REST port
1818
#expose-ports = ["29735", "30009:10009", "30010:10010"]
1919

20+
#mode = "external"
21+
#rpc-host = "127.0.0.1"
22+
#rpc-port = 10009
23+
#certpath = "$HOME/.lnd/tls.cert"
24+
#macaroonpath = "$HOME/.lnd/data/chain/bitcoin/simnet/admin.macaroon"
25+
2026
[lndltc]
2127
# 30735 - P2P port
2228
# 31009 - gRPC port
2329
# 31010 - REST port
2430
#expose-ports = ["30735", "31009:10009", "31010:10010"]
2531

32+
#mode = "external"
33+
#rpc-host = "127.0.0.1"
34+
#rpc-port = 10009
35+
#certpath = "$HOME/.lnd/tls.cert"
36+
#macaroonpath = "$HOME/.lnd/data/chain/litecoin/simnet/admin.macaroon"
37+
2638
[connext]
2739
# 25040 - connext API port
2840
#expose-ports = ["25040:5040"]

images/utils/launcher/config/template.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ def __str__(self):
8787
"mode": "native",
8888
"preserve_config": False,
8989
"use_local_image": False,
90+
"external_rpc_host": None,
91+
"external_rpc_port": None,
92+
"external_certpath": None,
93+
"external_macaroonpath": None,
9094
},
9195
"lndltc": {
9296
"name": "lndltc",
@@ -101,6 +105,10 @@ def __str__(self):
101105
"mode": "native",
102106
"preserve_config": False,
103107
"use_local_image": False,
108+
"external_rpc_host": None,
109+
"external_rpc_port": None,
110+
"external_certpath": None,
111+
"external_macaroonpath": None,
104112
},
105113
"connext": {
106114
"name": "connext",
@@ -282,6 +290,10 @@ def __str__(self):
282290
"mode": "native",
283291
"preserve_config": False,
284292
"use_local_image": False,
293+
"external_rpc_host": None,
294+
"external_rpc_port": None,
295+
"external_certpath": None,
296+
"external_macaroonpath": None,
285297
},
286298
"lndltc": {
287299
"name": "lndltc",
@@ -296,6 +308,10 @@ def __str__(self):
296308
"mode": "native",
297309
"preserve_config": False,
298310
"use_local_image": False,
311+
"external_rpc_host": None,
312+
"external_rpc_port": None,
313+
"external_certpath": None,
314+
"external_macaroonpath": None,
299315
},
300316
"connext": {
301317
"name": "connext",
@@ -500,6 +516,10 @@ def __str__(self):
500516
"mode": "native",
501517
"preserve_config": False,
502518
"use_local_image": False,
519+
"external_rpc_host": None,
520+
"external_rpc_port": None,
521+
"external_certpath": None,
522+
"external_macaroonpath": None,
503523
},
504524
"lndltc": {
505525
"name": "lndltc",
@@ -514,6 +534,10 @@ def __str__(self):
514534
"mode": "native",
515535
"preserve_config": False,
516536
"use_local_image": False,
537+
"external_rpc_host": None,
538+
"external_rpc_port": None,
539+
"external_certpath": None,
540+
"external_macaroonpath": None,
517541
},
518542
"connext": {
519543
"name": "connext",

images/utils/launcher/config/testnet.conf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,24 @@
104104
# 20010 - REST port
105105
#expose-ports = ["19735", "20009:10009", "20010:10010"]
106106

107+
#mode = "external"
108+
#rpc-host = "127.0.0.1"
109+
#rpc-port = 10009
110+
#certpath = "$HOME/.lnd/tls.cert"
111+
#macaroonpath = "$HOME/.lnd/data/chain/bitcoin/testnet/admin.macaroon"
112+
107113
[lndltc]
108114
# 20735 - P2P port
109115
# 21009 - gRPC port
110116
# 21010 - REST port
111117
#expose-ports = ["20735", "21009:10009", "21010:10010"]
112118

119+
#mode = "external"
120+
#rpc-host = "127.0.0.1"
121+
#rpc-port = 10009
122+
#certpath = "$HOME/.lnd/tls.cert"
123+
#macaroonpath = "$HOME/.lnd/data/chain/litecoin/testnet/admin.macaroon"
124+
113125
[connext]
114126
# 15040 - connext API port
115127
#expose-ports = ["15040:5040"]

images/utils/launcher/node/lnd.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,14 @@ def get_current_height(self):
116116
except:
117117
return None
118118

119+
def get_external_status(self) -> str:
120+
# TODO check external status
121+
return "Ready"
122+
119123
def status(self):
124+
if self.mode == "external":
125+
return self.get_external_status()
126+
120127
status = super().status()
121128
if status == "exited":
122129
# TODO analyze exit reason

images/utils/launcher/node/xud.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import json
2-
from .base import Node, CliBackend, CliError
32
import re
3+
from typing import List
4+
5+
from .base import Node, CliBackend, CliError
46

57

68
class XudApiError(Exception):
@@ -40,12 +42,37 @@ class Xud(Node):
4042
def __init__(self, name, ctx):
4143
super().__init__(name, ctx)
4244

43-
self.container_spec.environment.append("NODE_ENV=production")
45+
self.container_spec.environment.extend(self._get_environment())
4446

4547
self._cli = "xucli"
4648

4749
self.api = XudApi(CliBackend(self.client, self.container_name, self._logger, self._cli))
4850

51+
def _get_environment(self) -> List[str]:
52+
env = [
53+
"NODE_ENV=production"
54+
]
55+
56+
lndbtc = self.config.nodes["lndbtc"]
57+
if lndbtc["mode"] == "external":
58+
env.extend([
59+
"LNDBTC_RPC_HOST={}".format(lndbtc["external_rpc_host"]),
60+
"LNDBTC_RPC_PORT={}".format(lndbtc["external_rpc_port"]),
61+
"LNDBTC_CERTPATH={}".format(lndbtc["external_certpath"]),
62+
"LNDBTC_MACAROONPATH={}".format(lndbtc["external_macaroonpath"]),
63+
])
64+
65+
lndltc = self.config.nodes["lndltc"]
66+
if lndltc["mode"] == "external":
67+
env.extend([
68+
"LNDLTC_RPC_HOST={}".format(lndbtc["external_rpc_host"]),
69+
"LNDLTC_RPC_PORT={}".format(lndbtc["external_rpc_port"]),
70+
"LNDLTC_CERTPATH={}".format(lndbtc["external_certpath"]),
71+
"LNDLTC_MACAROONPATH={}".format(lndbtc["external_macaroonpath"]),
72+
])
73+
74+
return env
75+
4976
def status(self):
5077
status = super().status()
5178
if status == "exited":

images/xud/entrypoint.sh

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,31 @@ while [[ ! -e /root/.lndltc/tls.cert ]]; do
7676
sleep 1
7777
done
7878

79+
if [[ -z ${LNDBTC_RPC_HOST:-} ]]; then
80+
LNDBTC_RPC_HOST="lndbtc"
81+
fi
82+
if [[ -z ${LNDBTC_RPC_PORT:-} ]]; then
83+
LNDBTC_RPC_PORT="10009"
84+
fi
85+
if [[ -z ${LNDBTC_CERTPATH:-} ]]; then
86+
LNDBTC_CERTPATH="/root/.lndbtc/tls.cert"
87+
fi
88+
if [[ -z ${LNDBTC_MACAROONPATH:-} ]]; then
89+
LNDBTC_MACAROONPATH="/root/.lndbtc/data/chain/bitcoin/$NETWORK/admin.macaroon"
90+
fi
91+
92+
if [[ -z ${LNDLTC_RPC_HOST:-} ]]; then
93+
LNDLTC_RPC_HOST="lndltc"
94+
fi
95+
if [[ -z ${LNDLTC_RPC_PORT:-} ]]; then
96+
LNDLTC_RPC_PORT="10009"
97+
fi
98+
if [[ -z ${LNDLTC_CERTPATH:-} ]]; then
99+
LNDLTC_CERTPATH="/root/.lndltc/tls.cert"
100+
fi
101+
if [[ -z ${LNDLTC_MACAROONPATH:-} ]]; then
102+
LNDLTC_MACAROONPATH="/root/.lndltc/data/chain/litecoin/$NETWORK/admin.macaroon"
103+
fi
79104

80105
[[ -e $XUD_CONF && $PRESERVE_CONFIG == "true" ]] || {
81106
cp /app/sample-xud.conf $XUD_CONF
@@ -84,11 +109,15 @@ done
84109
sed -i 's/noencrypt.*/noencrypt = false/' $XUD_CONF
85110
sed -i '/\[http/,/^$/s/host.*/host = "0.0.0.0"/' $XUD_CONF
86111
sed -i "/\[http/,/^$/s/port.*/port = $HTTP_PORT/" $XUD_CONF
87-
sed -i '/\[lnd\.BTC/,/^$/s/host.*/host = "lndbtc"/' $XUD_CONF
88-
sed -i "/\[lnd\.BTC/,/^$/s|^$|certpath = \"/root/.lndbtc/tls.cert\"\nmacaroonpath = \"/root/.lndbtc/data/chain/bitcoin/$NETWORK/admin.macaroon\"\n|" $XUD_CONF
89-
sed -i '/\[lnd\.LTC/,/^$/s/host.*/host = "lndltc"/' $XUD_CONF
90-
sed -i '/\[lnd\.LTC/,/^$/s/port.*/port = 10009/' $XUD_CONF
91-
sed -i "/\[lnd\.LTC/,/^$/s|^$|certpath = \"/root/.lndltc/tls.cert\"\nmacaroonpath = \"/root/.lndltc/data/chain/litecoin/$NETWORK/admin.macaroon\"\n|" $XUD_CONF
112+
113+
sed -i "/\[lnd\.BTC/,/^$/s/host.*/host = \"$LNDBTC_RPC_HOST\"/" $XUD_CONF
114+
sed -i "/\[lnd\.BTC/,/^$/s/port.*/port = $LNDBTC_RPC_PORT/" $XUD_CONF
115+
sed -i "/\[lnd\.BTC/,/^$/s|^$|certpath = \"$LNDBTC_CERTPATH\"\nmacaroonpath = \"$LNDBTC_MACAROONPATH\"\n|" $XUD_CONF
116+
117+
sed -i "/\[lnd\.LTC/,/^$/s/host.*/host = \"$LNDLTC_RPC_HOST\"/" $XUD_CONF
118+
sed -i "/\[lnd\.LTC/,/^$/s/port.*/port = $LNDLTC_RPC_PORT/" $XUD_CONF
119+
sed -i "/\[lnd\.LTC/,/^$/s|^$|certpath = \"$LNDLTC_CERTPATH\"\nmacaroonpath = \"$LNDLTC_MACAROONPATH\"\n|" $XUD_CONF
120+
92121
sed -i "/\[p2p/,/^$/s/addresses.*/addresses = \[\"$XUD_ADDRESS\"]/" $XUD_CONF
93122
sed -i "/\[p2p/,/^$/s/port.*/port = $P2P_PORT/" $XUD_CONF
94123
sed -i '/\[p2p/,/^$/s/tor = .*/tor = true/' $XUD_CONF

setup.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,20 @@ Geth options:
6161
Lndbtc options:
6262
--lndbtc.expose-ports <port>[,<port>] Expose lndbtc service ports to your host machine
6363
--lndbtc.preserve-config Preserve lndbtc lnd.conf file during updates
64+
--lndbtc.mode [native|external] Lndbtc service mode (default: native)
65+
--lndbtc.rpc-host <string> External lndbtc RPC hostname
66+
--lndbtc.rpc-port <int> External lndbtc RPC port
67+
--lndbtc.certpath External lndbtc TLS certificate file
68+
--lndbtc.macaroonpath External lndbtc admin.macaroon path
6469
6570
Lndbtc options:
6671
--lndltc.expose-ports <port>[,<port>] Expose lndltc service ports to your host machine
6772
--lndltc.preserve-config Preserve lndltc lnd.conf file during updates
73+
--lndltc.mode [native|external] Lndltc service mode (default: native)
74+
--lndltc.rpc-host <string> External lndltc RPC hostname
75+
--lndltc.rpc-port <int> External lndltc RPC port
76+
--lndltc.certpath External lndltc TLS certificate file
77+
--lndltc.macaroonpath External lndltc admin.macaroon path
6878
6979
Connext options:
7080
--connext.expose-ports <port>[,<port>] Expose connext service ports to your host machine

0 commit comments

Comments
 (0)