|
|
|
@ -209,7 +209,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
if cfg.CPUProfile != "" { |
|
|
|
|
f, err := os.Create(cfg.CPUProfile) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to create CPU profile: %v", |
|
|
|
|
err := fmt.Errorf("unable to create CPU profile: %v", |
|
|
|
|
err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -237,7 +237,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
channeldb.OptionSetSyncFreelist(cfg.SyncFreelist), |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to open channeldb: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to open channeldb: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -256,7 +256,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
cfg.TLSExtraDomains, cfg.RPCListeners, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to load TLS credentials: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to load TLS credentials: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -289,7 +289,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
mainChain.ChainDir, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to initialize neutrino "+ |
|
|
|
|
err := fmt.Errorf("unable to initialize neutrino "+ |
|
|
|
|
"backend: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -364,7 +364,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
restProxyDest, tlsCfg, walletUnlockerListeners, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to set up wallet password "+ |
|
|
|
|
err := fmt.Errorf("unable to set up wallet password "+ |
|
|
|
|
"listeners: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -388,7 +388,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
networkDir, macaroons.IPLockChecker, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to set up macaroon "+ |
|
|
|
|
err := fmt.Errorf("unable to set up macaroon "+ |
|
|
|
|
"authentication: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -398,7 +398,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
// Try to unlock the macaroon store with the private password.
|
|
|
|
|
err = macaroonService.CreateUnlock(&privateWalletPw) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to unlock macaroons: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to unlock macaroons: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -412,7 +412,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
cfg.ReadMacPath, cfg.InvoiceMacPath, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to create macaroons "+ |
|
|
|
|
err := fmt.Errorf("unable to create macaroons "+ |
|
|
|
|
"%v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -429,7 +429,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
walletInitParams.Wallet, neutrinoCS, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to create chain control: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to create chain control: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -448,7 +448,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
}, |
|
|
|
|
}) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to derive node private key: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to derive node private key: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -467,7 +467,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
var err error |
|
|
|
|
towerClientDB, err = wtdb.OpenClientDB(graphDir) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to open watchtower client "+ |
|
|
|
|
err := fmt.Errorf("unable to open watchtower client "+ |
|
|
|
|
"database: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -508,7 +508,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
|
|
|
|
|
towerDB, err := wtdb.OpenTowerDB(towerDBDir) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to open watchtower "+ |
|
|
|
|
err := fmt.Errorf("unable to open watchtower "+ |
|
|
|
|
"database: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -524,7 +524,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
}, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to derive watchtower "+ |
|
|
|
|
err := fmt.Errorf("unable to derive watchtower "+ |
|
|
|
|
"private key: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -561,7 +561,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
|
|
|
|
|
wtConfig, err := cfg.Watchtower.Apply(wtCfg, lncfg.NormalizeAddresses) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to configure watchtower: %v", |
|
|
|
|
err := fmt.Errorf("unable to configure watchtower: %v", |
|
|
|
|
err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -569,7 +569,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
|
|
|
|
|
tower, err = watchtower.New(wtConfig) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to create watchtower: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to create watchtower: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -586,7 +586,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
torController, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to create server: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to create server: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -596,19 +596,19 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
// it at will.
|
|
|
|
|
atplCfg, err := initAutoPilot(server, cfg.Autopilot, mainChain) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to initialize autopilot: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to initialize autopilot: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
atplManager, err := autopilot.NewManager(atplCfg) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to create autopilot manager: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to create autopilot manager: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
if err := atplManager.Start(); err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to start autopilot manager: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to start autopilot manager: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -636,12 +636,12 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
tower, tlsCfg, rpcListeners, chainedAcceptor, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to create RPC server: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to create RPC server: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
if err := rpcServer.Start(); err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to start RPC server: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to start RPC server: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -656,7 +656,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
|
|
|
|
|
_, bestHeight, err := activeChainControl.chainIO.GetBestBlock() |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to determine chain tip: %v", |
|
|
|
|
err := fmt.Errorf("unable to determine chain tip: %v", |
|
|
|
|
err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -672,7 +672,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
|
|
|
|
|
synced, _, err := activeChainControl.wallet.IsSynced() |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to determine if "+ |
|
|
|
|
err := fmt.Errorf("unable to determine if "+ |
|
|
|
|
"wallet is synced: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -687,7 +687,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
|
|
|
|
|
_, bestHeight, err = activeChainControl.chainIO.GetBestBlock() |
|
|
|
|
if err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to determine chain tip: %v", |
|
|
|
|
err := fmt.Errorf("unable to determine chain tip: %v", |
|
|
|
|
err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -700,7 +700,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
// With all the relevant chains initialized, we can finally start the
|
|
|
|
|
// server itself.
|
|
|
|
|
if err := server.Start(); err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to start server: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to start server: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
@ -711,7 +711,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
// stopped together with the autopilot service.
|
|
|
|
|
if cfg.Autopilot.Active { |
|
|
|
|
if err := atplManager.StartAgent(); err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to start autopilot agent: %v", |
|
|
|
|
err := fmt.Errorf("unable to start autopilot agent: %v", |
|
|
|
|
err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
@ -720,7 +720,7 @@ func Main(lisCfg ListenerCfg) error {
|
|
|
|
|
|
|
|
|
|
if cfg.Watchtower.Active { |
|
|
|
|
if err := tower.Start(); err != nil { |
|
|
|
|
err := fmt.Errorf("Unable to start watchtower: %v", err) |
|
|
|
|
err := fmt.Errorf("unable to start watchtower: %v", err) |
|
|
|
|
ltndLog.Error(err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|