فهرست منبع

allow tls connection in http proxy

v2ray 9 سال پیش
والد
کامیت
f2c656843e
2فایلهای تغییر یافته به همراه25 افزوده شده و 1 حذف شده
  1. 19 0
      proxy/http/config.go
  2. 6 1
      proxy/http/http.go

+ 19 - 0
proxy/http/config.go

@@ -16,6 +16,25 @@ type TlsConfig struct {
 	Certs   []*CertificateConfig
 }
 
+func (this *TlsConfig) GetConfig() *tls.Config {
+	if !this.Enabled {
+		return nil
+	}
+
+	config := &tls.Config{
+		InsecureSkipVerify: false,
+	}
+
+	config.Certificates = make([]tls.Certificate, len(this.Certs))
+	for index, cert := range this.Certs {
+		config.Certificates[index] = cert.Certificate
+	}
+
+	config.BuildNameToCertificate()
+
+	return config
+}
+
 type Config struct {
 	OwnHosts  []v2net.Address
 	TlsConfig *TlsConfig

+ 6 - 1
proxy/http/http.go

@@ -2,6 +2,7 @@ package http
 
 import (
 	"bufio"
+	"crypto/tls"
 	"io"
 	"net"
 	"net/http"
@@ -60,7 +61,11 @@ func (this *HttpProxyServer) Listen(port v2net.Port) error {
 	}
 	this.listeningPort = port
 
-	tcpListener, err := hub.ListenTCP(port, this.handleConnection, nil)
+	var tlsConfig *tls.Config = nil
+	if this.config.TlsConfig != nil {
+		tlsConfig = this.config.TlsConfig.GetConfig()
+	}
+	tcpListener, err := hub.ListenTCP(port, this.handleConnection, tlsConfig)
 	if err != nil {
 		log.Error("Http: Failed listen on port ", port, ": ", err)
 		return err