diff --git a/antireplay/cache.go b/antireplay/cache.go index 3b4706d..359cb39 100644 --- a/antireplay/cache.go +++ b/antireplay/cache.go @@ -1,6 +1,9 @@ package antireplay import ( + "errors" + "fmt" + "github.com/allegro/bigcache" "github.com/9seconds/mtg/config" @@ -25,6 +28,7 @@ func Init() error { HardMaxCacheSize: config.C.AntiReplay.MaxSize, }) cache = c + err = fmt.Errorf("qqq: %w", errors.New("tt")) return err } diff --git a/cli/proxy.go b/cli/proxy.go index a08f71c..df0bc18 100644 --- a/cli/proxy.go +++ b/cli/proxy.go @@ -41,7 +41,7 @@ func Proxy() error { defer logger.Sync() // nolint: errcheck if err := config.InitPublicAddress(ctx); err != nil { - Fatal(err.Error()) + Fatal(err) } zap.S().Debugw("Configuration", "config", config.C) @@ -62,14 +62,14 @@ func Proxy() error { PrintJSONStdout(config.GetURLs()) if err := antireplay.Init(); err != nil { - Fatal(err.Error()) + Fatal(err) } if err := stats.Init(ctx); err != nil { - Fatal(err.Error()) + Fatal(err) } proxyListener, err := net.Listen("tcp", config.C.ListenAddr.String()) if err != nil { - Fatal(err.Error()) + Fatal(err) } go func() { <-ctx.Done() diff --git a/cli/utils.go b/cli/utils.go index 80bba2c..36f1128 100644 --- a/cli/utils.go +++ b/cli/utils.go @@ -7,8 +7,11 @@ import ( "os" ) -func Fatal(args ...interface{}) { - PrintStderr(args...) +func Fatal(arg interface{}) { + if value, ok := arg.(error); ok { + arg = fmt.Errorf("fatal error: %+v", value) + } + PrintStderr(arg) os.Exit(1) } diff --git a/config/config.go b/config/config.go index 2aec548..d729e8f 100644 --- a/config/config.go +++ b/config/config.go @@ -4,11 +4,12 @@ import ( "bytes" "context" "encoding/json" + "errors" + "fmt" "net" "strconv" "time" - "github.com/juju/errors" "go.uber.org/zap" statsd "gopkg.in/alexcesaro/statsd.v2" ) @@ -187,7 +188,7 @@ func Init(options ...Opt) error { // nolint: gocyclo case "influxdb": C.StatsdStats.TagsFormat = statsd.InfluxDB default: - return errors.Errorf("Incorrect statsd tag %s", value) + return fmt.Errorf("Incorrect statsd tag %s", value) } case OptionTypeStatsdTags: C.StatsdStats.Tags = opt.Value.(map[string]string) @@ -206,7 +207,7 @@ func Init(options ...Opt) error { // nolint: gocyclo case OptionTypeAdtag: C.AdTag = opt.Value.([]byte) default: - return errors.Errorf("Unknown tag %v", opt.Option) + return fmt.Errorf("Unknown tag %v", opt.Option) } } diff --git a/config/global_ips.go b/config/global_ips.go index 719000a..be5fe5c 100644 --- a/config/global_ips.go +++ b/config/global_ips.go @@ -2,14 +2,13 @@ package config import ( "context" + "fmt" "io" "io/ioutil" "net" "net/http" "strings" "time" - - "github.com/juju/errors" ) const ( @@ -20,7 +19,7 @@ const ( func getGlobalIPv4(ctx context.Context) (net.IP, error) { ip, err := fetchIP(ctx, "tcp4") if err != nil || ip.To4() == nil { - return nil, errors.Annotate(err, "Cannot find public ipv4 address") + return nil, fmt.Errorf("cannot find public ipv4 address: %w", err) } return ip, nil } @@ -28,7 +27,7 @@ func getGlobalIPv4(ctx context.Context) (net.IP, error) { func getGlobalIPv6(ctx context.Context) (net.IP, error) { ip, err := fetchIP(ctx, "tcp6") if err != nil || ip.To4() != nil { - return nil, errors.Annotate(err, "Cannot find public ipv6 address") + return nil, fmt.Errorf("cannot find public ipv6 address: %w", err) } return ip, nil } @@ -47,7 +46,7 @@ func fetchIP(ctx context.Context, network string) (net.IP, error) { req, err := http.NewRequest("GET", ifconfigAddress, nil) if err != nil { - return nil, errors.Annotate(err, "Cannot create a request") + return nil, fmt.Errorf("cannot create a request: %w", err) } resp, err := client.Do(req.WithContext(ctx)) @@ -55,19 +54,19 @@ func fetchIP(ctx context.Context, network string) (net.IP, error) { if resp != nil { io.Copy(ioutil.Discard, resp.Body) // nolint: errcheck } - return nil, errors.Annotate(err, "Cannot perform a request") + return nil, fmt.Errorf("cannot perform a request: %w", err) } defer resp.Body.Close() // nolint: errcheck respDataBytes, err := ioutil.ReadAll(resp.Body) if err != nil { - return nil, errors.Annotate(err, "Cannot read response body") + return nil, fmt.Errorf("cannot read response body: %w", err) } respData := strings.TrimSpace(string(respDataBytes)) ip := net.ParseIP(respData) if ip == nil { - return nil, errors.Errorf("ifconfig.co returns incorrect IP %s", respData) + return nil, fmt.Errorf("ifconfig.co returns incorrect IP %s", respData) } return ip, nil diff --git a/go.mod b/go.mod index f3e79de..e2a1821 100644 --- a/go.mod +++ b/go.mod @@ -9,19 +9,12 @@ require ( github.com/allegro/bigcache v1.2.1 github.com/beevik/ntp v0.2.0 github.com/cespare/xxhash v1.1.0 - github.com/dustin/go-humanize v1.0.0 - github.com/gofrs/uuid v3.2.0+incompatible - github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d - github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 // indirect - github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2 // indirect github.com/kr/pretty v0.1.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect github.com/pkg/errors v0.8.1 // indirect github.com/prometheus/client_golang v1.1.0 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/stretchr/testify v1.4.0 + github.com/stretchr/testify v1.4.0 // indirect go.uber.org/atomic v1.4.0 // indirect go.uber.org/multierr v1.1.0 // indirect go.uber.org/zap v1.10.0 @@ -30,5 +23,6 @@ require ( gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/alexcesaro/statsd.v2 v2.0.0 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect - gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect ) + +go 1.13 diff --git a/go.sum b/go.sum index 5e49b8c..0ffeeaf 100644 --- a/go.sum +++ b/go.sum @@ -24,14 +24,10 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= -github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= @@ -44,12 +40,6 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d h1:hJXjZMxj0SWlMoQkzeZDLi2cmeiWKa7y1B8Rg+qaoEc= -github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 h1:UUHMLvzt/31azWTN/ifGWef4WUqvXk0iRqdhdy/2uzI= -github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2 h1:Pp8RxiF4rSoXP9SED26WCfNB28/dwTDpPXS8XMJR8rc= -github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -132,8 +122,6 @@ gopkg.in/alexcesaro/statsd.v2 v2.0.0/go.mod h1:i0ubccKGzBVNBpdGV5MocxyA/XlLUJzA7 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= -gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= diff --git a/main.go b/main.go index 3abdf20..774a3fc 100644 --- a/main.go +++ b/main.go @@ -143,7 +143,7 @@ func main() { app.HelpFlag.Short('h') if err := utils.SetLimits(); err != nil { - cli.Fatal(err.Error()) + cli.Fatal(err) } switch kingpin.MustParse(app.Parse(os.Args[1:])) { @@ -177,11 +177,11 @@ func main() { config.Opt{Option: config.OptionTypeAdtag, Value: *proxyAdtag}, ) if err != nil { - cli.Fatal(err.Error()) + cli.Fatal(err) } if err := cli.Proxy(); err != nil { - cli.Fatal(err.Error()) + cli.Fatal(err) } } } diff --git a/ntp/ntp.go b/ntp/ntp.go index e89d7bf..ee5d515 100644 --- a/ntp/ntp.go +++ b/ntp/ntp.go @@ -1,11 +1,11 @@ package ntp import ( + "fmt" "math/rand" "time" "github.com/beevik/ntp" - "github.com/juju/errors" "go.uber.org/zap" ) @@ -23,7 +23,7 @@ func Fetch() (time.Duration, error) { url := ntpEndpoints[rand.Intn(len(ntpEndpoints))] resp, err := ntp.Query(url) if err != nil { - return 0, errors.Annotatef(err, "Cannot fetch NTP server %s", url) + return 0, fmt.Errorf("Cannot fetch NTP server %s: %w", url, err) } offsetInt := int64(resp.ClockOffset) diff --git a/obfuscated2/client_protocol.go b/obfuscated2/client_protocol.go index c035bcf..44a87e3 100644 --- a/obfuscated2/client_protocol.go +++ b/obfuscated2/client_protocol.go @@ -4,11 +4,11 @@ import ( "bytes" "crypto/sha256" "encoding/binary" + "errors" + "fmt" "io" "time" - "github.com/juju/errors" - "github.com/9seconds/mtg/antireplay" "github.com/9seconds/mtg/config" "github.com/9seconds/mtg/conntypes" @@ -26,7 +26,7 @@ type ClientProtocol struct { func (c *ClientProtocol) Handshake(socket wrappers.StreamReadWriteCloser) (wrappers.StreamReadWriteCloser, error) { fm, err := c.ReadFrame(socket) if err != nil { - return nil, errors.Annotate(err, "Cannot make client handshake") + return nil, fmt.Errorf("cannot make a client handshake: %w", err) } decHasher := sha256.New() @@ -76,7 +76,7 @@ func (c *ClientProtocol) Handshake(socket wrappers.StreamReadWriteCloser) (wrapp func (c *ClientProtocol) ReadFrame(socket wrappers.StreamReader) (fm Frame, err error) { if _, err = io.ReadFull(handshakeReader{socket}, fm.Bytes()); err != nil { - err = errors.Annotate(err, "Cannot extract obfuscated2 frame") + err = fmt.Errorf("cannot extract obfuscated2 frame: %w", err) } return } diff --git a/obfuscated2/telegram_protocol.go b/obfuscated2/telegram_protocol.go index 230193c..cce6cc5 100644 --- a/obfuscated2/telegram_protocol.go +++ b/obfuscated2/telegram_protocol.go @@ -2,8 +2,7 @@ package obfuscated2 import ( "crypto/rand" - - "github.com/juju/errors" + "fmt" "github.com/9seconds/mtg/protocol" "github.com/9seconds/mtg/telegram" @@ -23,7 +22,7 @@ func (t *TelegramProtocol) Handshake(req *protocol.TelegramRequest) (wrappers.Wr req.ClientProtocol.GetDC(), req.ClientProtocol.GetConnectionProtocol()) if err != nil { - return nil, errors.Annotate(err, "Cannot dial to Telegram") + return nil, fmt.Errorf("cannot dial to telegram: %w", err) } fm := generateFrame(req.ClientProtocol) data := fm.Bytes() @@ -38,7 +37,7 @@ func (t *TelegramProtocol) Handshake(req *protocol.TelegramRequest) (wrappers.Wr copy(data[:frameOffsetIV], copyFrame[:frameOffsetIV]) if _, err := socket.Write(data); err != nil { - return nil, errors.Annotate(err, "Cannot write handshate frame to Telegram") + return nil, fmt.Errorf("cannot write handshake frame to telegram: %w", err) } return wrappers.NewObfuscated2(socket, encryptor, decryptor), nil diff --git a/stats/stats.go b/stats/stats.go index 6412132..b3742ec 100644 --- a/stats/stats.go +++ b/stats/stats.go @@ -2,11 +2,10 @@ package stats import ( "context" + "fmt" "net" "net/http" - "github.com/juju/errors" - "github.com/9seconds/mtg/config" "github.com/9seconds/mtg/conntypes" ) @@ -66,21 +65,21 @@ func Init(ctx context.Context) error { instanceJSON := newStatsJSON(mux) instancePrometheus, err := newStatsPrometheus(mux) if err != nil { - return errors.Annotate(err, "Cannot initialize Prometheus") + return fmt.Errorf("cannot initialize prometheus: %w", err) } stats := []Stats{instanceJSON, instancePrometheus} if config.C.StatsdStats.Addr.IP != nil { instanceStatsd, err := newStatsStatsd() if err != nil { - return errors.Annotate(err, "Cannot initialize StatsD") + return fmt.Errorf("cannot inialize statsd: %w", err) } stats = append(stats, instanceStatsd) } listener, err := net.Listen("tcp", config.C.StatsAddr.String()) if err != nil { - return errors.Annotate(err, "Cannot initialize stats server") + return fmt.Errorf("cannot initialize stats server: %w", err) } srv := http.Server{ diff --git a/stats/stats_prometheus.go b/stats/stats_prometheus.go index d4b0d03..80c512a 100644 --- a/stats/stats_prometheus.go +++ b/stats/stats_prometheus.go @@ -1,10 +1,10 @@ package stats import ( + "fmt" "net" "net/http" - "github.com/juju/errors" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" @@ -91,16 +91,16 @@ func newStatsPrometheus(mux *http.ServeMux) (Stats, error) { } if err := registry.Register(instance.connections); err != nil { - return nil, errors.Annotate(err, "Cannot register metrics for connections") + return nil, fmt.Errorf("cannot register metrics for connections: %w", err) } if err := registry.Register(instance.traffic); err != nil { - return nil, errors.Annotate(err, "Cannot register metrics for traffic") + return nil, fmt.Errorf("cannot register metrics for traffic: %w", err) } if err := registry.Register(instance.crashes); err != nil { - return nil, errors.Annotate(err, "Cannot register metrics for crashes") + return nil, fmt.Errorf("cannot register metrics for crashes: %w", err) } if err := registry.Register(instance.antiReplays); err != nil { - return nil, errors.Annotate(err, "Cannot register metrics for anti replays") + return nil, fmt.Errorf("cannot register metrics for anti replays: %w", err) } handler := promhttp.HandlerFor(registry, promhttp.HandlerOpts{}) diff --git a/stats/stats_statsd.go b/stats/stats_statsd.go index d78e9b0..a975b10 100644 --- a/stats/stats_statsd.go +++ b/stats/stats_statsd.go @@ -1,10 +1,10 @@ package stats import ( + "fmt" "net" "strings" - "github.com/juju/errors" "gopkg.in/alexcesaro/statsd.v2" "github.com/9seconds/mtg/config" @@ -78,7 +78,7 @@ func newStatsStatsd() (Stats, error) { client, err := statsd.New(options...) if err != nil { - return nil, errors.Annotate(err, "Cannot initialize a client") + return nil, fmt.Errorf("cannot initialize a client: %w", err) } return &statsStatsd{ diff --git a/telegram/base.go b/telegram/base.go index 8d5b6cb..b4d7717 100644 --- a/telegram/base.go +++ b/telegram/base.go @@ -2,12 +2,11 @@ package telegram import ( "context" + "fmt" "math/rand" "net" "time" - "github.com/juju/errors" - "github.com/9seconds/mtg/conntypes" "github.com/9seconds/mtg/utils" "github.com/9seconds/mtg/wrappers" @@ -29,11 +28,11 @@ func (b *baseTelegram) dialToAddress(ctx context.Context, addr string) (wrappers.StreamReadWriteCloser, error) { conn, err := b.dialer.Dial("tcp", addr) if err != nil { - return nil, errors.Annotate(err, "Dial has failed") + return nil, fmt.Errorf("dial has failed: %w", err) } if err := utils.InitTCP(conn); err != nil { - return nil, errors.Annotate(err, "Cannot initialize TCP socket") + return nil, fmt.Errorf("cannot initialize tcp socket: %w", err) } return wrappers.NewTelegramConn(ctx, cancel, conn), nil diff --git a/utils/init_tcp.go b/utils/init_tcp.go index f34b4d2..3fe7055 100644 --- a/utils/init_tcp.go +++ b/utils/init_tcp.go @@ -1,10 +1,9 @@ package utils import ( + "fmt" "net" - "github.com/juju/errors" - "github.com/9seconds/mtg/config" ) @@ -12,13 +11,13 @@ func InitTCP(conn net.Conn) error { tcpConn := conn.(*net.TCPConn) if err := tcpConn.SetNoDelay(true); err != nil { - return errors.Annotate(err, "Cannot set NO_DELAY") + return fmt.Errorf("cannot set TCP_NO_DELAY: %w", err) } if err := tcpConn.SetReadBuffer(config.C.BufferSize.Read); err != nil { - return errors.Annotate(err, "Cannot set read buffer size") + return fmt.Errorf("cannot set read buffer size: %w", err) } if err := tcpConn.SetWriteBuffer(config.C.BufferSize.Write); err != nil { - return errors.Annotate(err, "Cannot set write buffer size") + return fmt.Errorf("cannot set write buffer size: %w", err) } return nil diff --git a/utils/rlimit.go b/utils/rlimit.go index 98ed947..d62d3fa 100644 --- a/utils/rlimit.go +++ b/utils/rlimit.go @@ -3,24 +3,21 @@ package utils import ( - "golang.org/x/sys/unix" + "fmt" - "github.com/juju/errors" + "golang.org/x/sys/unix" ) -func SetLimits() (err error) { +func SetLimits() error { rLimit := unix.Rlimit{} - err = unix.Getrlimit(unix.RLIMIT_NOFILE, &rLimit) - if err != nil { - err = errors.Annotate(err, "Cannot get rlimit") - return + if err := unix.Getrlimit(unix.RLIMIT_NOFILE, &rLimit); err != nil { + return fmt.Errorf("cannot get rlimit: %w", err) } rLimit.Cur = rLimit.Max - err = unix.Setrlimit(unix.RLIMIT_NOFILE, &rLimit) - if err != nil { - err = errors.Annotate(err, "Cannot set rlimit") + if err := unix.Setrlimit(unix.RLIMIT_NOFILE, &rLimit); err != nil { + return fmt.Errorf("cannot set rlimit: %w", err) } - return + return nil } diff --git a/wrappers/wrapper_conn.go b/wrappers/wrapper_conn.go index 09f056c..19fd9f6 100644 --- a/wrappers/wrapper_conn.go +++ b/wrappers/wrapper_conn.go @@ -4,10 +4,10 @@ import ( "context" "crypto/rand" "encoding/hex" + "fmt" "net" "time" - "github.com/juju/errors" "go.uber.org/zap" "github.com/9seconds/mtg/config" @@ -47,12 +47,12 @@ func (w *wrapperConn) WriteTimeout(p []byte, timeout time.Duration) (int, error) select { case <-w.ctx.Done(): w.Close() - return 0, errors.Annotate(w.ctx.Err(), "Cannot write because context was closed") + return 0, fmt.Errorf("cannot write because context was closed: %w", w.ctx.Err()) default: if err := w.parent.SetWriteDeadline(time.Now().Add(timeout)); err != nil { w.Close() // nolint: gosec - return 0, errors.Annotate(err, "Cannot set write deadline to the socket") + return 0, fmt.Errorf("cannot set write deadline to the socket: %w", err) } n, err := w.parent.Write(p) @@ -73,12 +73,12 @@ func (w *wrapperConn) ReadTimeout(p []byte, timeout time.Duration) (int, error) select { case <-w.ctx.Done(): w.Close() - return 0, errors.Annotate(w.ctx.Err(), "Cannot read because context was closed") + return 0, fmt.Errorf("cannot read because context was closed: %w", w.ctx.Err()) default: if err := w.parent.SetReadDeadline(time.Now().Add(timeout)); err != nil { w.Close() - return 0, errors.Annotate(err, "Cannot set read deadline to the socket") + return 0, fmt.Errorf("cannot set read deadline to the socket: %w", err) } n, err := w.parent.Read(p) diff --git a/wrappers/wrapper_obfuscated2.go b/wrappers/wrapper_obfuscated2.go index 9cfaed7..4ef601a 100644 --- a/wrappers/wrapper_obfuscated2.go +++ b/wrappers/wrapper_obfuscated2.go @@ -2,10 +2,10 @@ package wrappers import ( "crypto/cipher" + "fmt" "net" "time" - "github.com/juju/errors" "go.uber.org/zap" ) @@ -18,7 +18,7 @@ type wrapperObfuscated2 struct { func (w *wrapperObfuscated2) ReadTimeout(p []byte, timeout time.Duration) (int, error) { n, err := w.parent.ReadTimeout(p, timeout) if err != nil { - return 0, errors.Annotate(err, "Cannot read stream ciphered data") + return 0, fmt.Errorf("cannot read stream ciphered data: %w", err) } w.decryptor.XORKeyStream(p, p[:n]) @@ -28,7 +28,7 @@ func (w *wrapperObfuscated2) ReadTimeout(p []byte, timeout time.Duration) (int, func (w *wrapperObfuscated2) Read(p []byte) (int, error) { n, err := w.parent.Read(p) if err != nil { - return 0, errors.Annotate(err, "Cannot read stream ciphered data") + return n, err } w.decryptor.XORKeyStream(p, p[:n])