models.go raw
1 package config
2
3 const (
4 LNDBackendType = "LND"
5 LDKBackendType = "LDK"
6 PhoenixBackendType = "PHOENIX"
7 CashuBackendType = "CASHU"
8 CLNBackendType = "CLN"
9 BarkBackendType = "BARK"
10 )
11
12 const (
13 OnchainAddressKey = "OnchainAddress"
14 AutoSwapBalanceThresholdKey = "AutoSwapBalanceThreshold"
15 AutoSwapAmountKey = "AutoSwapAmount"
16 AutoSwapDestinationKey = "AutoSwapDestination"
17 AutoSwapXpubIndexStart = "AutoSwapXpubIndexStart"
18 )
19
20 type AppConfig struct {
21 Relay string `envconfig:"RELAY" default:"wss://relay.mleku.dev,wss://relay.getalby.com,wss://relay2.getalby.com"`
22 LNBackendType string `envconfig:"LN_BACKEND_TYPE"`
23 LNDAddress string `envconfig:"LND_ADDRESS"`
24 LNDCertFile string `envconfig:"LND_CERT_FILE"`
25 LNDMacaroonFile string `envconfig:"LND_MACAROON_FILE"`
26 Workdir string `envconfig:"WORK_DIR"`
27 Port string `envconfig:"PORT" default:"8080"`
28 DatabaseUri string `envconfig:"DATABASE_URI" default:"nwc.db"`
29 LogLevel string `envconfig:"LOG_LEVEL" default:"4"`
30 LogToFile bool `envconfig:"LOG_TO_FILE" default:"true"`
31 Network string `envconfig:"NETWORK"`
32 LDKNetwork string `envconfig:"LDK_NETWORK"`
33 LDKEsploraServer string `envconfig:"LDK_ESPLORA_SERVER" default:"https://electrs.getalbypro.com"` // TODO: remove LDK prefix
34 LDKElectrumServer string `envconfig:"LDK_ELECTRUM_SERVER"`
35 LDKGossipSource string `envconfig:"LDK_GOSSIP_SOURCE"`
36 LDKLogLevel string `envconfig:"LDK_LOG_LEVEL" default:"3"`
37 LDKMaxChannelSaturationPowerOfHalf uint8 `envconfig:"LDK_MAX_CHANNEL_SATURATION" default:"2"`
38 LDKMaxPathCount uint8 `envconfig:"LDK_MAX_PATH_COUNT" default:"5"`
39 LDKChannelMonitorWarningSizeBytes uint64 `envconfig:"LDK_CHANNEL_MONITOR_WARNING_SIZE_BYTES" default:"5000000"`
40 LDKVssUrl string `envconfig:"LDK_VSS_URL" default:"https://vss.getalbypro.com/vss"`
41 LDKLiquiditySourceLsps2 string `envconfig:"LDK_LSPS2_ADDRESSES"`
42 LDKListeningAddresses string `envconfig:"LDK_LISTENING_ADDRESSES" default:"[::]:9735"`
43 LDKAnnouncementAddresses string `envconfig:"LDK_ANNOUNCEMENT_ADDRESSES"`
44 LDKTransientNetworkGraph bool `envconfig:"LDK_TRANSIENT_NETWORK_GRAPH" default:"false"`
45 RebalanceServiceUrl string `envconfig:"REBALANCE_SERVICE_URL" default:"https://megalithic.me"`
46 LDKBitcoindRpcHost string `envconfig:"LDK_BITCOIND_RPC_HOST"`
47 LDKBitcoindRpcPort string `envconfig:"LDK_BITCOIND_RPC_PORT"`
48 LDKBitcoindRpcUser string `envconfig:"LDK_BITCOIND_RPC_USER"`
49 LDKBitcoindRpcPassword string `envconfig:"LDK_BITCOIND_RPC_PASSWORD"`
50 MempoolApi string `envconfig:"MEMPOOL_API" default:"https://mempool.space/api"`
51 AlbyClientId string `envconfig:"ALBY_OAUTH_CLIENT_ID" default:"J2PbXS1yOf"`
52 AlbyClientSecret string `envconfig:"ALBY_OAUTH_CLIENT_SECRET" default:"rABK2n16IWjLTZ9M1uKU"`
53 BaseUrl string `envconfig:"BASE_URL"`
54 FrontendUrl string `envconfig:"FRONTEND_URL"`
55 SendEventsToAlby bool `envconfig:"SEND_EVENTS_TO_ALBY" default:"true"`
56 AutoLinkAlbyAccount bool `envconfig:"AUTO_LINK_ALBY_ACCOUNT" default:"true"`
57 PhoenixdAddress string `envconfig:"PHOENIXD_ADDRESS"`
58 PhoenixdAuthorization string `envconfig:"PHOENIXD_AUTHORIZATION"`
59 GoProfilerAddr string `envconfig:"GO_PROFILER_ADDR"`
60 EnableAdvancedSetup bool `envconfig:"ENABLE_ADVANCED_SETUP" default:"true"`
61 AutoUnlockPassword string `envconfig:"AUTO_UNLOCK_PASSWORD"`
62 LogDBQueries bool `envconfig:"LOG_DB_QUERIES" default:"false"`
63 BoltzApi string `envconfig:"BOLTZ_API" default:"https://api.boltz.exchange"`
64 HideUpdateBanner bool `envconfig:"HIDE_UPDATE_BANNER" default:"false"`
65 CLNAddress string `envconfig:"CLN_ADDRESS"`
66 CLNLightningDir string `envconfig:"CLN_LIGHTNING_DIR"`
67 CLNAddressHold string `envconfig:"CLN_ADDRESS_HOLD"`
68 BarkServer string `envconfig:"BARK_SERVER" default:"https://ark.second.tech"`
69 BarkEsploraServer string `envconfig:"BARK_ESPLORA_SERVER" default:"https://mempool.second.tech/api"`
70 BarkServerAccessToken string `envconfig:"BARK_SERVER_ACCESS_TOKEN"`
71 BarkLogLevel string `envconfig:"BARK_LOG_LEVEL" default:"3"`
72 }
73
74 func (c *AppConfig) IsDefaultClientId() bool {
75 return c.AlbyClientId == "J2PbXS1yOf"
76 }
77
78 func (c *AppConfig) GetBaseFrontendUrl() string {
79 url := c.FrontendUrl
80 if url == "" {
81 url = c.BaseUrl
82 }
83 return url
84 }
85
86 type Config interface {
87 Get(key string, encryptionKey string) (string, error)
88 SetIgnore(key string, value string, encryptionKey string) error
89 SetUpdate(key string, value string, encryptionKey string) error
90 LoadJWTSecret(encryptionKey string) error
91 GetJWTSecret() (string, error)
92 GetRelayUrls() []string
93 GetNetwork() string
94 GetMempoolUrl() string
95 GetEnv() *AppConfig
96 CheckUnlockPassword(password string) bool
97 IsUnlockPasswordCheckSet() (bool, error)
98 ChangeUnlockPassword(currentUnlockPassword string, newUnlockPassword string) error
99 SetAutoUnlockPassword(unlockPassword string) error
100 SaveUnlockPasswordCheck(encryptionKey string) error
101 SetupCompleted() (bool, error)
102 GetCurrency() string
103 SetCurrency(value string) error
104 GetBitcoinDisplayFormat() string
105 SetBitcoinDisplayFormat(value string) error
106 }
107