diff --git a/cmd/server/main.go b/cmd/server/main.go index 9baf5cd..e35e842 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -16,6 +16,7 @@ import ( "github.com/sirupsen/logrus" "google.golang.org/grpc" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/reflection" @@ -85,10 +86,17 @@ func logInterceptor( } func loggerFromContext(ctx context.Context) *logrus.Entry { - // TODO: anonymize the addresses. cryptopan? + if xRealIP, ok := metadata.FromIncomingContext(ctx); ok { + realIP := xRealIP.Get("x-real-ip") + if len(realIP) > 0 { + return log.WithFields(logrus.Fields{"peer_addr": realIP[0]}) + } + } + if peerInfo, ok := peer.FromContext(ctx); ok { return log.WithFields(logrus.Fields{"peer_addr": peerInfo.Addr}) } + return log.WithFields(logrus.Fields{"peer_addr": "unknown"}) } diff --git a/frontend/service.go b/frontend/service.go index a79f5b0..5e11a3f 100644 --- a/frontend/service.go +++ b/frontend/service.go @@ -15,6 +15,7 @@ import ( "github.com/btcsuite/btcd/rpcclient" "github.com/sirupsen/logrus" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "github.com/adityapk00/lightwalletd/common" @@ -144,20 +145,21 @@ func (s *SqlStreamer) GetAddressTxids(addressBlockFilter *walletrpc.TransparentA } func (s *SqlStreamer) peerIPFromContext(ctx context.Context) string { - var peerip string + if xRealIP, ok := metadata.FromIncomingContext(ctx); ok { + realIP := xRealIP.Get("x-real-ip") + if len(realIP) > 0 { + return realIP[0] + } + } if peerInfo, ok := peer.FromContext(ctx); ok { ip, _, err := net.SplitHostPort(peerInfo.Addr.String()) if err == nil { - peerip = ip - } else { - peerip = "unknown" + return ip } - } else { - peerip = "unknown" } - return peerip + return "unknown" } func (s *SqlStreamer) dailyActiveBlock(height uint64, peerip string) {