chore: remove internal crypto/tls fork in reality server

This commit is contained in:
wwqgtxx
2025-04-13 03:03:28 +08:00
parent 7551c8a545
commit 8fa4e8122c
3 changed files with 12 additions and 13 deletions

View File

@@ -10,12 +10,13 @@ import (
"time"
"github.com/metacubex/mihomo/listener/inner"
"github.com/metacubex/mihomo/log"
"github.com/metacubex/mihomo/ntp"
"github.com/metacubex/reality"
utls "github.com/metacubex/utls"
)
type Conn = reality.Conn
type Conn = utls.Conn
type Config struct {
Dest string
@@ -27,12 +28,13 @@ type Config struct {
}
func (c Config) Build() (*Builder, error) {
realityConfig := &reality.Config{}
realityConfig := &utls.RealityConfig{}
realityConfig.SessionTicketsDisabled = true
realityConfig.Type = "tcp"
realityConfig.Dest = c.Dest
realityConfig.Time = ntp.Now
realityConfig.ServerNames = make(map[string]bool)
realityConfig.Log = log.Debugln
for _, it := range c.ServerNames {
realityConfig.ServerNames[it] = true
}
@@ -72,11 +74,11 @@ func (c Config) Build() (*Builder, error) {
}
type Builder struct {
realityConfig *reality.Config
realityConfig *utls.RealityConfig
}
func (b Builder) NewListener(l net.Listener) net.Listener {
l = reality.NewListener(l, b.realityConfig)
l = utls.NewRealityListener(l, b.realityConfig)
// Due to low implementation quality, the reality server intercepted half close and caused memory leaks.
// We fixed it by calling Close() directly.
l = realityListenerWrapper{l}
@@ -84,7 +86,7 @@ func (b Builder) NewListener(l net.Listener) net.Listener {
}
type realityConnWrapper struct {
*reality.Conn
*utls.Conn
}
func (c realityConnWrapper) Upstream() any {
@@ -104,5 +106,5 @@ func (l realityListenerWrapper) Accept() (net.Conn, error) {
if err != nil {
return nil, err
}
return realityConnWrapper{c.(*reality.Conn)}, nil
return realityConnWrapper{c.(*utls.Conn)}, nil
}