Browse Source

fix: evaluate lnd flags, fix AdminMacPath

make_cert_optional
Otto Suess 7 years ago
parent
commit
37fc646c07
No known key found for this signature in database GPG Key ID: 354749C62B4BAC41
  1. 24
      config.go
  2. 17
      zapconnect.go

24
config.go

@ -12,6 +12,7 @@ import (
const ( const (
defaultConfigFilename = "lnd.conf" defaultConfigFilename = "lnd.conf"
defaultDataDirname = "data"
defaultTLSCertFilename = "tls.cert" defaultTLSCertFilename = "tls.cert"
defaultAdminMacFilename = "admin.macaroon" defaultAdminMacFilename = "admin.macaroon"
) )
@ -19,6 +20,7 @@ const (
var ( var (
defaultLndDir = btcutil.AppDataDir("lnd", false) defaultLndDir = btcutil.AppDataDir("lnd", false)
defaultConfigFile = filepath.Join(defaultLndDir, defaultConfigFilename) defaultConfigFile = filepath.Join(defaultLndDir, defaultConfigFilename)
defaultDataDir = filepath.Join(defaultLndDir, defaultDataDirname)
defaultTLSCertPath = filepath.Join(defaultLndDir, defaultTLSCertFilename) defaultTLSCertPath = filepath.Join(defaultLndDir, defaultTLSCertFilename)
defaultAdminMacPath = filepath.Join(defaultLndDir, defaultAdminMacFilename) defaultAdminMacPath = filepath.Join(defaultLndDir, defaultAdminMacFilename)
) )
@ -28,8 +30,11 @@ var (
// See loadConfig for further details regarding the configuration // See loadConfig for further details regarding the configuration
// loading+parsing process. // loading+parsing process.
type config struct { type config struct {
LocalIp bool `short:"i" long:"localip" description:"Include local ip in QRCode."`
Json bool `short:"j" long:"json" description:"Generate json instead of a QRCode."`
LndDir string `long:"lnddir" description:"The base directory that contains lnd's data, logs, configuration file, etc."` LndDir string `long:"lnddir" description:"The base directory that contains lnd's data, logs, configuration file, etc."`
ConfigFile string `long:"C" long:"configfile" description:"Path to configuration file"` ConfigFile string `long:"C" long:"configfile" description:"Path to configuration file"`
DataDir string `short:"b" long:"datadir" description:"The directory to store lnd's data within"`
TLSCertPath string `long:"tlscertpath" description:"Path to write the TLS certificate for lnd's RPC and REST services"` TLSCertPath string `long:"tlscertpath" description:"Path to write the TLS certificate for lnd's RPC and REST services"`
AdminMacPath string `long:"adminmacaroonpath" description:"Path to write the admin macaroon for lnd's RPC and REST services if it doesn't exist"` AdminMacPath string `long:"adminmacaroonpath" description:"Path to write the admin macaroon for lnd's RPC and REST services if it doesn't exist"`
} }
@ -38,17 +43,34 @@ func loadConfig() (*config, error) {
defaultCfg := config{ defaultCfg := config{
LndDir: defaultLndDir, LndDir: defaultLndDir,
ConfigFile: defaultConfigFile, ConfigFile: defaultConfigFile,
DataDir: defaultDataDir,
TLSCertPath: defaultTLSCertPath, TLSCertPath: defaultTLSCertPath,
AdminMacPath: defaultAdminMacPath, AdminMacPath: defaultAdminMacPath,
} }
cfg := defaultCfg // Pre-parse the command line options to pick up an alternative config
// file.
preCfg := defaultCfg
if _, err := flags.Parse(&preCfg); err != nil {
return nil, err
}
cfg := preCfg
configFile := cleanAndExpandPath(defaultCfg.ConfigFile) configFile := cleanAndExpandPath(defaultCfg.ConfigFile)
flags.IniParse(configFile, &cfg) flags.IniParse(configFile, &cfg)
cfg.TLSCertPath = cleanAndExpandPath(cfg.TLSCertPath) cfg.TLSCertPath = cleanAndExpandPath(cfg.TLSCertPath)
cfg.AdminMacPath = cleanAndExpandPath(cfg.AdminMacPath) cfg.AdminMacPath = cleanAndExpandPath(cfg.AdminMacPath)
// If a custom macaroon directory wasn't specified and the data
// directory has changed from the default path, then we'll also update
// the path for the macaroons to be generated.
if cfg.DataDir != defaultDataDir && cfg.AdminMacPath == defaultAdminMacPath {
cfg.AdminMacPath = filepath.Join(
cfg.DataDir, defaultAdminMacFilename,
)
}
return &cfg, nil return &cfg, nil
} }

17
zapconnect.go

@ -1,7 +1,7 @@
package main package main
import ( import (
"flag" // "flag"
"fmt" "fmt"
"net" "net"
"io/ioutil" "io/ioutil"
@ -52,26 +52,27 @@ func getPublicIP() string {
} }
func main() { func main() {
ipPtr := flag.Bool("i", false, "Include local ip in QRCode.") loadedConfig, err := loadConfig()
jsonPtr := flag.Bool("j", false, "Generate json instead of a QRCode.") if err != nil {
flag.Parse() return
}
loadedConfig, _ := loadConfig()
certBytes, err := ioutil.ReadFile(loadedConfig.TLSCertPath) certBytes, err := ioutil.ReadFile(loadedConfig.TLSCertPath)
if err != nil { if err != nil {
fmt.Print(err) fmt.Print(err)
return
} }
macBytes, err := ioutil.ReadFile(loadedConfig.AdminMacPath) macBytes, err := ioutil.ReadFile(loadedConfig.AdminMacPath)
if err != nil { if err != nil {
fmt.Print(err) fmt.Print(err)
return
} }
sEnc := b64.StdEncoding.EncodeToString([]byte(macBytes)) sEnc := b64.StdEncoding.EncodeToString([]byte(macBytes))
ipString := "" ipString := ""
if *ipPtr { if loadedConfig.LocalIp {
ipString = getLocalIP() + ":10009" ipString = getLocalIP() + ":10009"
} else { } else {
ipString = getPublicIP() + ":10009" ipString = getPublicIP() + ":10009"
@ -84,7 +85,7 @@ func main() {
certB, _ := json.Marshal(cert) certB, _ := json.Marshal(cert)
if *jsonPtr { if loadedConfig.Json {
fmt.Println(string(certB)) fmt.Println(string(certB))
} else { } else {
obj := qrcodeTerminal.New() obj := qrcodeTerminal.New()

Loading…
Cancel
Save