From 5e11263ea0dfa3dd57a2dd32822dba54d338496a Mon Sep 17 00:00:00 2001 From: cesaryuan Date: Tue, 11 Mar 2025 21:25:44 +0800 Subject: [PATCH] fix: improve gost websocket plugin handling in shadowsocks adapter --- adapter/outbound/shadowsocks.go | 14 +++++++------- transport/gost-plugin/websocket.go | 4 ---- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/adapter/outbound/shadowsocks.go b/adapter/outbound/shadowsocks.go index eb971910..eb21561a 100644 --- a/adapter/outbound/shadowsocks.go +++ b/adapter/outbound/shadowsocks.go @@ -110,13 +110,13 @@ func (ss *ShadowSocks) StreamConnContext(ctx context.Context, c net.Conn, metada c = obfs.NewHTTPObfs(c, ss.obfsOption.Host, port) case "websocket": var err error - c, err = v2rayObfs.NewV2rayObfs(ctx, c, ss.v2rayOption) - if err != nil { - return nil, fmt.Errorf("%s connect error: %w", ss.addr, err) + if ss.v2rayOption != nil { + c, err = v2rayObfs.NewV2rayObfs(ctx, c, ss.v2rayOption) + } else if ss.gostOption != nil { + c, err = gost.NewGostWebsocket(ctx, c, ss.gostOption) + } else { + return nil, fmt.Errorf("plugin options is required") } - case gost.ModeWebsocket: - var err error - c, err = gost.NewGostWebsocket(ctx, c, ss.gostOption) if err != nil { return nil, fmt.Errorf("%s connect error: %w", ss.addr, err) } @@ -307,7 +307,7 @@ func NewShadowSocks(option ShadowSocksOption) (*ShadowSocks, error) { return nil, fmt.Errorf("ss %s initialize gost-plugin error: %w", addr, err) } - if opts.Mode != gost.ModeWebsocket { + if opts.Mode != "websocket" { return nil, fmt.Errorf("ss %s obfs mode error: %s", addr, opts.Mode) } obfsMode = opts.Mode diff --git a/transport/gost-plugin/websocket.go b/transport/gost-plugin/websocket.go index 064bd917..d052e193 100644 --- a/transport/gost-plugin/websocket.go +++ b/transport/gost-plugin/websocket.go @@ -11,10 +11,6 @@ import ( smux "github.com/sagernet/smux" ) -const ( - ModeWebsocket string = "gost-websocket" -) - // Option is options of gost websocket type Option struct { Host string