diff options
author | Ahmad Hassan <ahmad.hassan612@gmail.com> | 2018-10-29 16:34:59 +0200 |
---|---|---|
committer | Ahmad Hassan <ahmad.hassan612@gmail.com> | 2018-10-30 15:52:51 +0200 |
commit | 688dde61f33d69ef3b4b0f2a03f30f092777375a (patch) | |
tree | 1364a4df385738c9cd184bce3ff0a5b2eb509ecc /go/internal/handler/handler.go | |
parent | 9cf3334cb5cdf871266a2b9538589e36efd788e1 (diff) | |
download | gitlab-shell-gitaly-tls.tar.gz |
Add support for gitaly tlsgitaly-tls
Diffstat (limited to 'go/internal/handler/handler.go')
-rw-r--r-- | go/internal/handler/handler.go | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/go/internal/handler/handler.go b/go/internal/handler/handler.go index f8e8bee..abe59ec 100644 --- a/go/internal/handler/handler.go +++ b/go/internal/handler/handler.go @@ -1,11 +1,14 @@ package handler import ( + "crypto/x509" "os" "os/exec" + "strings" "syscall" "google.golang.org/grpc" + "google.golang.org/grpc/credentials" "gitlab.com/gitlab-org/gitaly/auth" "gitlab.com/gitlab-org/gitaly/client" @@ -31,6 +34,14 @@ func Prepare() error { return nil } +func transFormTls(gitalyAddress string) (string, bool) { + if !strings.HasPrefix(gitalyAddress, "tls://") { + return gitalyAddress, false + } + + return strings.Replace(gitalyAddress, "tls://", "tcp://", 1), true +} + func execCommand(command string, args ...string) error { binPath, err := exec.LookPath(command) if err != nil { @@ -41,11 +52,19 @@ func execCommand(command string, args ...string) error { return syscall.Exec(binPath, args, os.Environ()) } -func dialOpts() []grpc.DialOption { +func dialOpts(tls bool) []grpc.DialOption { connOpts := client.DefaultDialOpts if token := os.Getenv("GITALY_TOKEN"); token != "" { connOpts = append(client.DefaultDialOpts, grpc.WithPerRPCCredentials(gitalyauth.RPCCredentialsV2(token))) } + if tls { + certPool, err := x509.SystemCertPool() + if err == nil { + creds := credentials.NewClientTLSFromCert(certPool, "") + connOpts = append(connOpts, grpc.WithTransportCredentials(creds)) + } + } + return connOpts } |