From d65b51c62b27f0358ee437f6e9f6b39852155ea2 Mon Sep 17 00:00:00 2001 From: Dreamacro <8615343+Dreamacro@users.noreply.github.com> Date: Fri, 2 Oct 2020 11:34:40 +0800 Subject: [PATCH] Feature: http support custom sni --- adapters/outbound/http.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/adapters/outbound/http.go b/adapters/outbound/http.go index e005b329b..840716b85 100644 --- a/adapters/outbound/http.go +++ b/adapters/outbound/http.go @@ -31,6 +31,7 @@ type HttpOption struct { UserName string `proxy:"username,omitempty"` Password string `proxy:"password,omitempty"` TLS bool `proxy:"tls,omitempty"` + SNI string `proxy:"sni,omitempty"` SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"` } @@ -114,10 +115,14 @@ func (h *Http) shakeHand(metadata *C.Metadata, rw io.ReadWriter) error { func NewHttp(option HttpOption) *Http { var tlsConfig *tls.Config if option.TLS { + sni := option.Server + if option.SNI != "" { + sni = option.SNI + } tlsConfig = &tls.Config{ InsecureSkipVerify: option.SkipCertVerify, ClientSessionCache: getClientSessionCache(), - ServerName: option.Server, + ServerName: sni, } }