From a440e09ac37f14d5028510b67b1a99ab37ec532b Mon Sep 17 00:00:00 2001 From: Dmytro Kislov Date: Mon, 11 Feb 2019 11:08:19 +0000 Subject: [PATCH 1/2] stuff --- proxy/handler.go | 17 +++++++++++++++-- proxy/handler_test.go | 8 +++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/proxy/handler.go b/proxy/handler.go index 752f892..94b5af9 100644 --- a/proxy/handler.go +++ b/proxy/handler.go @@ -1,4 +1,4 @@ -// Copyright 2017 Michal Witkowski. All Rights Reserved. +// Copyright (c) Improbable Worlds Ltd, All Rights Reserved // See LICENSE for licensing terms. package proxy @@ -9,6 +9,8 @@ import ( "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" ) var ( @@ -70,7 +72,18 @@ func (s *handler) handler(srv interface{}, serverStream grpc.ServerStream) error } clientCtx, clientCancel := context.WithCancel(outgoingCtx) - // TODO(mwitkow): Add a `forwarded` header to metadata, https://en.wikipedia.org/wiki/X-Forwarded-For. + md, ok := metadata.FromIncomingContext(clientCtx) + if !ok { + return status.Error(codes.Internal, ":authority header has not been set") + } + authority, ok := md[":authority"] + if !ok { + return status.Error(codes.Internal, ":authority header has not been set") + } + md = md.Copy() // metadata is immutable, copy. + md["x-forwarded-host"] = authority + + clientCtx = metadata.NewOutgoingContext(clientCtx, md) clientStream, err := grpc.NewClientStream(clientCtx, clientStreamDescForProxying, backendConn, fullMethodName) if err != nil { return err diff --git a/proxy/handler_test.go b/proxy/handler_test.go index c811408..1fe5bb3 100644 --- a/proxy/handler_test.go +++ b/proxy/handler_test.go @@ -1,9 +1,10 @@ -// Copyright 2017 Michal Witkowski. All Rights Reserved. +// Copyright (c) Improbable Worlds Ltd, All Rights Reserved // See LICENSE for licensing terms. package proxy_test import ( + "fmt" "io" "log" "net" @@ -13,6 +14,7 @@ import ( "time" "github.com/mwitkow/grpc-proxy/proxy" + pb "github.com/mwitkow/grpc-proxy/testservice" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -21,10 +23,6 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" - - "fmt" - - pb "github.com/mwitkow/grpc-proxy/testservice" ) const ( From f45105b33c5d82e357e9d488ec14b854980964c6 Mon Sep 17 00:00:00 2001 From: Dmytro Kislov Date: Mon, 11 Feb 2019 11:11:15 +0000 Subject: [PATCH 2/2] fixing copy --- proxy/handler.go | 2 +- proxy/handler_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/proxy/handler.go b/proxy/handler.go index 94b5af9..e988ddf 100644 --- a/proxy/handler.go +++ b/proxy/handler.go @@ -1,4 +1,4 @@ -// Copyright (c) Improbable Worlds Ltd, All Rights Reserved +// Copyright 2017 Michal Witkowski. All Rights Reserved. // See LICENSE for licensing terms. package proxy diff --git a/proxy/handler_test.go b/proxy/handler_test.go index 1fe5bb3..e48fb97 100644 --- a/proxy/handler_test.go +++ b/proxy/handler_test.go @@ -1,4 +1,4 @@ -// Copyright (c) Improbable Worlds Ltd, All Rights Reserved +// Copyright 2017 Michal Witkowski. All Rights Reserved. // See LICENSE for licensing terms. package proxy_test