diff --git a/cmd/gost/cmd.go b/cmd/gost/cmd.go index 8205e0d..f602fdb 100644 --- a/cmd/gost/cmd.go +++ b/cmd/gost/cmd.go @@ -46,7 +46,7 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) { } } - if v := os.Getenv("GOST_LOGGING_LEVEL"); v != "" { + if v := os.Getenv("GOST_LOGGER_LEVEL"); v != "" { cfg.Log = &config.LogConfig{ Level: v, } diff --git a/cmd/gost/version.go b/cmd/gost/version.go index e63873e..c41c65c 100644 --- a/cmd/gost/version.go +++ b/cmd/gost/version.go @@ -1,5 +1,5 @@ package main const ( - version = "3.0.0-alpha.3" + version = "3.0.0-alpha.4" ) diff --git a/go.mod b/go.mod index 7c842bd..df7ed64 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,8 @@ module github.com/go-gost/gost go 1.18 +replace github.com/templexxx/cpu v0.0.7 => github.com/templexxx/cpu v0.0.10-0.20211111114238-98168dcec14a + require ( github.com/LiamHaworth/go-tproxy v0.0.0-20190726054950-ef7efd7f24ed github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d @@ -20,7 +22,7 @@ require ( github.com/milosgajdos/tenus v0.0.3 github.com/prometheus/client_golang v1.12.1 github.com/rs/xid v1.3.0 - github.com/shadowsocks/go-shadowsocks2 v0.1.4 + github.com/shadowsocks/go-shadowsocks2 v0.1.5 github.com/shadowsocks/shadowsocks-go v0.0.0-20200409064450-3e585ff90601 github.com/sirupsen/logrus v1.8.1 github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 @@ -28,9 +30,9 @@ require ( github.com/xtaci/kcp-go/v5 v5.6.1 github.com/xtaci/smux v1.5.16 github.com/xtaci/tcpraw v1.2.25 - golang.org/x/crypto v0.0.0-20220214200702-86341886e292 + golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70 golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd - golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7 + golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 google.golang.org/grpc v1.44.0 google.golang.org/protobuf v1.27.1 gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index 9edb853..1ed95e6 100644 --- a/go.sum +++ b/go.sum @@ -430,8 +430,8 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shadowsocks/go-shadowsocks2 v0.1.4 h1:4VzajPL7RwwmImysBSvI+lm/UaegDGQq3hr42dYo3gs= -github.com/shadowsocks/go-shadowsocks2 v0.1.4/go.mod h1:AGGpIoek4HRno4xzyFiAtLHkOpcoznZEkAccaI/rplM= +github.com/shadowsocks/go-shadowsocks2 v0.1.5 h1:PDSQv9y2S85Fl7VBeOMF9StzeXZyK1HakRm86CUbr28= +github.com/shadowsocks/go-shadowsocks2 v0.1.5/go.mod h1:AGGpIoek4HRno4xzyFiAtLHkOpcoznZEkAccaI/rplM= github.com/shadowsocks/shadowsocks-go v0.0.0-20200409064450-3e585ff90601 h1:XU9hik0exChEmY92ALW4l9WnDodxLVS9yOSNh2SizaQ= github.com/shadowsocks/shadowsocks-go v0.0.0-20200409064450-3e585ff90601/go.mod h1:mttDPaeLm87u74HMrP+n2tugXvIKWcwff/cqSX0lehY= github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= @@ -489,8 +489,8 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/templexxx/cpu v0.0.1/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk= -github.com/templexxx/cpu v0.0.7 h1:pUEZn8JBy/w5yzdYWgx+0m0xL9uk6j4K91C5kOViAzo= -github.com/templexxx/cpu v0.0.7/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk= +github.com/templexxx/cpu v0.0.10-0.20211111114238-98168dcec14a h1:f0GQM8LuKYnXdNLcAg+di6PULSlR5iQtZT3bDwDRiA0= +github.com/templexxx/cpu v0.0.10-0.20211111114238-98168dcec14a/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk= github.com/templexxx/xorsimd v0.4.1 h1:iUZcywbOYDRAZUasAs2eSCUW8eobuZDy0I9FJiORkVg= github.com/templexxx/xorsimd v0.4.1/go.mod h1:W+ffZz8jJMH2SXwuKu9WhygqBMbFnp14G2fqEr8qaNo= github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM= @@ -547,8 +547,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70 h1:syTAU9FwmvzEoIYMqcPHOcVm4H3U5u90WsvuYgwpETU= +golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -740,8 +740,8 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7 h1:BXxu8t6QN0G1uff4bzZzSkpsax8+ALqTGUtz08QrV00= -golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 h1:y/woIyUBFbpQGKS0u1aHF/40WUDnek3fPOyD08H5Vng= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= diff --git a/pkg/dialer/kcp/dialer.go b/pkg/dialer/kcp/dialer.go index 71a93ff..8107883 100644 --- a/pkg/dialer/kcp/dialer.go +++ b/pkg/dialer/kcp/dialer.go @@ -83,7 +83,7 @@ func (d *kcpDialer) Dial(ctx context.Context, addr string, opts ...dialer.DialOp PacketConn: pc, } } else { - c, err := options.NetDialer.Dial(ctx, "udp", addr) + c, err := options.NetDialer.Dial(ctx, "udp", "") if err != nil { return nil, err } diff --git a/pkg/handler/http/handler.go b/pkg/handler/http/handler.go index 01a095d..7f87b89 100644 --- a/pkg/handler/http/handler.go +++ b/pkg/handler/http/handler.go @@ -179,7 +179,8 @@ func (h *httpHandler) handleRequest(ctx context.Context, conn net.Conn, req *htt dump, _ := httputil.DumpResponse(resp, false) log.Debug(string(dump)) } - return resp.Write(conn) + resp.Write(conn) + return err } defer cc.Close() diff --git a/pkg/handler/tap/handler.go b/pkg/handler/tap/handler.go index 25c2fa8..eae9669 100644 --- a/pkg/handler/tap/handler.go +++ b/pkg/handler/tap/handler.go @@ -130,7 +130,7 @@ func (h *tapHandler) handleLoop(ctx context.Context, conn net.Conn, addr net.Add var pc net.PacketConn if addr != nil { - cc, err := h.router.Dial(ctx, addr.Network(), addr.String()) + cc, err := h.router.Dial(ctx, addr.Network(), "") if err != nil { return err } @@ -138,7 +138,7 @@ func (h *tapHandler) handleLoop(ctx context.Context, conn net.Conn, addr net.Add var ok bool pc, ok = cc.(net.PacketConn) if !ok { - return errors.New("invalid connection") + return errors.New("wrong connection type") } } else { laddr, _ := net.ResolveUDPAddr("udp", conn.LocalAddr().String()) @@ -151,8 +151,9 @@ func (h *tapHandler) handleLoop(ctx context.Context, conn net.Conn, addr net.Add if h.cipher != nil { pc = h.cipher.PacketConn(pc) } + defer pc.Close() - return h.transport(conn, pc, addr, log) + return h.transport(conn, pc, addr, config, log) }() if err != nil { log.Error(err) @@ -181,7 +182,7 @@ func (h *tapHandler) handleLoop(ctx context.Context, conn net.Conn, addr net.Add } -func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr, log logger.Logger) error { +func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr, config *tap_util.Config, log logger.Logger) error { errc := make(chan error, 1) go func() { diff --git a/pkg/handler/tap/metadata.go b/pkg/handler/tap/metadata.go index f4053af..22f9d49 100644 --- a/pkg/handler/tap/metadata.go +++ b/pkg/handler/tap/metadata.go @@ -18,7 +18,7 @@ func (h *tapHandler) parseMetadata(md mdata.Metadata) (err error) { h.md.key = mdata.GetString(md, key) h.md.bufferSize = mdata.GetInt(md, bufferSize) if h.md.bufferSize <= 0 { - h.md.bufferSize = 1024 + h.md.bufferSize = 1500 } return } diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go index bc7d5a8..4e808f7 100644 --- a/pkg/metrics/metrics.go +++ b/pkg/metrics/metrics.go @@ -90,6 +90,7 @@ func newMetrics() *Metrics { prometheus.MustRegister(m.requestSeconds) prometheus.MustRegister(m.inputBytes) prometheus.MustRegister(m.outputBytes) + prometheus.MustRegister(m.handlerErrors) return m } diff --git a/pkg/service/service.go b/pkg/service/service.go index f36b6cf..be3b8f4 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -110,6 +110,7 @@ func (s *service) Serve() error { }() if err := s.handler.Handle(context.Background(), conn); err != nil { + s.options.logger.Error(err) metrics.HandlerErrors(s.name).Inc() } }()