mirror of
https://github.com/lightninglabs/lightning-terminal.git
synced 2026-08-13 12:33:36 +02:00
rpc_proxy+terminal: add LND and LiT to status server
This commit is contained in:
parent
75cfa0b053
commit
0f53f434d0
2 changed files with 60 additions and 20 deletions
21
rpc_proxy.go
21
rpc_proxy.go
|
|
@ -619,18 +619,17 @@ func (p *rpcProxy) checkSubSystemStarted(requestURI string) error {
|
|||
return ErrWaitingToStart
|
||||
}
|
||||
|
||||
// Currently, Lit and LND are not registered with the sub-server
|
||||
// manager, so we let any request for them through.
|
||||
if p.permsMgr.IsSubServerURI(subservers.LIT, requestURI) ||
|
||||
p.permsMgr.IsSubServerURI(subservers.LND, requestURI) {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check that the sub-server manager does have a sub-server registered
|
||||
// that can handle the given URI.
|
||||
handled, system := p.subServerMgr.Handles(requestURI)
|
||||
if !handled {
|
||||
switch {
|
||||
case handled:
|
||||
|
||||
case p.permsMgr.IsSubServerURI(subservers.LIT, requestURI):
|
||||
system = subservers.LIT
|
||||
|
||||
case p.permsMgr.IsSubServerURI(subservers.LND, requestURI):
|
||||
system = subservers.LND
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown gRPC web request: %v", requestURI)
|
||||
}
|
||||
|
||||
|
|
|
|||
59
terminal.go
59
terminal.go
|
|
@ -232,6 +232,10 @@ func (g *LightningTerminal) Run() error {
|
|||
return fmt.Errorf("could not create permissions manager")
|
||||
}
|
||||
|
||||
// Register LND and LiT with the status manager.
|
||||
g.statusMgr.RegisterAndEnableSubServer(subservers.LND)
|
||||
g.statusMgr.RegisterAndEnableSubServer(subservers.LIT)
|
||||
|
||||
// Create the instances of our subservers now so we can hook them up to
|
||||
// lnd once it's fully started.
|
||||
g.subServerMgr = subservers.NewManager(g.permsMgr, g.statusMgr)
|
||||
|
|
@ -273,8 +277,9 @@ func (g *LightningTerminal) Run() error {
|
|||
// could not start or LND could not start or be connected to.
|
||||
startErr := g.start()
|
||||
if startErr != nil {
|
||||
log.Errorf("Error starting Lightning Terminal: %v", startErr)
|
||||
return startErr
|
||||
g.statusMgr.SetErrored(
|
||||
subservers.LIT, "could not start Lit: %v", startErr,
|
||||
)
|
||||
}
|
||||
|
||||
// Now block until we receive an error or the main shutdown
|
||||
|
|
@ -447,8 +452,13 @@ func (g *LightningTerminal) start() error {
|
|||
if e, ok := err.(*flags.Error); err != nil &&
|
||||
(!ok || e.Type != flags.ErrHelp) {
|
||||
|
||||
log.Errorf("Error running main lnd: %v", err)
|
||||
errStr := fmt.Sprintf("Error running main "+
|
||||
"lnd: %v", err)
|
||||
log.Errorf(errStr)
|
||||
|
||||
g.statusMgr.SetErrored(subservers.LND, errStr)
|
||||
g.errQueue.ChanIn() <- err
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -474,10 +484,18 @@ func (g *LightningTerminal) start() error {
|
|||
case <-readyChan:
|
||||
|
||||
case err := <-g.errQueue.ChanOut():
|
||||
return err
|
||||
g.statusMgr.SetErrored(
|
||||
subservers.LND, "error from errQueue channel",
|
||||
)
|
||||
|
||||
return fmt.Errorf("could not start LND: %v", err)
|
||||
|
||||
case <-lndQuit:
|
||||
return nil
|
||||
g.statusMgr.SetErrored(
|
||||
subservers.LND, "lndQuit channel closed",
|
||||
)
|
||||
|
||||
return fmt.Errorf("LND has stopped")
|
||||
|
||||
case <-interceptor.ShutdownChannel():
|
||||
return fmt.Errorf("received the shutdown signal")
|
||||
|
|
@ -507,6 +525,10 @@ func (g *LightningTerminal) start() error {
|
|||
// Connect to LND.
|
||||
g.lndConn, err = connectLND(g.cfg, bufRpcListener)
|
||||
if err != nil {
|
||||
g.statusMgr.SetErrored(
|
||||
subservers.LND, "could not connect to LND: %v", err,
|
||||
)
|
||||
|
||||
return fmt.Errorf("could not connect to LND")
|
||||
}
|
||||
|
||||
|
|
@ -537,6 +559,11 @@ func (g *LightningTerminal) start() error {
|
|||
err)
|
||||
}
|
||||
|
||||
// We can now set the status of LND as running.
|
||||
// This is done _before_ we wait for the macaroon so that
|
||||
// LND commands to create and unlock a wallet can be allowed.
|
||||
g.statusMgr.SetRunning(subservers.LND)
|
||||
|
||||
// Now that we have started the main UI web server, show some useful
|
||||
// information to the user so they can access the web UI easily.
|
||||
if err := g.showStartupInfo(); err != nil {
|
||||
|
|
@ -556,7 +583,11 @@ func (g *LightningTerminal) start() error {
|
|||
return err
|
||||
|
||||
case <-lndQuit:
|
||||
return nil
|
||||
g.statusMgr.SetErrored(
|
||||
subservers.LND, "lndQuit channel closed",
|
||||
)
|
||||
|
||||
return fmt.Errorf("LND has stopped")
|
||||
|
||||
case <-interceptor.ShutdownChannel():
|
||||
return fmt.Errorf("received the shutdown signal")
|
||||
|
|
@ -592,8 +623,11 @@ func (g *LightningTerminal) start() error {
|
|||
// Set up all the LND clients required by LiT.
|
||||
err = g.setUpLNDClients()
|
||||
if err != nil {
|
||||
log.Errorf("Could not set up LND clients: %v", err)
|
||||
return err
|
||||
g.statusMgr.SetErrored(
|
||||
subservers.LND, "could not set up LND clients: %v", err,
|
||||
)
|
||||
|
||||
return fmt.Errorf("could not start LND")
|
||||
}
|
||||
|
||||
// If we're in integrated and stateless init mode, we won't create
|
||||
|
|
@ -622,6 +656,9 @@ func (g *LightningTerminal) start() error {
|
|||
return fmt.Errorf("could not start litd sub-servers: %v", err)
|
||||
}
|
||||
|
||||
// We can now set the status of LiT as running.
|
||||
g.statusMgr.SetRunning(subservers.LIT)
|
||||
|
||||
// Now block until we receive an error or the main shutdown signal.
|
||||
select {
|
||||
case err := <-g.errQueue.ChanOut():
|
||||
|
|
@ -631,7 +668,11 @@ func (g *LightningTerminal) start() error {
|
|||
}
|
||||
|
||||
case <-lndQuit:
|
||||
return nil
|
||||
g.statusMgr.SetErrored(
|
||||
subservers.LND, "lndQuit channel closed",
|
||||
)
|
||||
|
||||
return fmt.Errorf("LND is not running")
|
||||
|
||||
case <-interceptor.ShutdownChannel():
|
||||
log.Infof("Shutdown signal received")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue