diff --git a/lnrpc/chainrpc/chainnotifier_server.go b/lnrpc/chainrpc/chainnotifier_server.go index fea947ff..3e35ab60 100644 --- a/lnrpc/chainrpc/chainnotifier_server.go +++ b/lnrpc/chainrpc/chainnotifier_server.go @@ -72,16 +72,6 @@ var ( "still in the process of starting") ) -// fileExists reports whether the named file or directory exists. -func fileExists(name string) bool { - if _, err := os.Stat(name); err != nil { - if os.IsNotExist(err) { - return false - } - } - return true -} - // Server is a sub-server of the main RPC server: the chain notifier RPC. This // RPC sub-server allows external callers to access the full chain notifier // capabilities of lnd. This allows callers to create custom protocols, external @@ -111,9 +101,12 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { } // Now that we know the full path of the chain notifier macaroon, we can - // check to see if we need to create it or not. + // check to see if we need to create it or not. If stateless_init is set + // then we don't write the macaroons. macFilePath := cfg.ChainNotifierMacPath - if cfg.MacService != nil && !fileExists(macFilePath) { + if cfg.MacService != nil && !cfg.MacService.StatelessInit && + !lnrpc.FileExists(macFilePath) { + log.Infof("Baking macaroons for ChainNotifier RPC Server at: %v", macFilePath) @@ -121,8 +114,7 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { // doesn't yet, exist, so we need to create it with the help of // the main macaroon service. chainNotifierMac, err := cfg.MacService.NewMacaroon( - context.Background(), - macaroons.DefaultRootKeyID, + context.Background(), macaroons.DefaultRootKeyID, macaroonOps..., ) if err != nil { @@ -134,7 +126,7 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { } err = ioutil.WriteFile(macFilePath, chainNotifierMacBytes, 0644) if err != nil { - os.Remove(macFilePath) + _ = os.Remove(macFilePath) return nil, nil, err } } diff --git a/lnrpc/invoicesrpc/invoices_server.go b/lnrpc/invoicesrpc/invoices_server.go index 6ed36b0f..06024212 100644 --- a/lnrpc/invoicesrpc/invoices_server.go +++ b/lnrpc/invoicesrpc/invoices_server.go @@ -92,8 +92,11 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { ) // Now that we know the full path of the invoices macaroon, we can - // check to see if we need to create it or not. - if !lnrpc.FileExists(macFilePath) && cfg.MacService != nil { + // check to see if we need to create it or not. If stateless_init is set + // then we don't write the macaroons. + if cfg.MacService != nil && !cfg.MacService.StatelessInit && + !lnrpc.FileExists(macFilePath) { + log.Infof("Baking macaroons for invoices RPC Server at: %v", macFilePath) @@ -113,7 +116,7 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { } err = ioutil.WriteFile(macFilePath, invoicesMacBytes, 0644) if err != nil { - os.Remove(macFilePath) + _ = os.Remove(macFilePath) return nil, nil, err } } diff --git a/lnrpc/routerrpc/router_server.go b/lnrpc/routerrpc/router_server.go index d6cd505d..37515ffd 100644 --- a/lnrpc/routerrpc/router_server.go +++ b/lnrpc/routerrpc/router_server.go @@ -131,16 +131,6 @@ type Server struct { // gRPC service. var _ RouterServer = (*Server)(nil) -// fileExists reports whether the named file or directory exists. -func fileExists(name string) bool { - if _, err := os.Stat(name); err != nil { - if os.IsNotExist(err) { - return false - } - } - return true -} - // New creates a new instance of the RouterServer given a configuration struct // that contains all external dependencies. If the target macaroon exists, and // we're unable to create it, then an error will be returned. We also return @@ -156,9 +146,12 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { } // Now that we know the full path of the router macaroon, we can check - // to see if we need to create it or not. + // to see if we need to create it or not. If stateless_init is set + // then we don't write the macaroons. macFilePath := cfg.RouterMacPath - if !fileExists(macFilePath) && cfg.MacService != nil { + if cfg.MacService != nil && !cfg.MacService.StatelessInit && + !lnrpc.FileExists(macFilePath) { + log.Infof("Making macaroons for Router RPC Server at: %v", macFilePath) @@ -178,7 +171,7 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { } err = ioutil.WriteFile(macFilePath, routerMacBytes, 0644) if err != nil { - os.Remove(macFilePath) + _ = os.Remove(macFilePath) return nil, nil, err } } diff --git a/lnrpc/signrpc/signer_server.go b/lnrpc/signrpc/signer_server.go index 41faba58..fdeb3f58 100644 --- a/lnrpc/signrpc/signer_server.go +++ b/lnrpc/signrpc/signer_server.go @@ -103,9 +103,12 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { } // Now that we know the full path of the signer macaroon, we can check - // to see if we need to create it or not. + // to see if we need to create it or not. If stateless_init is set + // then we don't write the macaroons. macFilePath := cfg.SignerMacPath - if cfg.MacService != nil && !lnrpc.FileExists(macFilePath) { + if cfg.MacService != nil && !cfg.MacService.StatelessInit && + !lnrpc.FileExists(macFilePath) { + log.Infof("Making macaroons for Signer RPC Server at: %v", macFilePath) @@ -125,7 +128,7 @@ func New(cfg *Config) (*Server, lnrpc.MacaroonPerms, error) { } err = ioutil.WriteFile(macFilePath, signerMacBytes, 0644) if err != nil { - os.Remove(macFilePath) + _ = os.Remove(macFilePath) return nil, nil, err } } diff --git a/lnrpc/walletrpc/walletkit_server.go b/lnrpc/walletrpc/walletkit_server.go index 98be2768..90b89f5e 100644 --- a/lnrpc/walletrpc/walletkit_server.go +++ b/lnrpc/walletrpc/walletkit_server.go @@ -170,9 +170,12 @@ func New(cfg *Config) (*WalletKit, lnrpc.MacaroonPerms, error) { } // Now that we know the full path of the wallet kit macaroon, we can - // check to see if we need to create it or not. + // check to see if we need to create it or not. If stateless_init is set + // then we don't write the macaroons. macFilePath := cfg.WalletKitMacPath - if !lnrpc.FileExists(macFilePath) && cfg.MacService != nil { + if cfg.MacService != nil && !cfg.MacService.StatelessInit && + !lnrpc.FileExists(macFilePath) { + log.Infof("Baking macaroons for WalletKit RPC Server at: %v", macFilePath) @@ -180,8 +183,7 @@ func New(cfg *Config) (*WalletKit, lnrpc.MacaroonPerms, error) { // yet, exist, so we need to create it with the help of the // main macaroon service. walletKitMac, err := cfg.MacService.NewMacaroon( - context.Background(), - macaroons.DefaultRootKeyID, + context.Background(), macaroons.DefaultRootKeyID, macaroonOps..., ) if err != nil { @@ -193,7 +195,7 @@ func New(cfg *Config) (*WalletKit, lnrpc.MacaroonPerms, error) { } err = ioutil.WriteFile(macFilePath, walletKitMacBytes, 0644) if err != nil { - os.Remove(macFilePath) + _ = os.Remove(macFilePath) return nil, nil, err } }