From 2d3d8188d62a3f8dbce9efb1484f71c148dcc297 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sun, 11 Oct 2020 11:52:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81HTTPS=E7=9A=84API=E8=8A=82?= =?UTF-8?q?=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/rpc/rpc_client.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/internal/rpc/rpc_client.go b/internal/rpc/rpc_client.go index ecfb795..a97752e 100644 --- a/internal/rpc/rpc_client.go +++ b/internal/rpc/rpc_client.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "crypto/tls" "encoding/base64" "errors" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" @@ -12,7 +13,9 @@ import ( "github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/rands" "google.golang.org/grpc" + "google.golang.org/grpc/credentials" "google.golang.org/grpc/metadata" + "net/url" "time" ) @@ -28,7 +31,20 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) { conns := []*grpc.ClientConn{} for _, endpoint := range apiConfig.RPC.Endpoints { - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) + u, err := url.Parse(endpoint) + if err != nil { + return nil, errors.New("parse endpoint failed: " + err.Error()) + } + var conn *grpc.ClientConn + if u.Scheme == "http" { + conn, err = grpc.Dial(u.Host, grpc.WithInsecure()) + } else if u.Scheme == "https" { + conn, err = grpc.Dial(u.Host, grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{ + InsecureSkipVerify: true, + }))) + } else { + return nil, errors.New("parse endpoint failed: invalid scheme '" + u.Scheme + "'") + } if err != nil { return nil, err }