From ce4f379a8bb9046a4bc96d71c963f3715d571598 Mon Sep 17 00:00:00 2001 From: boufni95 Date: Wed, 29 Oct 2025 18:31:52 +0000 Subject: [PATCH] cleanup --- env.example | 1 + src/services/helpers/envParser.ts | 8 +-- src/services/lnd/lnd.ts | 2 +- src/services/main/adminManager.ts | 5 +- src/services/main/init.ts | 4 +- src/services/main/settings.ts | 89 ++++++------------------- src/services/main/settingsManager.ts | 47 +++---------- src/services/nostr/handler.ts | 31 --------- src/services/storage/settingsStorage.ts | 1 - src/services/wizard/index.ts | 56 ---------------- 10 files changed, 40 insertions(+), 204 deletions(-) diff --git a/env.example b/env.example index 0614df42..527657ae 100644 --- a/env.example +++ b/env.example @@ -15,6 +15,7 @@ # The developer is used by default or you may specify your own # To disable this feature entirely overwrite the env with "null" #LIQUIDITY_PROVIDER_PUB=null +#DISABLE_LIQUIDITY_PROVIDER=false #DB #DATABASE_FILE=db.sqlite diff --git a/src/services/helpers/envParser.ts b/src/services/helpers/envParser.ts index d0838f75..dde3bbb8 100644 --- a/src/services/helpers/envParser.ts +++ b/src/services/helpers/envParser.ts @@ -54,10 +54,4 @@ export const chooseEnvInt = (key: string, dbEnv: Record, defaultValue: boolean, addToDb?: EnvCacher): boolean => { const v = chooseEnv(key, dbEnv, defaultValue.toString(), addToDb) return v.toLowerCase() === 'true' -} - -export type StringSetting = { t: 'string', v?: string, defaultValue: string } -export type NumberSetting = { t: 'number', v?: number, defaultValue: number } -export type BooleanSetting = { t: 'boolean', v?: boolean, defaultValue: boolean } -export type EnvSetting = StringSetting | NumberSetting | BooleanSetting -export type SettingsJson = Record> \ No newline at end of file +} \ No newline at end of file diff --git a/src/services/lnd/lnd.ts b/src/services/lnd/lnd.ts index 24982e73..9e00d996 100644 --- a/src/services/lnd/lnd.ts +++ b/src/services/lnd/lnd.ts @@ -51,7 +51,7 @@ export default class { outgoingOpsLocked = false liquidProvider: LiquidityProvider utils: Utils - constructor(getSettings: () => { lndSettings: LndSettings, lndNodeSettings: LndNodeSettings }, liquidProvider: LiquidityProvider, utils: Utils, addressPaidCb: AddressPaidCb, invoicePaidCb: InvoicePaidCb, newBlockCb: NewBlockCb, htlcCb: HtlcCb, channelEventCb: ChannelEventCb, nodeToUse?: "other" | "third" | "fourth") { + constructor(getSettings: () => { lndSettings: LndSettings, lndNodeSettings: LndNodeSettings }, liquidProvider: LiquidityProvider, utils: Utils, addressPaidCb: AddressPaidCb, invoicePaidCb: InvoicePaidCb, newBlockCb: NewBlockCb, htlcCb: HtlcCb, channelEventCb: ChannelEventCb) { this.getSettings = getSettings this.utils = utils this.addressPaidCb = addressPaidCb diff --git a/src/services/main/adminManager.ts b/src/services/main/adminManager.ts index 97a41bc3..01383599 100644 --- a/src/services/main/adminManager.ts +++ b/src/services/main/adminManager.ts @@ -1,7 +1,6 @@ import fs, { watchFile } from "fs"; import crypto from 'crypto' import { ERROR, getLogger } from "../helpers/logger.js"; -import { getDataPath } from "./settings.js"; import Storage from "../storage/index.js"; import * as Types from '../../../proto/autogenerated/ts/types.js' import LND from "../lnd/lnd.js"; @@ -254,4 +253,8 @@ export class AdminManager { closing_txid: Buffer.from(res.txid).toString('hex') } } +} + +const getDataPath = (dataDir: string, dataPath: string) => { + return dataDir !== "" ? `${dataDir}/${dataPath}` : dataPath } \ No newline at end of file diff --git a/src/services/main/init.ts b/src/services/main/init.ts index 76516143..01d5625a 100644 --- a/src/services/main/init.ts +++ b/src/services/main/init.ts @@ -58,7 +58,7 @@ export const initMainHandler = async (log: PubLogger, settingsManager: SettingsM return mainHandler.storage.applicationStorage.GenerateApplicationKeys(app); } // -- else { - return { privateKey: app.nostr_private_key, publicKey: app.nostr_public_key, appId: app.app_id, name: app.name, avatarUrl: app.avatar_url } + return { privateKey: app.nostr_private_key, publicKey: app.nostr_public_key, appId: app.app_id, name: app.name } } })) const liquidityProviderApp = apps.find(app => defaultNames.includes(app.name)) @@ -80,7 +80,7 @@ export const initMainHandler = async (log: PubLogger, settingsManager: SettingsM await mainHandler.appUserManager.CleanupInactiveUsers() await mainHandler.appUserManager.CleanupNeverActiveUsers() await mainHandler.paymentManager.watchDog.Start() - return { mainHandler, apps, liquidityProviderInfo, liquidityProviderApp, wizard, adminManager, settingsManager } + return { mainHandler, apps, liquidityProviderInfo, liquidityProviderApp, wizard, adminManager } } const processArgs = async (mainHandler: Main) => { diff --git a/src/services/main/settings.ts b/src/services/main/settings.ts index 0886f861..ffe8b138 100644 --- a/src/services/main/settings.ts +++ b/src/services/main/settings.ts @@ -3,15 +3,15 @@ import os from 'os' import path from 'path' export type ServiceFeeSettings = { - incomingTxFee: number // Hot - outgoingTxFee: number // Hot - incomingAppInvoiceFee: number // Hot - incomingAppUserInvoiceFee: number // Hot - outgoingAppInvoiceFee: number // Hot - outgoingAppUserInvoiceFee: number // Hot - outgoingAppUserInvoiceFeeBps: number // Hot - userToUserFee: number // Hot - appToUserFee: number // Hot + incomingTxFee: number + outgoingTxFee: number + incomingAppInvoiceFee: number + incomingAppUserInvoiceFee: number + outgoingAppInvoiceFee: number + outgoingAppUserInvoiceFee: number + outgoingAppUserInvoiceFeeBps: number + userToUserFee: number + appToUserFee: number } export const LoadServiceFeeSettingsFromEnv = (dbEnv: Record, addToDb?: EnvCacher): ServiceFeeSettings => { @@ -30,19 +30,19 @@ export const LoadServiceFeeSettingsFromEnv = (dbEnv: Record { - return process.env[name] || defaultValue; -} - export const LoadNosrtRelaySettingsFromEnv = (dbEnv: Record, addToDb?: EnvCacher): NostrRelaySettings => { const relaysEnv = chooseEnv("NOSTR_RELAYS", dbEnv, "wss://relay.lightning.pub", addToDb); const maxEventContentLength = chooseEnvInt("NOSTR_MAX_EVENT_CONTENT_LENGTH", dbEnv, 40000, addToDb) @@ -208,46 +204,3 @@ export const LoadBitcoinCoreSettingsFromEnv = (): BitcoinCoreSettings => { pass: EnvMustBeNonEmptyString("BITCOIN_CORE_PASS") } } - -/* export const LoadTestSettingsFromEnv = (): TestSettings => { - - const settings = LoadMainSettingsFromEnv() - return { - ...settings, - storageSettings: GetTestStorageSettings(settings.storageSettings), - lndSettings: { - ...settings.lndSettings, - otherNode: { - lndAddr: EnvMustBeNonEmptyString("LND_OTHER_ADDR"), - lndCertPath: EnvMustBeNonEmptyString("LND_OTHER_CERT_PATH"), - lndMacaroonPath: EnvMustBeNonEmptyString("LND_OTHER_MACAROON_PATH") - }, - thirdNode: { - lndAddr: EnvMustBeNonEmptyString("LND_THIRD_ADDR"), - lndCertPath: EnvMustBeNonEmptyString("LND_THIRD_CERT_PATH"), - lndMacaroonPath: EnvMustBeNonEmptyString("LND_THIRD_MACAROON_PATH") - }, - fourthNode: { - lndAddr: EnvMustBeNonEmptyString("LND_FOURTH_ADDR"), - lndCertPath: EnvMustBeNonEmptyString("LND_FOURTH_CERT_PATH"), - lndMacaroonPath: EnvMustBeNonEmptyString("LND_FOURTH_MACAROON_PATH") - }, - }, - liquiditySettings: { - ...settings.liquiditySettings, - liquidityProviderPub: "", - }, - skipSanityCheck: true, - bitcoinCoreSettings: { - port: EnvMustBeInteger("BITCOIN_CORE_PORT"), - user: EnvMustBeNonEmptyString("BITCOIN_CORE_USER"), - pass: EnvMustBeNonEmptyString("BITCOIN_CORE_PASS") - }, - } -} */ - - - -export const getDataPath = (dataDir: string, dataPath: string) => { - return dataDir !== "" ? `${dataDir}/${dataPath}` : dataPath -} diff --git a/src/services/main/settingsManager.ts b/src/services/main/settingsManager.ts index 13dd3614..2de0ab1d 100644 --- a/src/services/main/settingsManager.ts +++ b/src/services/main/settingsManager.ts @@ -1,17 +1,15 @@ import Storage, { StorageSettings } from "../storage/index.js" -import { EnvCacher, EnvSetting, SettingsJson, StringSetting } from "../helpers/envParser.js" +import { EnvCacher } from "../helpers/envParser.js" import { getLogger, PubLogger } from "../helpers/logger.js" import { - BitcoinCoreSettings, LiquiditySettings, LndNodeSettings, LndSettings, LoadBitcoinCoreSettingsFromEnv, - LoadFourthLndSettingsFromEnv, LoadLiquiditySettingsFromEnv, LoadSecondLndSettingsFromEnv, LoadThirdLndSettingsFromEnv, + LiquiditySettings, LndNodeSettings, LndSettings, LoadLiquiditySettingsFromEnv, LoadLSPSettingsFromEnv, LSPSettings, ServiceFeeSettings, ServiceSettings, LoadServiceFeeSettingsFromEnv, - LoadNosrtRelaySettingsFromEnv, LoadServiceSettingsFromEnv, LoadWatchdogSettingsFromEnv + LoadNosrtRelaySettingsFromEnv, LoadServiceSettingsFromEnv, LoadWatchdogSettingsFromEnv, + LoadLndNodeSettingsFromEnv, LoadLndSettingsFromEnv, NostrRelaySettings, WatchdogSettings } from "./settings.js" -import { LoadLndNodeSettingsFromEnv, LoadLndSettingsFromEnv, NostrRelaySettings, WatchdogSettings } from "./settings.js" export default class SettingsManager { storage: Storage private settings: FullSettings | null = null - //private testSettings: TestSettings | null = null log: PubLogger constructor(storage: Storage) { @@ -39,18 +37,6 @@ export default class SettingsManager { this.settings = f(this.settings) } - /* async InitTestSettings(): Promise { - await this.InitSettings() - await this.updateSkipSanityCheck(true) - await this.updateDisableLiquidityProvider(true) - this.testSettings = { - secondLndSettings: LoadSecondLndSettingsFromEnv(), - thirdLndSettings: LoadThirdLndSettingsFromEnv(), - fourthLndSettings: LoadFourthLndSettingsFromEnv(), - bitcoinCoreSettings: LoadBitcoinCoreSettingsFromEnv(), - } - } */ - async InitSettings(): Promise { const dbSettings = await this.storage.settingsStorage.getAllDbEnvs() const toAdd: Record = {} @@ -58,6 +44,7 @@ export default class SettingsManager { toAdd[key] = value } this.settings = this.loadEnvs(dbSettings, addToDb) + this.log("adding", toAdd.length, "settings to db") for (const key in toAdd) { await this.storage.settingsStorage.setDbEnvIFNeeded(key, toAdd[key]) } @@ -75,13 +62,6 @@ export default class SettingsManager { return this.settings } - /* getTestSettings(): TestSettings { - if (!this.testSettings) { - throw new Error("Test settings not initialized") - } - return this.testSettings - } */ - async updateDefaultAppName(name: string): Promise { if (!this.settings) { throw new Error("Settings not initialized") @@ -164,16 +144,9 @@ type FullSettings = { lndNodeSettings: LndNodeSettings lndSettings: LndSettings liquiditySettings: LiquiditySettings - watchDogSettings: WatchdogSettings, // Hot - nostrRelaySettings: NostrRelaySettings, // Hot - serviceFeeSettings: ServiceFeeSettings, // Hot - serviceSettings: ServiceSettings, // Hot + watchDogSettings: WatchdogSettings, + nostrRelaySettings: NostrRelaySettings, + serviceFeeSettings: ServiceFeeSettings, + serviceSettings: ServiceSettings, lspSettings: LSPSettings -} - -/* type TestSettings = { - secondLndSettings: LndNodeSettings - thirdLndSettings: LndNodeSettings - fourthLndSettings: LndNodeSettings - bitcoinCoreSettings: BitcoinCoreSettings -} */ \ No newline at end of file +} \ No newline at end of file diff --git a/src/services/nostr/handler.ts b/src/services/nostr/handler.ts index c576a3c5..80ff8410 100644 --- a/src/services/nostr/handler.ts +++ b/src/services/nostr/handler.ts @@ -207,37 +207,6 @@ export default class Handler { } } - /* async Connect() { - const log = getLogger({}) - log("conneting to relay...", this.settings.relays[0]) - let relay: Relay | null = null - //const relay = relayInit(this.settings.relays[0]) // TODO: create multiple conns for multiple relays - try { - relay = await Relay.connect(this.settings.relays[0]) - if (!relay.connected) { - throw new Error("failed to connect to relay") - } - } catch (err:any) { - log("failed to connect to relay, will try again in 2 seconds", err.message || err) - setTimeout(() => { - this.Connect() - }, 2000) - return - } - - log("connected, subbing...") - relay.onclose = (() => { - log("relay disconnected, will try to reconnect in 2 seconds") - relay.close() - setTimeout(() => { - this.Connect() - }, 2000) - }) - - this.Subscribe(relay) - - } */ - Subscribe(relay: Relay) { const appIds = Object.keys(this.apps) this.log("🔍 [NOSTR SUBSCRIPTION] Setting up subscription", { diff --git a/src/services/storage/settingsStorage.ts b/src/services/storage/settingsStorage.ts index 3b4075e5..ddf76256 100644 --- a/src/services/storage/settingsStorage.ts +++ b/src/services/storage/settingsStorage.ts @@ -1,4 +1,3 @@ -import { EnvSetting, SettingsJson } from "../helpers/envParser.js"; import { StorageInterface } from "./db/storageInterface.js"; import { AdminSettings } from "./entity/AdminSettings.js"; export default class SettingsStorage { diff --git a/src/services/wizard/index.ts b/src/services/wizard/index.ts index 8613941c..761d6deb 100644 --- a/src/services/wizard/index.ts +++ b/src/services/wizard/index.ts @@ -187,13 +187,6 @@ export class Wizard { return } - async updateConfigs(pendingConfig: WizardSettings): Promise { - await this.settings.updateDefaultAppName(pendingConfig.sourceName) - await this.settings.updateRelayUrl(pendingConfig.relayUrl) - await this.settings.updateDisableLiquidityProvider(pendingConfig.automateLiquidity) - await this.settings.updatePushBackupsToNostr(pendingConfig.pushBackupsToNostr) - } - updateDefaultApp = async (currentName: string, avatarUrl?: string): Promise => { const newName = this.settings.getSettings().serviceSettings.defaultAppName try { @@ -207,53 +200,4 @@ export class Wizard { this.log(`Error updating app info: ${(e as Error).message}`) } } - /* - updateEnvFile = (pendingConfig: WizardSettings) => { - let envFileContent: string[] = [] - try { - envFileContent = fs.readFileSync('.env', 'utf-8').split('\n') - } catch (err: any) { - if (err.code !== 'ENOENT') { - throw err - } - } - - const toMerge: string[] = [] - const sourceNameIndex = envFileContent.findIndex(line => line.startsWith('DEFAULT_APP_NAME')) - if (sourceNameIndex === -1) { - toMerge.push(`DEFAULT_APP_NAME=${pendingConfig.sourceName}`) - } else { - envFileContent[sourceNameIndex] = `DEFAULT_APP_NAME=${pendingConfig.sourceName}` - } - - const relayUrlIndex = envFileContent.findIndex(line => line.startsWith('RELAY_URL')) - if (relayUrlIndex === -1) { - toMerge.push(`RELAY_URL=${pendingConfig.relayUrl}`) - } else { - envFileContent[relayUrlIndex] = `RELAY_URL=${pendingConfig.relayUrl}` - } - - const automateLiquidityIndex = envFileContent.findIndex(line => line.startsWith('LIQUIDITY_PROVIDER_PUB')) - if (pendingConfig.automateLiquidity) { - if (automateLiquidityIndex !== -1) { - envFileContent.splice(automateLiquidityIndex, 1) - } - } else { - if (automateLiquidityIndex === -1) { - toMerge.push(`LIQUIDITY_PROVIDER_PUB=null`) - } else { - envFileContent[automateLiquidityIndex] = `LIQUIDITY_PROVIDER_PUB=null` - } - } - - const pushBackupsToNostrIndex = envFileContent.findIndex(line => line.startsWith('PUSH_BACKUPS_TO_NOSTR')) - if (pushBackupsToNostrIndex === -1) { - toMerge.push(`PUSH_BACKUPS_TO_NOSTR=${pendingConfig.pushBackupsToNostr ? 'true' : 'false'}`) - } else { - envFileContent[pushBackupsToNostrIndex] = `PUSH_BACKUPS_TO_NOSTR=${pendingConfig.pushBackupsToNostr ? 'true' : 'false'}` - } - const merged = [...envFileContent, ...toMerge].join('\n') - fs.writeFileSync('.env', merged) - loadEnvFile() - } */ } \ No newline at end of file