diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c122a34..34d76a4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -70,7 +70,7 @@ jobs: - name: Run linter uses: golangci/golangci-lint-action@v2 with: - version: v1.37.1 + version: v1.39.0 docker: name: Docker diff --git a/.golangci.toml b/.golangci.toml index 40560ac..216d371 100644 --- a/.golangci.toml +++ b/.golangci.toml @@ -3,7 +3,6 @@ concurrency = 4 deadline = "2m" tests = true skip-dirs = ["vendor"] -skip-files = ["version.go"] [output] format = "colored-line-number" diff --git a/Makefile b/Makefile index fff4788..a786d4d 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ APP_NAME := $(IMAGE_NAME) CC_BINARIES := $(shell bash -c "echo -n $(APP_NAME)-{linux,freebsd,openbsd}-{386,amd64} $(APP_NAME)-linux-{arm,arm64}") -GOLANGCI_LINT_VERSION := v1.37.1 +GOLANGCI_LINT_VERSION := v1.39.0 VERSION_GO := $(shell go version) VERSION_DATE := $(shell date -Ru) diff --git a/events/event_stream_test.go b/events/event_stream_test.go index 93152c6..6989c77 100644 --- a/events/event_stream_test.go +++ b/events/event_stream_test.go @@ -46,8 +46,9 @@ func (suite *EventStreamTestSuite) TestEventStart() { On("EventStart", mock.Anything). Once(). Run(func(args mock.Arguments) { - caught := args.Get(0).(mtglib.EventStart) + caught, ok := args.Get(0).(mtglib.EventStart) + suite.True(ok) suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String()) suite.Equal(evt.StreamID(), caught.StreamID()) suite.Equal(evt.Timestamp(), caught.Timestamp()) @@ -66,8 +67,9 @@ func (suite *EventStreamTestSuite) TestEventConnectedToDC() { On("EventConnectedToDC", mock.Anything). Once(). Run(func(args mock.Arguments) { - caught := args.Get(0).(mtglib.EventConnectedToDC) + caught, ok := args.Get(0).(mtglib.EventConnectedToDC) + suite.True(ok) suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String()) suite.Equal(evt.StreamID(), caught.StreamID()) suite.Equal(evt.DC, caught.DC) @@ -87,8 +89,9 @@ func (suite *EventStreamTestSuite) TestEventDomainFronting() { On("EventDomainFronting", mock.Anything). Once(). Run(func(args mock.Arguments) { - caught := args.Get(0).(mtglib.EventDomainFronting) + caught, ok := args.Get(0).(mtglib.EventDomainFronting) + suite.True(ok) suite.Equal(evt.StreamID(), caught.StreamID()) suite.Equal(evt.Timestamp(), caught.Timestamp()) }) @@ -106,8 +109,9 @@ func (suite *EventStreamTestSuite) TestEventTraffic() { On("EventTraffic", mock.Anything). Once(). Run(func(args mock.Arguments) { - caught := args.Get(0).(mtglib.EventTraffic) + caught, ok := args.Get(0).(mtglib.EventTraffic) + suite.True(ok) suite.Equal(evt.StreamID(), caught.StreamID()) suite.Equal(evt.Timestamp(), caught.Timestamp()) suite.Equal(evt.Traffic, caught.Traffic) @@ -127,8 +131,9 @@ func (suite *EventStreamTestSuite) TestEventFinish() { On("EventFinish", mock.Anything). Once(). Run(func(args mock.Arguments) { - caught := args.Get(0).(mtglib.EventFinish) + caught, ok := args.Get(0).(mtglib.EventFinish) + suite.True(ok) suite.Equal(evt.StreamID(), caught.StreamID()) suite.Equal(evt.Timestamp(), caught.Timestamp()) }) @@ -146,8 +151,9 @@ func (suite *EventStreamTestSuite) TestEventConcurrencyLimited() { On("EventConcurrencyLimited", mock.Anything). Once(). Run(func(args mock.Arguments) { - caught := args.Get(0).(mtglib.EventConcurrencyLimited) + caught, ok := args.Get(0).(mtglib.EventConcurrencyLimited) + suite.True(ok) suite.Equal(evt.Timestamp(), caught.Timestamp()) suite.Empty(evt.StreamID()) }) @@ -165,8 +171,9 @@ func (suite *EventStreamTestSuite) TestEventIPBlocklisted() { On("EventIPBlocklisted", mock.Anything). Once(). Run(func(args mock.Arguments) { - caught := args.Get(0).(mtglib.EventIPBlocklisted) + caught, ok := args.Get(0).(mtglib.EventIPBlocklisted) + suite.True(ok) suite.Equal(evt.StreamID(), caught.StreamID()) suite.Equal(evt.Timestamp(), caught.Timestamp()) suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String()) @@ -185,8 +192,9 @@ func (suite *EventStreamTestSuite) TestEventReplayAttack() { On("EventReplayAttack", mock.Anything). Once(). Run(func(args mock.Arguments) { - caught := args.Get(0).(mtglib.EventReplayAttack) + caught, ok := args.Get(0).(mtglib.EventReplayAttack) + suite.True(ok) suite.Equal(evt.StreamID(), caught.StreamID()) suite.Equal(evt.Timestamp(), caught.Timestamp()) }) diff --git a/go.mod b/go.mod index b9f9f50..677750f 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 github.com/babolivier/go-doh-client v0.0.0-20201028162107-a76cff4cb8b6 github.com/d4l3k/messagediff v1.2.1 // indirect + github.com/google/go-cmp v0.5.5 // indirect github.com/jarcoal/httpmock v1.0.8 github.com/kentik/patricia v0.0.0-20201202224819-f9447a6e25f1 github.com/libp2p/go-reuseport v0.0.2 @@ -23,6 +24,7 @@ require ( github.com/tylertreat/BoomFilters v0.0.0-20200520150052-42a7b4300c0c github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 - golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 - golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 + golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 + golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect ) diff --git a/go.sum b/go.sum index 0cf083c..b855446 100644 --- a/go.sum +++ b/go.sum @@ -102,8 +102,9 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -351,8 +352,9 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -383,8 +385,9 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 h1:46ULzRKLh1CwgRq2dC5SlBzEqqNCi8rreOZnNrbqcIY= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -407,8 +410,9 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/internal/cli/access.go b/internal/cli/access.go index d443f87..57083cc 100644 --- a/internal/cli/access.go +++ b/internal/cli/access.go @@ -102,7 +102,7 @@ func (c *Access) Execute(cli *CLI) error { func (c *Access) getIP(protocol string) net.IP { client := c.Network.MakeHTTPClient(func(ctx context.Context, network, address string) (net.Conn, error) { - return c.Network.DialContext(ctx, protocol, address) + return c.Network.DialContext(ctx, protocol, address) // nolint: wrapcheck }) req, err := http.NewRequest(http.MethodGet, "https://ifconfig.co", nil) // nolint: noctx diff --git a/internal/cli/base.go b/internal/cli/base.go index 95c4410..0bdc93b 100644 --- a/internal/cli/base.go +++ b/internal/cli/base.go @@ -62,14 +62,14 @@ func (b *base) makeNetwork(conf *config.Config, version string) (mtglib.Network, switch len(proxyURLs) { case 0: - return network.NewNetwork(baseDialer, userAgent, dohIP, httpTimeout) + return network.NewNetwork(baseDialer, userAgent, dohIP, httpTimeout) // nolint: wrapcheck case 1: socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0]) if err != nil { return nil, fmt.Errorf("cannot build socks5 dialer: %w", err) } - return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout) + return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout) // nolint: wrapcheck } socksDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, proxyURLs) @@ -77,5 +77,5 @@ func (b *base) makeNetwork(conf *config.Config, version string) (mtglib.Network, return nil, fmt.Errorf("cannot build socks5 dialer: %w", err) } - return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout) + return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout) // nolint: wrapcheck } diff --git a/internal/testlib/mtglib_network_mock.go b/internal/testlib/mtglib_network_mock.go index 092bd28..0f58a25 100644 --- a/internal/testlib/mtglib_network_mock.go +++ b/internal/testlib/mtglib_network_mock.go @@ -15,13 +15,13 @@ type MtglibNetworkMock struct { func (m *MtglibNetworkMock) Dial(network, address string) (net.Conn, error) { args := m.Called(network, address) - return args.Get(0).(net.Conn), args.Error(1) + return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck } func (m *MtglibNetworkMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) { args := m.Called(ctx, network, address) - return args.Get(0).(net.Conn), args.Error(1) + return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck } func (m *MtglibNetworkMock) MakeHTTPClient(dialFunc func(ctx context.Context, diff --git a/internal/testlib/net_conn_mock.go b/internal/testlib/net_conn_mock.go index b2fc1a3..e167665 100644 --- a/internal/testlib/net_conn_mock.go +++ b/internal/testlib/net_conn_mock.go @@ -24,7 +24,7 @@ func (n *NetConnMock) Write(b []byte) (int, error) { } func (n *NetConnMock) Close() error { - return n.Called().Error(0) + return n.Called().Error(0) // nolint: wrapcheck } func (n *NetConnMock) LocalAddr() net.Addr { @@ -36,13 +36,13 @@ func (n *NetConnMock) RemoteAddr() net.Addr { } func (n *NetConnMock) SetDeadline(t time.Time) error { - return n.Called(t).Error(0) + return n.Called(t).Error(0) // nolint: wrapcheck } func (n *NetConnMock) SetReadDeadline(t time.Time) error { - return n.Called(t).Error(0) + return n.Called(t).Error(0) // nolint: wrapcheck } func (n *NetConnMock) SetWriteDeadline(t time.Time) error { - return n.Called(t).Error(0) + return n.Called(t).Error(0) // nolint: wrapcheck } diff --git a/ipblocklist/firehol.go b/ipblocklist/firehol.go index 947134b..953aeba 100644 --- a/ipblocklist/firehol.go +++ b/ipblocklist/firehol.go @@ -68,12 +68,10 @@ func (f *Firehol) Contains(ip net.IP) bool { return true } - ip4 := ip.To4() - f.rwMutex.RLock() defer f.rwMutex.RUnlock() - if ip4 != nil { + if ip4 := ip.To4(); ip4 != nil { return f.containsIPv4(ip4) } diff --git a/mtglib/conns.go b/mtglib/conns.go index da0b046..8dfb3a4 100644 --- a/mtglib/conns.go +++ b/mtglib/conns.go @@ -48,7 +48,7 @@ func (c *connRewind) Read(p []byte) (int, error) { c.mutex.RLock() defer c.mutex.RUnlock() - return c.active.Read(p) + return c.active.Read(p) // nolint: wrapcheck } func (c *connRewind) Rewind() { diff --git a/mtglib/conns_internal_test.go b/mtglib/conns_internal_test.go index 0c73759..8149b0d 100644 --- a/mtglib/conns_internal_test.go +++ b/mtglib/conns_internal_test.go @@ -22,7 +22,7 @@ type ConnRewindBaseConn struct { func (c *ConnRewindBaseConn) Read(p []byte) (int, error) { c.Called(p) - return c.readBuffer.Read(p) + return c.readBuffer.Read(p) // nolint: wrapcheck } type ConnTrafficTestSuite struct { @@ -54,8 +54,9 @@ func (suite *ConnTrafficTestSuite) TestReadOk() { On("Send", mock.Anything, mock.Anything). Once(). Run(func(args mock.Arguments) { - evt := args.Get(1).(EventTraffic) + evt, ok := args.Get(1).(EventTraffic) + suite.True(ok) suite.Equal("CONNID", evt.StreamID()) suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second) suite.EqualValues(10, evt.Traffic) @@ -68,13 +69,14 @@ func (suite *ConnTrafficTestSuite) TestReadOk() { suite.Equal(10, n) } -func (suite *ConnTrafficTestSuite) TestReadErr() { +func (suite *ConnTrafficTestSuite) TestReadErr() { // nolint: dupl suite.eventStreamMock. On("Send", mock.Anything, mock.Anything). Once(). Run(func(args mock.Arguments) { - evt := args.Get(1).(EventTraffic) + evt, ok := args.Get(1).(EventTraffic) + suite.True(ok) suite.Equal("CONNID", evt.StreamID()) suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second) suite.EqualValues(10, evt.Traffic) @@ -108,8 +110,9 @@ func (suite *ConnTrafficTestSuite) TestWriteOk() { On("Send", mock.Anything, mock.Anything). Once(). Run(func(args mock.Arguments) { - evt := args.Get(1).(EventTraffic) + evt, ok := args.Get(1).(EventTraffic) + suite.True(ok) suite.Equal("CONNID", evt.StreamID()) suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second) suite.EqualValues(10, evt.Traffic) @@ -122,13 +125,14 @@ func (suite *ConnTrafficTestSuite) TestWriteOk() { suite.Equal(10, n) } -func (suite *ConnTrafficTestSuite) TestWriteErr() { +func (suite *ConnTrafficTestSuite) TestWriteErr() { // nolint: dupl suite.eventStreamMock. On("Send", mock.Anything, mock.Anything). Once(). Run(func(args mock.Arguments) { - evt := args.Get(1).(EventTraffic) + evt, ok := args.Get(1).(EventTraffic) + suite.True(ok) suite.Equal("CONNID", evt.StreamID()) suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second) suite.EqualValues(10, evt.Traffic) diff --git a/mtglib/internal/faketls/conn.go b/mtglib/internal/faketls/conn.go index 06592ff..868563e 100644 --- a/mtglib/internal/faketls/conn.go +++ b/mtglib/internal/faketls/conn.go @@ -32,7 +32,7 @@ func (c *Conn) Read(p []byte) (int, error) { case record.TypeApplicationData: rec.Payload.WriteTo(&c.readBuffer) // nolint: errcheck - return c.readBuffer.Read(p) + return c.readBuffer.Read(p) // nolint: wrapcheck case record.TypeChangeCipherSpec: default: return 0, fmt.Errorf("unsupported record type %v", rec.Type) diff --git a/mtglib/internal/faketls/conn_test.go b/mtglib/internal/faketls/conn_test.go index 73c0e65..affcec0 100644 --- a/mtglib/internal/faketls/conn_test.go +++ b/mtglib/internal/faketls/conn_test.go @@ -24,13 +24,13 @@ type ConnMock struct { func (m *ConnMock) Read(p []byte) (int, error) { m.Called(p) - return m.readBuffer.Read(p) + return m.readBuffer.Read(p) // nolint: wrapcheck } func (m *ConnMock) Write(p []byte) (int, error) { m.Called(p) - return m.writeBuffer.Write(p) + return m.writeBuffer.Write(p) // nolint: wrapcheck } type ConnTestSuite struct { diff --git a/mtglib/internal/faketls/welcome.go b/mtglib/internal/faketls/welcome.go index d0b48d2..0b5e5c0 100644 --- a/mtglib/internal/faketls/welcome.go +++ b/mtglib/internal/faketls/welcome.go @@ -45,8 +45,8 @@ func SendWelcomePacket(writer io.Writer, secret []byte, clientHello ClientHello) packet := buf.Bytes() mac := hmac.New(sha256.New, secret) - mac.Write(clientHello.Random[:]) // nolint: errcheck - mac.Write(packet) // nolint: errcheck + mac.Write(clientHello.Random[:]) + mac.Write(packet) copy(packet[WelcomePacketRandomOffset:], mac.Sum(nil)) diff --git a/mtglib/internal/faketls/welcome_test.go b/mtglib/internal/faketls/welcome_test.go index 4f1b990..33129e2 100644 --- a/mtglib/internal/faketls/welcome_test.go +++ b/mtglib/internal/faketls/welcome_test.go @@ -70,8 +70,8 @@ func (suite *WelcomeTestSuite) TestOk() { copy(welcomePacket[11:], empty) mac := hmac.New(sha256.New, suite.secret.Key[:]) - mac.Write(suite.h.Random[:]) // nolint: errcheck - mac.Write(welcomePacket) // nolint: errcheck + mac.Write(suite.h.Random[:]) + mac.Write(welcomePacket) suite.Equal(random, mac.Sum(nil)) } diff --git a/mtglib/internal/obfuscated2/client_handshake.go b/mtglib/internal/obfuscated2/client_handshake.go index 89cc396..229cf83 100644 --- a/mtglib/internal/obfuscated2/client_handshake.go +++ b/mtglib/internal/obfuscated2/client_handshake.go @@ -16,8 +16,8 @@ func (c *clientHandhakeFrame) decryptor(secret []byte) cipher.Stream { hasher := acquireSha256Hasher() defer releaseSha256Hasher(hasher) - hasher.Write(c.key()) // nolint: errcheck - hasher.Write(secret) // nolint: errcheck + hasher.Write(c.key()) + hasher.Write(secret) return makeAesCtr(hasher.Sum(nil), c.iv()) } @@ -28,8 +28,8 @@ func (c *clientHandhakeFrame) encryptor(secret []byte) cipher.Stream { hasher := acquireSha256Hasher() defer releaseSha256Hasher(hasher) - hasher.Write(invertedHandshake.key()) // nolint: errcheck - hasher.Write(secret) // nolint: errcheck + hasher.Write(invertedHandshake.key()) + hasher.Write(secret) return makeAesCtr(hasher.Sum(nil), invertedHandshake.iv()) } diff --git a/mtglib/internal/obfuscated2/client_handshake_test.go b/mtglib/internal/obfuscated2/client_handshake_test.go index 6d4b95a..6d4d8c2 100644 --- a/mtglib/internal/obfuscated2/client_handshake_test.go +++ b/mtglib/internal/obfuscated2/client_handshake_test.go @@ -47,14 +47,18 @@ func (suite *ClientHandshakeTestSuite) TestOk() { Once(). Return(len(snapshot.Decrypted.Text.data), nil). Run(func(args mock.Arguments) { - arr := args.Get(0).([]byte) + arr, ok := args.Get(0).([]byte) + + suite.True(ok) copy(arr, snapshot.Decrypted.Cipher.data) }) connMock.On("Write", mock.Anything). Once(). Return(len(snapshot.Encrypted.Text.data), nil). Run(func(args mock.Arguments) { - arr := args.Get(0).([]byte) + arr, ok := args.Get(0).([]byte) + + suite.True(ok) copy(writeData, arr) }) diff --git a/mtglib/internal/obfuscated2/conn.go b/mtglib/internal/obfuscated2/conn.go index 87221c3..511ba62 100644 --- a/mtglib/internal/obfuscated2/conn.go +++ b/mtglib/internal/obfuscated2/conn.go @@ -32,5 +32,5 @@ func (c Conn) Write(p []byte) (int, error) { payload := buf.Bytes() c.Encryptor.XORKeyStream(payload, payload) - return c.Conn.Write(payload) + return c.Conn.Write(payload) // nolint: wrapcheck } diff --git a/mtglib/internal/relay/init_test.go b/mtglib/internal/relay/init_test.go index e19ecf4..d42b825 100644 --- a/mtglib/internal/relay/init_test.go +++ b/mtglib/internal/relay/init_test.go @@ -25,7 +25,7 @@ func (r *rwcMock) Read(p []byte) (int, error) { return 0, io.EOF } - return r.Buffer.Read(p) + return r.Buffer.Read(p) // nolint: wrapcheck } func (r *rwcMock) Write(p []byte) (int, error) { @@ -36,7 +36,7 @@ func (r *rwcMock) Write(p []byte) (int, error) { return 0, io.EOF } - return r.Buffer.Write(p) + return r.Buffer.Write(p) // nolint: wrapcheck } func (r *rwcMock) Close() error { diff --git a/mtglib/internal/relay/pools.go b/mtglib/internal/relay/pools.go index 1fae858..091fa8e 100644 --- a/mtglib/internal/relay/pools.go +++ b/mtglib/internal/relay/pools.go @@ -18,7 +18,11 @@ var relayPool = sync.Pool{ func AcquireRelay(ctx context.Context, logger Logger, bufferSize int, idleTimeout time.Duration) *Relay { ctx, cancel := context.WithCancel(ctx) - r := relayPool.Get().(*Relay) + r, ok := relayPool.Get().(*Relay) + if !ok { + panic("Relay pool has no relay!") + } + r.ctx = ctx r.ctxCancel = cancel r.logger = logger diff --git a/mtglib/stream_context.go b/mtglib/stream_context.go index f704f37..7ee8071 100644 --- a/mtglib/stream_context.go +++ b/mtglib/stream_context.go @@ -27,7 +27,7 @@ func (s *streamContext) Done() <-chan struct{} { } func (s *streamContext) Err() error { - return s.ctx.Err() + return s.ctx.Err() // nolint: wrapcheck } func (s *streamContext) Value(key interface{}) interface{} { diff --git a/network/circuit_breaker.go b/network/circuit_breaker.go index 4a02bda..4c74a9b 100644 --- a/network/circuit_breaker.go +++ b/network/circuit_breaker.go @@ -56,7 +56,7 @@ func (c *circuitBreakerDialer) doClosed(ctx context.Context, conn.Close() } - return nil, ctx.Err() + return nil, ctx.Err() // nolint: wrapcheck case c.stateMutexChan <- true: defer func() { <-c.stateMutexChan @@ -66,7 +66,7 @@ func (c *circuitBreakerDialer) doClosed(ctx context.Context, if err == nil { c.switchState(circuitBreakerStateClosed) - return conn, err // nolint: wrapcheck + return conn, nil } c.failuresCount++ @@ -91,7 +91,7 @@ func (c *circuitBreakerDialer) doHalfOpened(ctx context.Context, network, addres conn.Close() } - return nil, ctx.Err() + return nil, ctx.Err() // nolint: wrapcheck case c.stateMutexChan <- true: defer func() { <-c.stateMutexChan diff --git a/network/default.go b/network/default.go index cad8799..7ade79a 100644 --- a/network/default.go +++ b/network/default.go @@ -31,7 +31,10 @@ func (d *defaultDialer) DialContext(ctx context.Context, network, address string return nil, fmt.Errorf("cannot dial to %s: %w", address, err) } - tcpConn := conn.(*net.TCPConn) + tcpConn, ok := conn.(*net.TCPConn) + if !ok { + panic("conn type is not tcp") + } if err := tcpConn.SetNoDelay(true); err != nil { conn.Close() diff --git a/network/init_internal_test.go b/network/init_internal_test.go index 9335818..365a4e5 100644 --- a/network/init_internal_test.go +++ b/network/init_internal_test.go @@ -14,11 +14,11 @@ type DialerMock struct { func (d *DialerMock) Dial(network, address string) (net.Conn, error) { args := d.Called(network, address) - return args.Get(0).(net.Conn), args.Error(1) + return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck } func (d *DialerMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) { args := d.Called(ctx, network, address) - return args.Get(0).(net.Conn), args.Error(1) + return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck } diff --git a/network/init_test.go b/network/init_test.go index f42d1c3..f1692e0 100644 --- a/network/init_test.go +++ b/network/init_test.go @@ -21,13 +21,13 @@ type DialerMock struct { func (d *DialerMock) Dial(network, address string) (net.Conn, error) { args := d.Called(network, address) - return args.Get(0).(net.Conn), args.Error(1) + return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck } func (d *DialerMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) { args := d.Called(ctx, network, address) - return args.Get(0).(net.Conn), args.Error(1) + return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck } type HTTPServerTestSuite struct { diff --git a/network/network.go b/network/network.go index 3ff9af6..cac18fb 100644 --- a/network/network.go +++ b/network/network.go @@ -20,7 +20,7 @@ type networkHTTPTransport struct { func (n networkHTTPTransport) RoundTrip(req *http.Request) (*http.Response, error) { req.Header.Set("User-Agent", n.userAgent) - return n.next.RoundTrip(req) + return n.next.RoundTrip(req) // nolint: wrapcheck } type network struct { diff --git a/network/proxy_dialer_internal_test.go b/network/proxy_dialer_internal_test.go index 33aa2b7..8a3e3bb 100644 --- a/network/proxy_dialer_internal_test.go +++ b/network/proxy_dialer_internal_test.go @@ -21,7 +21,7 @@ func (suite *ProxyDialerTestSuite) SetupSuite() { } func (suite *ProxyDialerTestSuite) TestSetupDefaults() { - d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) + d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert suite.EqualValues(ProxyDialerOpenThreshold, d.openThreshold) suite.EqualValues(ProxyDialerHalfOpenTimeout, d.halfOpenTimeout) suite.EqualValues(ProxyDialerResetFailuresTimeout, d.resetFailuresTimeout) @@ -34,7 +34,7 @@ func (suite *ProxyDialerTestSuite) TestSetupValuesAllOk() { query.Set("half_open_timeout", "2s") suite.u.RawQuery = query.Encode() - d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) + d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert suite.EqualValues(30, d.openThreshold) suite.EqualValues(2*time.Second, d.halfOpenTimeout) suite.EqualValues(time.Second, d.resetFailuresTimeout) @@ -50,7 +50,7 @@ func (suite *ProxyDialerTestSuite) TestOpenThreshold() { query.Set("open_threshold", param) suite.u.RawQuery = query.Encode() - d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) + d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert assert.EqualValues(t, ProxyDialerOpenThreshold, d.openThreshold) }) } @@ -66,7 +66,7 @@ func (suite *ProxyDialerTestSuite) TestHalfOpenTimeout() { query.Set("half_open_timeout", param) suite.u.RawQuery = query.Encode() - d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) + d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout) }) } @@ -82,7 +82,7 @@ func (suite *ProxyDialerTestSuite) TestResetFailuresTimeout() { query.Set("reset_failures_timeout", param) suite.u.RawQuery = query.Encode() - d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) + d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout) }) } diff --git a/stats/prometheus.go b/stats/prometheus.go index 634be95..7a22777 100644 --- a/stats/prometheus.go +++ b/stats/prometheus.go @@ -158,13 +158,13 @@ func (p *PrometheusFactory) Make() events.Observer { // Serve starts an HTTP server on a given listener. func (p *PrometheusFactory) Serve(listener net.Listener) error { - return p.httpServer.Serve(listener) + return p.httpServer.Serve(listener) // nolint: wrapcheck } // Close stops a factory. Please pay attention that underlying listener // is not closed. func (p *PrometheusFactory) Close() error { - return p.httpServer.Shutdown(context.Background()) + return p.httpServer.Shutdown(context.Background()) // nolint: wrapcheck } // NewPrometheus builds an events.ObserverFactory which can serve HTTP diff --git a/stats/statsd.go b/stats/statsd.go index f394ec6..fcf8191 100644 --- a/stats/statsd.go +++ b/stats/statsd.go @@ -146,7 +146,7 @@ type StatsdFactory struct { // Close stops sending requests to statsd. func (s StatsdFactory) Close() error { - return s.client.Close() + return s.client.Close() // nolint: wrapcheck } // Make build a new observer. diff --git a/stats/statsd_test.go b/stats/statsd_test.go index 4383509..d810c42 100644 --- a/stats/statsd_test.go +++ b/stats/statsd_test.go @@ -30,7 +30,7 @@ func (s *statsdFakeServer) Addr() string { func (s *statsdFakeServer) Close() error { if s.conn != nil { - return s.conn.Close() + return s.conn.Close() // nolint: wrapcheck } return nil