From 758e4d4f4c5eab99f5d64e2003919a31d5aea558 Mon Sep 17 00:00:00 2001 From: softsimon Date: Tue, 21 Mar 2023 15:49:38 +0900 Subject: [PATCH 1/4] Disable LN on macaroon fail --- backend/src/api/lightning/lnd/lnd-api.ts | 25 +++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/backend/src/api/lightning/lnd/lnd-api.ts b/backend/src/api/lightning/lnd/lnd-api.ts index 31b868df9..fb5991111 100644 --- a/backend/src/api/lightning/lnd/lnd-api.ts +++ b/backend/src/api/lightning/lnd/lnd-api.ts @@ -4,21 +4,28 @@ import * as fs from 'fs'; import { AbstractLightningApi } from '../lightning-api-abstract-factory'; import { ILightningApi } from '../lightning-api.interface'; import config from '../../../config'; +import logger from '../../../logger'; class LndApi implements AbstractLightningApi { axiosConfig: AxiosRequestConfig = {}; constructor() { if (config.LIGHTNING.ENABLED) { - this.axiosConfig = { - headers: { - 'Grpc-Metadata-macaroon': fs.readFileSync(config.LND.MACAROON_PATH).toString('hex') - }, - httpsAgent: new Agent({ - ca: fs.readFileSync(config.LND.TLS_CERT_PATH) - }), - timeout: config.LND.TIMEOUT - }; + try { + const macaroon = fs.readFileSync(config.LND.MACAROON_PATH).toString('hex'); + this.axiosConfig = { + headers: { + 'Grpc-Metadata-macaroon': macaroon + }, + httpsAgent: new Agent({ + ca: fs.readFileSync(config.LND.TLS_CERT_PATH) + }), + timeout: config.LND.TIMEOUT + }; + } catch (e) { + logger.err(`Could not initialize LND Macaroon/TLS Cert. Disabling LIGHTNING. ` + (e instanceof Error ? e.message : e)); + config.LIGHTNING.ENABLED = false; + } } } From d337bf3ee2919821b2128afc5336f7557bee6ff4 Mon Sep 17 00:00:00 2001 From: softsimon Date: Tue, 21 Mar 2023 15:50:33 +0900 Subject: [PATCH 2/4] Turn off LN if Macaroon is missing --- backend/src/api/lightning/lnd/lnd-api.ts | 32 ++++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/backend/src/api/lightning/lnd/lnd-api.ts b/backend/src/api/lightning/lnd/lnd-api.ts index fb5991111..7db792178 100644 --- a/backend/src/api/lightning/lnd/lnd-api.ts +++ b/backend/src/api/lightning/lnd/lnd-api.ts @@ -10,22 +10,22 @@ class LndApi implements AbstractLightningApi { axiosConfig: AxiosRequestConfig = {}; constructor() { - if (config.LIGHTNING.ENABLED) { - try { - const macaroon = fs.readFileSync(config.LND.MACAROON_PATH).toString('hex'); - this.axiosConfig = { - headers: { - 'Grpc-Metadata-macaroon': macaroon - }, - httpsAgent: new Agent({ - ca: fs.readFileSync(config.LND.TLS_CERT_PATH) - }), - timeout: config.LND.TIMEOUT - }; - } catch (e) { - logger.err(`Could not initialize LND Macaroon/TLS Cert. Disabling LIGHTNING. ` + (e instanceof Error ? e.message : e)); - config.LIGHTNING.ENABLED = false; - } + if (!config.LIGHTNING.ENABLED) { + return; + } + try { + this.axiosConfig = { + headers: { + 'Grpc-Metadata-macaroon': fs.readFileSync(config.LND.MACAROON_PATH).toString('hex'), + }, + httpsAgent: new Agent({ + ca: fs.readFileSync(config.LND.TLS_CERT_PATH) + }), + timeout: config.LND.TIMEOUT + }; + } catch (e) { + logger.err(`Could not initialize LND Macaroon/TLS Cert. Disabling LIGHTNING. ` + (e instanceof Error ? e.message : e)); + config.LIGHTNING.ENABLED = false; } } From cb8fdb5e8de98f3bede276fa18ed4d6874266c38 Mon Sep 17 00:00:00 2001 From: wiz Date: Tue, 21 Mar 2023 15:56:11 +0900 Subject: [PATCH 3/4] Hack docker frontend entrypoint to auto-enable lightning --- docker/frontend/entrypoint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/frontend/entrypoint.sh b/docker/frontend/entrypoint.sh index 45d852c45..1721bcad5 100644 --- a/docker/frontend/entrypoint.sh +++ b/docker/frontend/entrypoint.sh @@ -10,6 +10,8 @@ cp /etc/nginx/nginx.conf /patch/nginx.conf sed -i "s/__MEMPOOL_FRONTEND_HTTP_PORT__/${__MEMPOOL_FRONTEND_HTTP_PORT__}/g" /patch/nginx.conf cat /patch/nginx.conf > /etc/nginx/nginx.conf +[ "${APP_LIGHTNING_NODE_PORT}" = "9735" ] && LIGHTNING=true + # Runtime overrides - read env vars defined in docker compose __TESTNET_ENABLED__=${TESTNET_ENABLED:=false} From 45dbc6c6f6afc775c35a1854667c551eab5fd72c Mon Sep 17 00:00:00 2001 From: softsimon Date: Tue, 21 Mar 2023 16:21:11 +0900 Subject: [PATCH 4/4] Update logger network after modifying config --- backend/src/api/lightning/lnd/lnd-api.ts | 3 ++- backend/src/logger.ts | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/src/api/lightning/lnd/lnd-api.ts b/backend/src/api/lightning/lnd/lnd-api.ts index 7db792178..b4c91d36e 100644 --- a/backend/src/api/lightning/lnd/lnd-api.ts +++ b/backend/src/api/lightning/lnd/lnd-api.ts @@ -24,8 +24,9 @@ class LndApi implements AbstractLightningApi { timeout: config.LND.TIMEOUT }; } catch (e) { - logger.err(`Could not initialize LND Macaroon/TLS Cert. Disabling LIGHTNING. ` + (e instanceof Error ? e.message : e)); config.LIGHTNING.ENABLED = false; + logger.updateNetwork(); + logger.err(`Could not initialize LND Macaroon/TLS Cert. Disabling LIGHTNING. ` + (e instanceof Error ? e.message : e)); } } diff --git a/backend/src/logger.ts b/backend/src/logger.ts index 634f8f582..efafe894e 100644 --- a/backend/src/logger.ts +++ b/backend/src/logger.ts @@ -69,6 +69,10 @@ class Logger { this.network = this.getNetwork(); } + public updateNetwork(): void { + this.network = this.getNetwork(); + } + private addprio(prio): void { this[prio] = (function(_this) { return function(msg, tag?: string) {