mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-30 15:40:59 +02:00
rpcperms: add RPC interceptor chain
This adds a new package rpcperms which houses the InterceptorChain struct. This is a central place where we'll craft interceptors to use for the GRPC server, which includes macaroon enforcement. This let us add the interceptor chain to the GRPC server before the macaroon service is ready, allowing us to avoid tearing down the GRPC server after the wallet has been unlocked.
This commit is contained in:
36
log.go
36
log.go
@@ -1,8 +1,6 @@
|
||||
package lnd
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/btcsuite/btcd/connmgr"
|
||||
"github.com/btcsuite/btclog"
|
||||
"github.com/lightninglabs/neutrino"
|
||||
@@ -42,7 +40,6 @@ import (
|
||||
"github.com/lightningnetwork/lnd/sweep"
|
||||
"github.com/lightningnetwork/lnd/watchtower"
|
||||
"github.com/lightningnetwork/lnd/watchtower/wtclient"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
// replaceableLogger is a thin wrapper around a logger that is used so the
|
||||
@@ -175,36 +172,3 @@ func (c logClosure) String() string {
|
||||
func newLogClosure(c func() string) logClosure {
|
||||
return logClosure(c)
|
||||
}
|
||||
|
||||
// errorLogUnaryServerInterceptor is a simple UnaryServerInterceptor that will
|
||||
// automatically log any errors that occur when serving a client's unary
|
||||
// request.
|
||||
func errorLogUnaryServerInterceptor(logger btclog.Logger) grpc.UnaryServerInterceptor {
|
||||
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo,
|
||||
handler grpc.UnaryHandler) (interface{}, error) {
|
||||
|
||||
resp, err := handler(ctx, req)
|
||||
if err != nil {
|
||||
// TODO(roasbeef): also log request details?
|
||||
logger.Errorf("[%v]: %v", info.FullMethod, err)
|
||||
}
|
||||
|
||||
return resp, err
|
||||
}
|
||||
}
|
||||
|
||||
// errorLogStreamServerInterceptor is a simple StreamServerInterceptor that
|
||||
// will log any errors that occur while processing a client or server streaming
|
||||
// RPC.
|
||||
func errorLogStreamServerInterceptor(logger btclog.Logger) grpc.StreamServerInterceptor {
|
||||
return func(srv interface{}, ss grpc.ServerStream,
|
||||
info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
|
||||
|
||||
err := handler(srv, ss)
|
||||
if err != nil {
|
||||
logger.Errorf("[%v]: %v", info.FullMethod, err)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user