Use x-real-ip header

This commit is contained in:
Aditya Kulkarni 2020-05-19 20:12:54 -07:00
parent e96e088f2d
commit af29c003ad
2 changed files with 18 additions and 8 deletions

View File

@ -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"})
}

View File

@ -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) {