mirror of
https://github.com/getAlby/hub.git
synced 2026-08-13 12:33:39 +02:00
Use $XDG_DATA_HOME as working directory root by default.
This commit is contained in:
parent
daca4e6262
commit
b7ed09d86b
6 changed files with 36 additions and 16 deletions
|
|
@ -1,4 +1,4 @@
|
|||
#DATABASE_URI=file:.data/nwc.db
|
||||
#DATABASE_URI=nwc.db
|
||||
#NOSTR_PRIVKEY=
|
||||
#COOKIE_SECRET=secretsecret
|
||||
#RELAY=wss://relay.getalby.com/v1
|
||||
|
|
@ -9,4 +9,4 @@
|
|||
#LN_BACKEND_TYPE=LND
|
||||
#LND_CERT_FILE=/home/YOUR_USERNAME/.polar/networks/1/volumes/lnd/alice/tls.cert
|
||||
#LND_ADDRESS=127.0.0.1:10001
|
||||
#LND_MACAROON_FILE=/home/YOUR_USERNAME/.polar/networks/1/volumes/lnd/alice/data/chain/bitcoin/regtest/admin.macaroon
|
||||
#LND_MACAROON_FILE=/home/YOUR_USERNAME/.polar/networks/1/volumes/lnd/alice/data/chain/bitcoin/regtest/admin.macaroon
|
||||
|
|
|
|||
|
|
@ -103,9 +103,9 @@ Breez SDK requires gcc to build the Breez bindings. Run `choco install mingw` an
|
|||
- `CLIENT_NOSTR_PUBKEY`: if set, this service will only listen to events authored by this public key. You can set this to your own nostr public key.
|
||||
- `RELAY`: default: "wss://relay.getalby.com/v1"
|
||||
- `COOKIE_SECRET`: a randomly generated secret string. (only needed in http mode)
|
||||
- `DATABASE_URI`: a sqlite filename. Default: .data/nwc.db
|
||||
- `DATABASE_URI`: a sqlite filename. Default: $XDG_DATA_HOME/nostr-wallet-connect/nwc.db
|
||||
- `PORT`: the port on which the app should listen on (default: 8080)
|
||||
- `WORK_DIR`: directory to store NWC data files. Default: .data
|
||||
- `WORK_DIR`: directory to store NWC data files. Default: $XDG_DATA_HOME/nostr-wallet-connect
|
||||
- `LOG_LEVEL`: log level for the application. Higher is more verbose. Default: 4 (info)
|
||||
|
||||
### LND Backend parameters
|
||||
|
|
|
|||
1
go.mod
1
go.mod
|
|
@ -5,6 +5,7 @@ go 1.21
|
|||
toolchain go1.21.1
|
||||
|
||||
require (
|
||||
github.com/adrg/xdg v0.4.0
|
||||
github.com/breez/breez-sdk-go v0.3.4
|
||||
github.com/davrux/echo-logrus/v4 v4.0.3
|
||||
github.com/getAlby/glalby-go v0.0.0-20240319195439-4ec5332e5493
|
||||
|
|
|
|||
3
go.sum
3
go.sum
|
|
@ -45,6 +45,8 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3Q
|
|||
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
|
||||
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls=
|
||||
github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E=
|
||||
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY=
|
||||
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA=
|
||||
github.com/aead/siphash v1.0.1 h1:FwHfE/T45KPKYuuSAKyyvE+oPWcaQ+CUmFW0bPlM+kg=
|
||||
|
|
@ -1100,6 +1102,7 @@ golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ type AppConfig struct {
|
|||
LNDAddress string `envconfig:"LND_ADDRESS"`
|
||||
LNDCertFile string `envconfig:"LND_CERT_FILE"`
|
||||
LNDMacaroonFile string `envconfig:"LND_MACAROON_FILE"`
|
||||
Workdir string `envconfig:"WORK_DIR" default:".data"`
|
||||
Workdir string `envconfig:"WORK_DIR"`
|
||||
Port string `envconfig:"PORT" default:"8080"`
|
||||
DatabaseUri string `envconfig:"DATABASE_URI" default:".data/nwc.db"`
|
||||
DatabaseUri string `envconfig:"DATABASE_URI" default:"nwc.db"`
|
||||
CookieSecret string `envconfig:"COOKIE_SECRET"`
|
||||
LogLevel string `envconfig:"LOG_LEVEL"`
|
||||
LDKNetwork string `envconfig:"LDK_NETWORK" default:"bitcoin"`
|
||||
|
|
|
|||
36
service.go
36
service.go
|
|
@ -2,31 +2,34 @@ package main
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"slices"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/adrg/xdg"
|
||||
"github.com/nbd-wtf/go-nostr"
|
||||
"github.com/nbd-wtf/go-nostr/nip04"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/getAlby/nostr-wallet-connect/migrations"
|
||||
"github.com/getAlby/nostr-wallet-connect/models/config"
|
||||
"github.com/getAlby/nostr-wallet-connect/models/lnclient"
|
||||
"github.com/glebarez/sqlite"
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/kelseyhightower/envconfig"
|
||||
"github.com/orandin/lumberjackrus"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"github.com/getAlby/nostr-wallet-connect/migrations"
|
||||
"github.com/getAlby/nostr-wallet-connect/models/config"
|
||||
"github.com/getAlby/nostr-wallet-connect/models/lnclient"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
|
|
@ -49,6 +52,10 @@ func NewService(ctx context.Context) (*Service, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if appConfig.Workdir == "" {
|
||||
appConfig.Workdir = filepath.Join(xdg.DataHome, "/nostr-wallet-connect")
|
||||
}
|
||||
|
||||
logger := logrus.New()
|
||||
logger.SetFormatter(&logrus.JSONFormatter{})
|
||||
logger.SetOutput(os.Stdout)
|
||||
|
|
@ -80,6 +87,15 @@ func NewService(ctx context.Context) (*Service, error) {
|
|||
}
|
||||
logger.AddHook(fileLoggerHook)
|
||||
|
||||
// If DATABASE_URI is a URI or a path, leave it unchanged.
|
||||
// If it only contains a filename, prepend the workdir.
|
||||
if !strings.HasPrefix(appConfig.DatabaseUri, "file:") {
|
||||
databasePath, _ := filepath.Split(appConfig.DatabaseUri)
|
||||
if databasePath == "" {
|
||||
appConfig.DatabaseUri = filepath.Join(appConfig.Workdir, appConfig.DatabaseUri)
|
||||
}
|
||||
}
|
||||
|
||||
var db *gorm.DB
|
||||
var sqlDb *sql.DB
|
||||
db, err = gorm.Open(sqlite.Open(appConfig.DatabaseUri), &gorm.Config{})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue