mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2024-11-16 19:56:51 +08:00
Fix: vmess pure TLS mode
This commit is contained in:
parent
19f809b1c8
commit
5591e15452
|
@ -77,7 +77,18 @@ func (v *Vmess) StreamConn(c net.Conn, metadata *C.Metadata) (net.Conn, error) {
|
||||||
Headers: v.option.HTTPOpts.Headers,
|
Headers: v.option.HTTPOpts.Headers,
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err = vmess.StreamHTTPConn(c, httpOpts), nil
|
c = vmess.StreamHTTPConn(c, httpOpts)
|
||||||
|
default:
|
||||||
|
// handle TLS
|
||||||
|
if v.option.TLS {
|
||||||
|
host, _, _ := net.SplitHostPort(v.addr)
|
||||||
|
tlsOpts := &vmess.TLSConfig{
|
||||||
|
Host: host,
|
||||||
|
SkipCertVerify: v.option.SkipCertVerify,
|
||||||
|
SessionCache: getClientSessionCache(),
|
||||||
|
}
|
||||||
|
c, err = vmess.StreamTLSConn(c, tlsOpts)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
24
component/vmess/tls.go
Normal file
24
component/vmess/tls.go
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
package vmess
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/tls"
|
||||||
|
"net"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TLSConfig struct {
|
||||||
|
Host string
|
||||||
|
SkipCertVerify bool
|
||||||
|
SessionCache tls.ClientSessionCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func StreamTLSConn(conn net.Conn, cfg *TLSConfig) (net.Conn, error) {
|
||||||
|
tlsConfig := &tls.Config{
|
||||||
|
ServerName: cfg.Host,
|
||||||
|
InsecureSkipVerify: cfg.SkipCertVerify,
|
||||||
|
ClientSessionCache: cfg.SessionCache,
|
||||||
|
}
|
||||||
|
|
||||||
|
tlsConn := tls.Client(conn, tlsConfig)
|
||||||
|
err := tlsConn.Handshake()
|
||||||
|
return tlsConn, err
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user