Przeglądaj źródła

Merge remote-tracking branch 'origin/master' into stable

tags/v1.0.9
9seconds 5 lat temu
rodzic
commit
121200cfad

+ 7
- 1
.dockerignore Wyświetl plik

@@ -1,3 +1,9 @@
1
-version.go
2 1
 vendor/
3 2
 tags
3
+.github/
4
+.bin/
5
+*.md
6
+mtg
7
+.golangci.toml
8
+.gitignore
9
+run.sh

+ 133
- 0
.github/workflows/ci.yaml Wyświetl plik

@@ -0,0 +1,133 @@
1
+---
2
+
3
+name: CI
4
+
5
+on:
6
+  push:
7
+    tags:
8
+      - v*
9
+    branches:
10
+      - master
11
+      - stable
12
+      - v1
13
+  release:
14
+    types:
15
+      - published
16
+      - released
17
+  pull_request:
18
+    types:
19
+      - opened
20
+      - edited
21
+      - reopened
22
+      - synchronize
23
+      - ready_for_review
24
+
25
+jobs:
26
+  test:
27
+    name: Test
28
+    runs-on: ubuntu-latest
29
+    timeout-minutes: 5
30
+    strategy:
31
+      matrix:
32
+        go_version:
33
+          - ~1.14
34
+          - ~1.15
35
+          - ^1.16
36
+    steps:
37
+      - name: Checkout
38
+        uses: actions/checkout@v2
39
+        with:
40
+          submodules: recursive
41
+
42
+      - name: Setup Go
43
+        uses: actions/setup-go@v2
44
+        with:
45
+          go-version: ${{ matrix.go_version }}
46
+
47
+      - name: Cache dependencies
48
+        uses: actions/cache@v2
49
+        with:
50
+          path: ~/go/pkg/mod
51
+          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
52
+          restore-keys: ${{ runner.os }}-go-
53
+
54
+      - name: Run tests
55
+        run: go test -coverprofile=./coverage.txt -covermode=atomic -v ./...
56
+
57
+      - name: Collect coverage
58
+        uses: codecov/codecov-action@v1
59
+        with:
60
+          file: ./coverage.txt
61
+
62
+  lint:
63
+    name: Lint
64
+    runs-on: ubuntu-latest
65
+    timeout-minutes: 5
66
+    steps:
67
+      - name: Checkout
68
+        uses: actions/checkout@v2
69
+        with:
70
+          submodules: recursive
71
+
72
+      - name: Run linter
73
+        uses: golangci/golangci-lint-action@v2
74
+        with:
75
+          version: v1.37.1
76
+
77
+  docker:
78
+    name: Docker
79
+    runs-on: ubuntu-latest
80
+    timeout-minutes: 15
81
+    steps:
82
+      - name: Checkout
83
+        uses: actions/checkout@v2
84
+        with:
85
+          submodules: recursive
86
+
87
+      - name: Get Docker meta
88
+        id: docker_meta
89
+        uses: crazy-max/ghaction-docker-meta@v1
90
+        with:
91
+          images: nineseconds/mtg,ghcr.io/9seconds/mtg
92
+          tag-semver: "{{version}},{{major}},{{major}}.{{minor}}"
93
+
94
+      - name: Setup QEMU
95
+        uses: docker/setup-qemu-action@v1
96
+
97
+      - name: Setup BuildX
98
+        uses: docker/setup-buildx-action@v1
99
+
100
+      - name: Setup cache
101
+        uses: actions/cache@v2
102
+        with:
103
+          path: /tmp/buildx-cache
104
+          key: ${{ runner.os }}-buildx-${{ github.sha }}
105
+          restore-keys: |
106
+            ${{ runner.os }}-buildx-
107
+
108
+      - name: Login to DockerHub
109
+        if: github.event_name != 'pull_request'
110
+        uses: docker/login-action@v1
111
+        with:
112
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
113
+          password: ${{ secrets.DOCKERHUB_PASSWORD }}
114
+
115
+      - name: Login to GHCR.io
116
+        if: github.event_name != 'pull_request'
117
+        uses: docker/login-action@v1
118
+        with:
119
+          registry: ghcr.io
120
+          username: ${{ github.repository_owner }}
121
+          password: ${{ secrets.GH_PAT }}
122
+
123
+      - name: Build and push
124
+        uses: docker/build-push-action@v2
125
+        with:
126
+          pull: true
127
+          context: .
128
+          platforms: linux/amd64,linux/arm64,linux/386
129
+          push: ${{ github.event_name != 'pull_request' }}
130
+          tags: ${{ steps.docker_meta.outputs.tags }}
131
+          labels: ${{ steps.docker_meta.outputs.labels }}
132
+          cache-from: type=local,src=/tmp/buildx-cache
133
+          cache-to: type=local,dest=/tmp/buildx-cache

+ 69
- 0
.github/workflows/codeql-analysis.yml Wyświetl plik

@@ -0,0 +1,69 @@
1
+# For most projects, this workflow file will not need changing; you simply need
2
+# to commit it to your repository.
3
+#
4
+# You may wish to alter this file to override the set of languages analyzed,
5
+# or to provide custom queries or build logic.
6
+#
7
+# ******** NOTE ********
8
+# We have attempted to detect the languages in your repository. Please check
9
+# the `language` matrix defined below to confirm you have the correct set of
10
+# supported CodeQL languages.
11
+#
12
+name: "CodeQL"
13
+
14
+on:
15
+  push:
16
+    branches: 
17
+      - master
18
+      - stable
19
+  pull_request:
20
+    # The branches below must be a subset of the branches above
21
+    branches: [ master ]
22
+  schedule:
23
+    - cron: '24 20 * * 5'
24
+
25
+jobs:
26
+  analyze:
27
+    name: Analyze
28
+    runs-on: ubuntu-latest
29
+
30
+    strategy:
31
+      fail-fast: false
32
+      matrix:
33
+        language: [ 'go' ]
34
+        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
35
+        # Learn more:
36
+        # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
37
+
38
+    steps:
39
+    - name: Checkout repository
40
+      uses: actions/checkout@v2
41
+
42
+    # Initializes the CodeQL tools for scanning.
43
+    - name: Initialize CodeQL
44
+      uses: github/codeql-action/init@v1
45
+      with:
46
+        languages: ${{ matrix.language }}
47
+        # If you wish to specify custom queries, you can do so here or in a config file.
48
+        # By default, queries listed here will override any specified in a config file.
49
+        # Prefix the list here with "+" to use these queries and those in the config file.
50
+        # queries: ./path/to/local/query, your-org/your-repo/queries@main
51
+
52
+    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
53
+    # If this step fails, then you should remove it and run the build manually (see below)
54
+    - name: Autobuild
55
+      uses: github/codeql-action/autobuild@v1
56
+
57
+    # ℹ️ Command-line programs to run using the OS shell.
58
+    # 📚 https://git.io/JvXDl
59
+
60
+    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
61
+    #    and modify them (or add more) to build your code if your project
62
+    #    uses a compiled language
63
+
64
+    #- run: |
65
+    #   make bootstrap
66
+    #   make release
67
+
68
+    - name: Perform CodeQL Analysis
69
+      uses: github/codeql-action/analyze@v1

+ 0
- 1
.gitignore Wyświetl plik

@@ -7,6 +7,5 @@
7 7
 *.out
8 8
 mtg
9 9
 vendor/
10
-version.go
11 10
 ccbuilds/
12 11
 .bin/

+ 1
- 1
.golangci.toml Wyświetl plik

@@ -10,4 +10,4 @@ format = "colored-line-number"
10 10
 
11 11
 [linters]
12 12
 enable-all = true
13
-disable = ["gochecknoglobals", "gas", "gomnd", "goerr113"]
13
+disable = ["gochecknoglobals", "gas", "gomnd", "goerr113", "exhaustivestruct"]

+ 0
- 21
.travis.yml Wyświetl plik

@@ -1,21 +0,0 @@
1
----
2
-
3
-language: go
4
-sudo: false
5
-dist: trusty
6
-
7
-go:
8
-  - 1.15.x
9
-  - 1.14.x
10
-  - 1.13.x
11
-  - master
12
-
13
-before_script: make prepare
14
-
15
-script:
16
-  - make all
17
-  - make lint
18
-
19
-matrix:
20
-  allow_failures:
21
-    - go: master

+ 5
- 7
Dockerfile Wyświetl plik

@@ -9,15 +9,13 @@ RUN set -x \
9 9
     ca-certificates \
10 10
     curl \
11 11
     git \
12
-    make \
13
-    upx
12
+    make
14 13
 
15
-COPY . /go/src/github.com/9seconds/mtg/
16
-WORKDIR /go/src/github.com/9seconds/mtg
14
+COPY . /app
15
+WORKDIR /app
17 16
 
18 17
 RUN set -x \
19
-  && make -j 4 static \
20
-  && upx --ultra-brute -qq ./mtg
18
+  && make -j 4 static
21 19
 
22 20
 
23 21
 ###############################################################################
@@ -31,4 +29,4 @@ ENV MTG_BIND=0.0.0.0:3128 \
31 29
 EXPOSE 3128 3129
32 30
 
33 31
 COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
34
-COPY --from=build /go/src/github.com/9seconds/mtg/mtg /mtg
32
+COPY --from=build /app/mtg /mtg

+ 46
- 29
Makefile Wyświetl plik

@@ -4,72 +4,89 @@ APP_NAME     := $(IMAGE_NAME)
4 4
 
5 5
 CC_BINARIES  := $(shell bash -c "echo -n $(APP_NAME)-{linux,freebsd,openbsd}-{386,amd64} $(APP_NAME)-linux-{arm,arm64}")
6 6
 
7
-GOLANGCI_LINT_VERSION := v1.31.0
7
+GOLANGCI_LINT_VERSION := v1.37.1
8 8
 
9 9
 VERSION_GO         := $(shell go version)
10 10
 VERSION_DATE       := $(shell date -Ru)
11 11
 VERSION_TAG        := $(shell git describe --tags --always)
12
-COMMON_BUILD_FLAGS := -ldflags="-s -w -X 'main.version=$(VERSION_TAG) ($(VERSION_GO)) [$(VERSION_DATE)]'"
12
+COMMON_BUILD_FLAGS := -mod=readonly -ldflags="-s -w -X 'main.version=$(VERSION_TAG) ($(VERSION_GO)) [$(VERSION_DATE)]'"
13 13
 
14
-MOD_ON  := env GO111MODULE=on
15
-MOD_OFF := env GO111MODULE=auto
14
+GOBIN  := $(ROOT_DIR)/.bin
15
+GOTOOL := env "GOBIN=$(GOBIN)" "PATH=$(ROOT_DIR)/.bin:$(PATH)"
16 16
 
17 17
 # -----------------------------------------------------------------------------
18 18
 
19
-$(APP_NAME):
20
-	@$(MOD_ON) go build $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
19
+.PHONY: all
20
+all: build
21
+
22
+.PHONY: build
23
+build:
24
+	@go build $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
21 25
 
22
-static-$(APP_NAME):
23
-	@$(MOD_ON) env CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
26
+$(APP_NAME): build
27
+
28
+.PHONY: static
29
+static:
30
+	@env CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
24 31
 
25 32
 $(APP_NAME)-%: GOOS=$(shell echo -n "$@" | sed 's?$(APP_NAME)-??' | cut -f1 -d-)
26 33
 $(APP_NAME)-%: GOARCH=$(shell echo -n "$@" | sed 's?$(APP_NAME)-??' | cut -f2 -d-)
27 34
 $(APP_NAME)-%: ccbuilds
28
-	@$(MOD_ON) env "GOOS=$(GOOS)" "GOARCH=$(GOARCH)" \
35
+	@env "GOOS=$(GOOS)" "GOARCH=$(GOARCH)" \
29 36
 		go build \
30 37
 		$(COMMON_BUILD_FLAGS) \
31 38
 		-o "./ccbuilds/$(APP_NAME)-$(GOOS)-$(GOARCH)"
32 39
 
40
+.PHONY: ccbuilds
33 41
 ccbuilds:
34 42
 	@rm -rf ./ccbuilds && mkdir -p ./ccbuilds
35 43
 
36 44
 vendor: go.mod go.sum
37 45
 	@$(MOD_ON) go mod vendor
38 46
 
39
-# -----------------------------------------------------------------------------
40
-
41
-.PHONY: all
42
-all: $(APP_NAME)
47
+.PHONY: test
48
+test:
49
+	@go test -v ./...
43 50
 
44
-.PHONY: static
45
-static: static-$(APP_NAME)
51
+.PHONY: citest
52
+citest:
53
+	@go test -coverprofile=coverage.txt -covermode=atomic -race -v ./...
46 54
 
47 55
 .PHONY: crosscompile
48 56
 crosscompile: $(CC_BINARIES)
49 57
 
50
-.PHONY: crosscompile-dir
51
-crosscompile-dir:
52
-	@rm -rf "$(CC_DIR)" && mkdir -p "$(CC_DIR)"
53
-
54
-.PHONY: lint
55
-lint: vendor
56
-	@$(MOD_OFF) "$(ROOT_DIR)/.bin/golangci-lint" run
57
-
58 58
 .PHONY: clean
59 59
 clean:
60 60
 	@git clean -xfd && \
61 61
 		git reset --hard >/dev/null && \
62 62
 		git submodule foreach --recursive sh -c 'git clean -xfd && git reset --hard' >/dev/null
63 63
 
64
+.PHONY: lint
65
+lint:
66
+	@$(GOTOOL) golangci-lint run
67
+
64 68
 .PHONY: docker
65 69
 docker:
66 70
 	@docker build --pull -t "$(IMAGE_NAME)" "$(ROOT_DIR)"
67 71
 
68
-.PHONY: prepare
69
-prepare: install-lint
72
+.PHONY: doc
73
+doc:
74
+	@$(GOTOOL) godoc -http 0.0.0.0:10000
75
+
76
+.PHONY: install-tools
77
+install-tools: install-tools-lint install-tools-godoc
70 78
 
71
-.PHONY: install-lint
72
-install-lint:
73
-	@mkdir -p ./bin || true && \
79
+.PHONY: install-tools-lint
80
+install-tools-lint:
81
+	@mkdir -p "$(GOBIN)" || true && \
74 82
 		curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh \
75
-		| $(MOD_OFF) bash -s -- -b "$(ROOT_DIR)/.bin" $(GOLANGCI_LINT_VERSION)
83
+		| bash -s -- -b "$(GOBIN)" "$(GOLANGCI_LINT_VERSION)"
84
+
85
+.PHONY: install-tools-godoc
86
+install-tools-godoc:
87
+	@mkdir -p "$(GOBIN)" || true && \
88
+		$(GOTOOL) go get -u golang.org/x/tools/cmd/godoc
89
+
90
+.PHONY: update-deps
91
+upgrade-deps:
92
+	$go get -u && go mod tidy

+ 1
- 2
README.md Wyświetl plik

@@ -189,8 +189,7 @@ supported environment variables:
189 189
 | `MTG_IPV6`                    | `-6`, `--public-ipv6`        | [Autodetect](https://ifconfig.co) | IPv6 address:port of this proxy. This is required if you NAT your proxy or run it in a docker container. In that case, you absolutely need to specify public IPv6 address of the proxy, otherwise either URLs will be broken or proxy could not access Telegram middle proxies. |
190 190
 | `MTG_STATS_BIND`              | `-t`, `--stats-bind`         | `127.0.0.1:3129`                  | Which hist:port should we bind the internal statistics HTTP server (Prometheus).                                                                                                                                                                                                |
191 191
 | `MTG_STATS_NAMESPACE`         | `--stats-namespace`          | `mtg`                             | Which namespace should be used for prometheus metrics.                                                                                                                                                                                                                          |
192
-| `MTG_STATSD_ADDR`             | `--statsd-addr`              |                                   | IP:host addresses of statsd service. No defaults, by defaults we do not send anything there.                                                                                                                                                                                    |
193
-| `MTG_STATSD_PORT`             | `--statsd-port`              | `8125`                            | Which port should we use to work with statsd.                                                                                                                                                                                                                                   |
192
+| `MTG_STATSD_ADDR`             | `--statsd-addr`              |                                   | host:port of statsd service. No defaults, by default we do not send anything there.                                                                                                                                                                                             |
194 193
 | `MTG_STATSD_PREFIX`           | `--statsd-prefix`            | `mtg`                             | Which bucket prefix we should use. For example, if you set `mtg`, then metric `traffic.ingress` would be send as `mtg.traffic.ingress`.                                                                                                                                         |
195 194
 | `MTG_STATSD_TAGS_FORMAT`      | `--statsd-tags-format`       |                                   | Which tags format we should use. By default, we are using default vanilla statsd tags format but if you want to send directly to InfluxDB or Datadog, please specify it there. Possible options are `influxdb` and `datadog`.                                                   |
196 195
 | `MTG_STATSD_TAGS`             | `--statsd-tags`              |                                   | Which tags should we send to statsd with our metrics. Please specify them as `key=value` pairs.                                                                                                                                                                                 |

+ 24
- 0
SECURITY.md Wyświetl plik

@@ -0,0 +1,24 @@
1
+# Security Policy
2
+
3
+## Supported Versions
4
+
5
+We support 2 tracks: 2.x and 1.x
6
+
7
+| Version | Supported          |
8
+| ------- | ------------------ |
9
+| 2.x     | :white_check_mark: |
10
+| 1.x     | :interrobang:      |
11
+| < 1.0   | :x:                |
12
+
13
+1.x has adtag support. We do not plan any active development there but we guarantee:
14
+
15
+1. Regular dependency updates
16
+2. Updates for Golang versions
17
+3. Security vulnerability fixes
18
+4. Merging small PRs
19
+
20
+2.x is in active development and have a full support.
21
+
22
+## Reporting a Vulnerability
23
+
24
+If you have found a vulnerability, please report about it to nineseconds@yandex.ru, telegram @9seconds or here in issues

+ 1
- 1
cli/proxy.go Wyświetl plik

@@ -19,7 +19,7 @@ import (
19 19
 	"go.uber.org/zap/zapcore"
20 20
 )
21 21
 
22
-func Proxy() error { // nolint: funlen
22
+func Proxy() error { // nolint: funlen,cyclop
23 23
 	ctx := utils.GetSignalContext()
24 24
 
25 25
 	atom := zap.NewAtomicLevel()

+ 2
- 2
cli/utils.go Wyświetl plik

@@ -9,7 +9,7 @@ import (
9 9
 
10 10
 func Fatal(arg interface{}) {
11 11
 	if value, ok := arg.(error); ok {
12
-		arg = fmt.Errorf("fatal error: %+v", value)
12
+		arg = fmt.Errorf("fatal error: %+v", value) // nolint: errorlint
13 13
 	}
14 14
 
15 15
 	PrintStderr(arg)
@@ -21,7 +21,7 @@ func PrintStderr(args ...interface{}) {
21 21
 }
22 22
 
23 23
 func PrintStdout(args ...interface{}) {
24
-	fmt.Println(args...)
24
+	fmt.Println(args...) // nolint: forbidigo
25 25
 }
26 26
 
27 27
 func PrintJSONStderr(data interface{}) {

+ 1
- 1
config/config.go Wyświetl plik

@@ -160,7 +160,7 @@ type Opt struct {
160 160
 
161 161
 var C = Config{}
162 162
 
163
-func Init(options ...Opt) error { // nolint: gocyclo, funlen
163
+func Init(options ...Opt) error { // nolint: gocyclo, funlen, cyclop
164 164
 	for _, opt := range options {
165 165
 		switch opt.Option {
166 166
 		case OptionTypeDebug:

+ 19
- 11
config/urls.go Wyświetl plik

@@ -15,8 +15,8 @@ type URLs struct {
15 15
 }
16 16
 
17 17
 type IPURLs struct {
18
-	IPv4      URLs   `json:"ipv4"`
19
-	IPv6      URLs   `json:"ipv6"`
18
+	IPv4      *URLs  `json:"ipv4,omitempty"`
19
+	IPv6      *URLs  `json:"ipv6,omitempty"`
20 20
 	BotSecret string `json:"secret_for_mtproxybot"`
21 21
 }
22 22
 
@@ -32,25 +32,33 @@ func GetURLs() (urls IPURLs) {
32 32
 		secret = "ee" + hex.EncodeToString(C.Secret) + hex.EncodeToString([]byte(C.CloakHost))
33 33
 	}
34 34
 
35
-	urls.IPv4 = makeURLs(C.PublicIPv4, secret)
36
-	urls.IPv6 = makeURLs(C.PublicIPv6, secret)
35
+	if C.PublicIPv4.IP != nil {
36
+		urls.IPv4 = makeURLs(C.PublicIPv4, secret)
37
+	}
38
+
39
+	if C.PublicIPv6.IP != nil {
40
+		urls.IPv6 = makeURLs(C.PublicIPv6, secret)
41
+	}
42
+
37 43
 	urls.BotSecret = hex.EncodeToString(C.Secret)
38 44
 
39 45
 	return urls
40 46
 }
41 47
 
42
-func makeURLs(addr *net.TCPAddr, secret string) (urls URLs) {
48
+func makeURLs(addr *net.TCPAddr, secret string) *URLs {
49
+	urls := &URLs{}
50
+
43 51
 	values := url.Values{}
44 52
 	values.Set("server", addr.IP.String())
45 53
 	values.Set("port", strconv.Itoa(addr.Port))
46 54
 	values.Set("secret", secret)
47 55
 
48
-	urls.TG = makeTGURL(values)
49
-	urls.TMe = makeTMeURL(values)
50
-	urls.TGQRCode = makeQRCodeURL(urls.TG)
51
-	urls.TMeQRCode = makeQRCodeURL(urls.TG)
52
-
53
-	return
56
+	return &URLs{
57
+		TG:        makeTGURL(values),
58
+		TMe:       makeTMeURL(values),
59
+		TGQRCode:  makeQRCodeURL(urls.TG),
60
+		TMeQRCode: makeQRCodeURL(urls.TMe),
61
+	}
54 62
 }
55 63
 
56 64
 func makeTGURL(values url.Values) string {

+ 2
- 2
faketls/client_protocol.go Wyświetl plik

@@ -52,10 +52,10 @@ func (c *ClientProtocol) Handshake(socket conntypes.StreamReadWriteCloser) (conn
52 52
 
53 53
 	conn, err := c.ClientProtocol.Handshake(conn)
54 54
 	if err != nil {
55
-		return nil, err
55
+		return nil, err // nolint: wrapcheck
56 56
 	}
57 57
 
58
-	return conn, err
58
+	return conn, err // nolint: wrapcheck
59 59
 }
60 60
 
61 61
 func (c *ClientProtocol) tlsHandshake(conn io.ReadWriter) error {

+ 11
- 8
go.mod Wyświetl plik

@@ -4,18 +4,21 @@ go 1.13
4 4
 
5 5
 require (
6 6
 	github.com/VictoriaMetrics/fastcache v1.5.7
7
-	github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d
7
+	github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15
8 8
 	github.com/beevik/ntp v0.3.0
9
-	github.com/prometheus/client_golang v1.7.1
10
-	github.com/prometheus/common v0.13.0 // indirect
11
-	github.com/smira/go-statsd v1.3.1
9
+	github.com/golang/snappy v0.0.3 // indirect
10
+	github.com/prometheus/client_golang v1.9.0
11
+	github.com/prometheus/common v0.18.0 // indirect
12
+	github.com/prometheus/procfs v0.6.0 // indirect
13
+	github.com/smira/go-statsd v1.3.2
12 14
 	go.uber.org/multierr v1.6.0 // indirect
13 15
 	go.uber.org/zap v1.16.0
14
-	golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a
16
+	golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83
15 17
 	golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
16
-	golang.org/x/net v0.0.0-20200904194848-62affa334b73 // indirect
17
-	golang.org/x/sys v0.0.0-20200918174421-af09f7315aff
18
-	golang.org/x/tools v0.0.0-20200319210407-521f4a0cd458 // indirect
18
+	golang.org/x/mod v0.4.1 // indirect
19
+	golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect
20
+	golang.org/x/sys v0.0.0-20210303074136-134d130e1a04
21
+	golang.org/x/tools v0.1.0 // indirect
19 22
 	google.golang.org/protobuf v1.25.0 // indirect
20 23
 	gopkg.in/alecthomas/kingpin.v2 v2.2.6
21 24
 	honnef.co/go/tools v0.0.1-2020.1.3 // indirect

+ 44
- 59
go.sum Wyświetl plik

@@ -9,16 +9,14 @@ github.com/VictoriaMetrics/fastcache v1.5.7 h1:4y6y0G8PRzszQUYIQHHssv/jgPHAb5qQu
9 9
 github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8=
10 10
 github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
11 11
 github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
12
-github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=
13 12
 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
14 13
 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
15 14
 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
16
-github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY=
17 15
 github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
18
-github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 h1:Hs82Z41s6SdL1CELW+XaDYmOH4hkBN4/N9og/AsOv7E=
19 16
 github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
20
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
21 17
 github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
18
+github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15 h1:AUNCr9CiJuwrRYS3XieqF+Z9B9gNxo/eANAJCF2eiN4=
19
+github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
22 20
 github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
23 21
 github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
24 22
 github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
@@ -32,9 +30,7 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN
32 30
 github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
33 31
 github.com/beevik/ntp v0.3.0 h1:xzVrPrE4ziasFXgBVBZJDP0Wg/KpMwk2KHJ4Ba8GrDw=
34 32
 github.com/beevik/ntp v0.3.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg=
35
-github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
36 33
 github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
37
-github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0=
38 34
 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
39 35
 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
40 36
 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
@@ -79,7 +75,6 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG
79 75
 github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
80 76
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
81 77
 github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
82
-github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo=
83 78
 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
84 79
 github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
85 80
 github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
@@ -87,11 +82,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU
87 82
 github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
88 83
 github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
89 84
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
90
-github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
91 85
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
92
-github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
93 86
 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
94
-github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
95 87
 github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
96 88
 github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
97 89
 github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
@@ -99,21 +91,22 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU
99 91
 github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
100 92
 github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
101 93
 github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
102
-github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
103 94
 github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
95
+github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=
96
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
104 97
 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
105
-github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
106 98
 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
99
+github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA=
100
+github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
107 101
 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
108 102
 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
109 103
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
110 104
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
111
-github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
112 105
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
113
-github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
114 106
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
115
-github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
116 107
 github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
108
+github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
109
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
117 110
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
118 111
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
119 112
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -220,9 +213,7 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP
220 213
 github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
221 214
 github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
222 215
 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
223
-github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
224 216
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
225
-github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
226 217
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
227 218
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
228 219
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -234,33 +225,31 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP
234 225
 github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
235 226
 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
236 227
 github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
237
-github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA=
238 228
 github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
239
-github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8=
229
+github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU=
230
+github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU=
240 231
 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
241 232
 github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
242
-github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE=
243 233
 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
244 234
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
245 235
 github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
246 236
 github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
247 237
 github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
248 238
 github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
249
-github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw=
250 239
 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
251 240
 github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
252 241
 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
253
-github.com/prometheus/common v0.13.0 h1:vJlpe9wPgDRM1Z+7Wj3zUUjY1nr6/1jNKyl7llliccg=
254
-github.com/prometheus/common v0.13.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
255
-github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d h1:GoAlyOgbOEIFdaDqxJVlbOQ1DtGmZWs/Qau0hIlk+WQ=
242
+github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
243
+github.com/prometheus/common v0.18.0 h1:WCVKW7aL6LEe1uryfI9dnEc2ZqNB1Fn0ok930v0iL1Y=
244
+github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
256 245
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
257 246
 github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
258
-github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs=
259 247
 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
260
-github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8=
261 248
 github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
262
-github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
263 249
 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
250
+github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
251
+github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4=
252
+github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
264 253
 github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
265 254
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
266 255
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
@@ -274,8 +263,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
274 263
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
275 264
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
276 265
 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
277
-github.com/smira/go-statsd v1.3.1 h1:JalGiHNdK7GqVAPpg7j0Kwp2jZrz/fCg/B4ZuNuBY2w=
278
-github.com/smira/go-statsd v1.3.1/go.mod h1:1srXJ9/pbnN04G8f4F1jUzsGOnwkPKXciyqpewGlkC4=
266
+github.com/smira/go-statsd v1.3.2 h1:1EeuzxNZ/TD9apbTOFSM9nulqfcsQFmT4u1A2DREabI=
267
+github.com/smira/go-statsd v1.3.2/go.mod h1:1srXJ9/pbnN04G8f4F1jUzsGOnwkPKXciyqpewGlkC4=
279 268
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
280 269
 github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
281 270
 github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
@@ -285,9 +274,7 @@ github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3
285 274
 github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
286 275
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
287 276
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
288
-github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
289 277
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
290
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
291 278
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
292 279
 github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
293 280
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -295,7 +282,7 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1
295 282
 github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
296 283
 github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
297 284
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
298
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
285
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
299 286
 go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
300 287
 go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
301 288
 go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
@@ -303,17 +290,14 @@ go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
303 290
 go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
304 291
 go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
305 292
 go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
306
-go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
307 293
 go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
308 294
 go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
309 295
 go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
310 296
 go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
311 297
 go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
312
-go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
313 298
 go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
314 299
 go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
315 300
 go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
316
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
317 301
 go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
318 302
 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
319 303
 go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
@@ -321,28 +305,26 @@ go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
321 305
 go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
322 306
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
323 307
 golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
324
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
325 308
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
326 309
 golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
327 310
 golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
328 311
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
329 312
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
330
-golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM=
331
-golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
313
+golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g=
314
+golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
332 315
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
333 316
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
334 317
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
335 318
 golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
336 319
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
337
-golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
338 320
 golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
339 321
 golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
340 322
 golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
341 323
 golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
342
-golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee h1:WG0RUwxtNT4qqaXX3DPA8zHFNm/D9xaBpxzHt1WcA/E=
343 324
 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
344
-golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
345
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
325
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
326
+golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY=
327
+golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
346 328
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
347 329
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
348 330
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -359,19 +341,20 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR
359 341
 golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
360 342
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
361 343
 golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
362
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
363 344
 golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
364
-golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA=
365
-golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
345
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
346
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
347
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
366 348
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
367 349
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
368 350
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
369 351
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
370
-golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw=
371 352
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
372 353
 golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
373 354
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
374 355
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
356
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
357
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
375 358
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
376 359
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
377 360
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -386,16 +369,24 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w
386 369
 golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
387 370
 golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
388 371
 golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
372
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
389 373
 golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
390 374
 golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
391
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
392 375
 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
393 376
 golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
394 377
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
395
-golang.org/x/sys v0.0.0-20200918174421-af09f7315aff h1:1CPUrky56AcgSpxz/KfgzQWzfG09u5YOL8MvPYBlrL8=
396
-golang.org/x/sys v0.0.0-20200918174421-af09f7315aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
378
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
379
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
380
+golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
381
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
382
+golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
383
+golang.org/x/sys v0.0.0-20210303074136-134d130e1a04 h1:cEhElsAv9LUt9ZUUocxzWe05oFLVd+AA2nstydTeI8g=
384
+golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
385
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
386
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
397 387
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
398 388
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
389
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
399 390
 golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
400 391
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
401 392
 golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -409,18 +400,18 @@ golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3
409 400
 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
410 401
 golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
411 402
 golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
412
-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs=
413 403
 golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
414 404
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
415 405
 golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
416 406
 golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
417 407
 golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
418
-golang.org/x/tools v0.0.0-20200319210407-521f4a0cd458 h1:DgonIcqC7u+gVZX7lpuReBil5B/i8fvW/hAQdhT6/ao=
419
-golang.org/x/tools v0.0.0-20200319210407-521f4a0cd458/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
408
+golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
409
+golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
420 410
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
421 411
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
422
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
423 412
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
413
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
414
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
424 415
 google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
425 416
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
426 417
 google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -447,7 +438,6 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ
447 438
 google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
448 439
 google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
449 440
 google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
450
-google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
451 441
 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
452 442
 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
453 443
 google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
@@ -455,7 +445,6 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
455 445
 gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
456 446
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
457 447
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
458
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
459 448
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
460 449
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
461 450
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -467,19 +456,15 @@ gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
467 456
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
468 457
 gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
469 458
 gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
470
-gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
471 459
 gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
472
-gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
473 460
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
474 461
 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
475
-gopkg.in/yaml.v2 v2.2.5 h1:ymVxjfMaHvXD8RqPRmzHHsB3VvucivSkIAvJFDI5O3c=
476 462
 gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
477 463
 gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
478 464
 gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
479 465
 honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
480 466
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
481 467
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
482
-honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
483 468
 honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
484 469
 honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U=
485 470
 honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=

+ 1
- 1
hub/connection.go Wyświetl plik

@@ -30,7 +30,7 @@ type connection struct {
30 30
 	channelConnDetach chan conntypes.ConnID
31 31
 }
32 32
 
33
-func (c *connection) run() {
33
+func (c *connection) run() { // nolint: cyclop
34 34
 	defer c.Close()
35 35
 
36 36
 	ttl := time.NewTimer(connectionTTL)

+ 1
- 1
mtproto/protocol.go Wyświetl plik

@@ -51,7 +51,7 @@ func doRPCNonceRequest(conn conntypes.BasePacketWriter) (*rpc.NonceRequest, erro
51 51
 	}
52 52
 
53 53
 	if err := conn.Write(rpcNonceReq.Bytes()); err != nil {
54
-		return nil, err
54
+		return nil, err // nolint: wrapcheck
55 55
 	}
56 56
 
57 57
 	return rpcNonceReq, nil

+ 1
- 1
proxy/direct.go Wyświetl plik

@@ -15,7 +15,7 @@ const directPipeBufferSize = 1024
15 15
 func directConnection(request *protocol.TelegramRequest) error {
16 16
 	telegramConnRaw, err := obfuscated2.TelegramProtocol(request)
17 17
 	if err != nil {
18
-		return err
18
+		return err // nolint: wrapcheck
19 19
 	}
20 20
 
21 21
 	telegramConn := telegramConnRaw.(conntypes.StreamReadWriteCloser)

+ 5
- 4
stats/stats_statsd.go Wyświetl plik

@@ -168,17 +168,18 @@ func (s *statsStatsd) prepareVals(metric string, tags []*statsStatsdTag) (string
168 168
 
169 169
 func (s *statsStatsd) initGauge(metric, key string, tags []statsd.Tag) {
170 170
 	s.seenMutex.RLock()
171
-	_, ok := s.seen[key]
172
-	s.seenMutex.RUnlock()
171
+	if _, ok := s.seen[key]; ok {
172
+		s.seenMutex.RUnlock()
173 173
 
174
-	if ok {
175 174
 		return
175
+	} else { // nolint: golint,revive
176
+		s.seenMutex.RUnlock()
176 177
 	}
177 178
 
178 179
 	s.seenMutex.Lock()
179 180
 	defer s.seenMutex.Unlock()
180 181
 
181
-	if _, ok = s.seen[key]; !ok {
182
+	if _, ok := s.seen[key]; !ok {
182 183
 		s.seen[key] = struct{}{}
183 184
 		s.client.Gauge(metric, 0, tags...)
184 185
 	}

+ 1
- 1
telegram/api/api.go Wyświetl plik

@@ -40,5 +40,5 @@ func request(url string) (io.ReadCloser, error) {
40 40
 		return nil, fmt.Errorf("cannot perform a request: %w", err)
41 41
 	}
42 42
 
43
-	return resp.Body, err
43
+	return resp.Body, err // nolint: wrapcheck
44 44
 }

+ 6
- 6
tlstypes/consts.go Wyświetl plik

@@ -20,9 +20,9 @@ const (
20 20
 type CipherSuiteType uint8
21 21
 
22 22
 const (
23
-	CipherSuiteType_TLS_AES_128_GCM_SHA256       CipherSuiteType = iota // nolint: stylecheck,golint
24
-	CipherSuiteType_TLS_AES_256_GCM_SHA384                              // nolint: stylecheck,golint
25
-	CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256                        // nolint: stylecheck,golint
23
+	CipherSuiteType_TLS_AES_128_GCM_SHA256       CipherSuiteType = iota // nolint: stylecheck,golint,revive
24
+	CipherSuiteType_TLS_AES_256_GCM_SHA384                              // nolint: stylecheck,golint,revive
25
+	CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256                        // nolint: stylecheck,golint,revive
26 26
 )
27 27
 
28 28
 func (c CipherSuiteType) Bytes() []byte {
@@ -69,9 +69,9 @@ var (
69 69
 	Version12Bytes = []byte{0x03, 0x03}
70 70
 	Version13Bytes = []byte{0x03, 0x04}
71 71
 
72
-	CipherSuiteType_TLS_AES_128_GCM_SHA256_Bytes       = []byte{0x13, 0x01} // nolint: stylecheck,golint
73
-	CipherSuiteType_TLS_AES_256_GCM_SHA384_Bytes       = []byte{0x13, 0x02} // nolint: stylecheck,golint
74
-	CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256_Bytes = []byte{0x13, 0x03} // nolint: stylecheck,golint
72
+	CipherSuiteType_TLS_AES_128_GCM_SHA256_Bytes       = []byte{0x13, 0x01} // nolint: stylecheck,golint,revive
73
+	CipherSuiteType_TLS_AES_256_GCM_SHA384_Bytes       = []byte{0x13, 0x02} // nolint: stylecheck,golint,revive
74
+	CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256_Bytes = []byte{0x13, 0x03} // nolint: stylecheck,golint,revive
75 75
 )
76 76
 
77 77
 type Byter interface {

+ 1
- 1
utils/read_full.go Wyświetl plik

@@ -11,7 +11,7 @@ func ReadFull(src io.Reader) (rv []byte, err error) {
11 11
 	for n == len(buf) {
12 12
 		n, err = src.Read(buf)
13 13
 		if err != nil {
14
-			return nil, err
14
+			return nil, err // nolint: wrapcheck
15 15
 		}
16 16
 
17 17
 		rv = append(rv, buf[:n]...)

+ 2
- 2
wrappers/packet/mtproto_frame.go Wyświetl plik

@@ -40,7 +40,7 @@ type wrapperMtprotoFrame struct {
40 40
 	writeSeqNo int32
41 41
 }
42 42
 
43
-func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { // nolint: funlen
43
+func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { // nolint: funlen, cyclop
44 44
 	buf := &bytes.Buffer{}
45 45
 
46 46
 	sum := crc32.NewIEEE()
@@ -132,7 +132,7 @@ func (w *wrapperMtprotoFrame) Write(p conntypes.Packet) error {
132 132
 
133 133
 	_, err := w.parent.Write(buf.Bytes())
134 134
 
135
-	return err
135
+	return err // nolint: wrapcheck
136 136
 }
137 137
 
138 138
 func (w *wrapperMtprotoFrame) Close() error {

+ 2
- 2
wrappers/rwc/ping.go Wyświetl plik

@@ -20,7 +20,7 @@ func (w *wrapperPing) Read(p []byte) (int, error) {
20 20
 		}
21 21
 	}
22 22
 
23
-	return n, err
23
+	return n, err // nolint: wrapcheck
24 24
 }
25 25
 
26 26
 func (w *wrapperPing) Write(p []byte) (int, error) {
@@ -32,7 +32,7 @@ func (w *wrapperPing) Write(p []byte) (int, error) {
32 32
 		}
33 33
 	}
34 34
 
35
-	return n, err
35
+	return n, err // nolint: wrapcheck
36 36
 }
37 37
 
38 38
 func (w *wrapperPing) Close() error {

+ 2
- 2
wrappers/stream/conn.go Wyświetl plik

@@ -43,7 +43,7 @@ func (w *wrapperConn) Write(p []byte) (int, error) {
43 43
 		w.Close()
44 44
 	}
45 45
 
46
-	return n, err
46
+	return n, err // nolint: wrapcheck
47 47
 }
48 48
 
49 49
 func (w *wrapperConn) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
@@ -64,7 +64,7 @@ func (w *wrapperConn) Read(p []byte) (int, error) {
64 64
 		w.Close()
65 65
 	}
66 66
 
67
-	return n, err
67
+	return n, err // nolint: wrapcheck
68 68
 }
69 69
 
70 70
 func (w *wrapperConn) Close() error {

+ 1
- 1
wrappers/stream/faketls.go Wyświetl plik

@@ -85,7 +85,7 @@ func NewFakeTLS(socket conntypes.StreamReadWriteCloser) conntypes.StreamReadWrit
85 85
 		for {
86 86
 			rec, err := tlstypes.ReadRecord(faketls.parent)
87 87
 			if err != nil {
88
-				return nil, err
88
+				return nil, err // nolint: wrapcheck
89 89
 			}
90 90
 
91 91
 			switch rec.Type {

+ 1
- 1
wrappers/stream/obfuscated2.go Wyświetl plik

@@ -31,7 +31,7 @@ func (w *wrapperObfuscated2) ReadTimeout(p []byte, timeout time.Duration) (int,
31 31
 func (w *wrapperObfuscated2) Read(p []byte) (int, error) {
32 32
 	n, err := w.parent.Read(p)
33 33
 	if err != nil {
34
-		return n, err
34
+		return n, err // nolint: wrapcheck
35 35
 	}
36 36
 
37 37
 	w.decryptor.XORKeyStream(p, p[:n])

+ 7
- 6
wrappers/stream/rewind.go Wyświetl plik

@@ -2,6 +2,7 @@ package stream
2 2
 
3 3
 import (
4 4
 	"bytes"
5
+	"errors"
5 6
 	"io"
6 7
 	"net"
7 8
 	"sync"
@@ -36,8 +37,8 @@ func (w *wrapperRewind) Read(p []byte) (int, error) {
36 37
 	defer w.mutex.Unlock()
37 38
 
38 39
 	if w.rewinded {
39
-		if n, err := w.buf.Read(p); err != io.EOF {
40
-			return n, err
40
+		if n, err := w.buf.Read(p); errors.Is(err, io.EOF) {
41
+			return n, err // nolint: wrapcheck
41 42
 		}
42 43
 	}
43 44
 
@@ -47,7 +48,7 @@ func (w *wrapperRewind) Read(p []byte) (int, error) {
47 48
 		w.buf.Write(p[:n])
48 49
 	}
49 50
 
50
-	return n, err
51
+	return n, err // nolint: wrapcheck
51 52
 }
52 53
 
53 54
 func (w *wrapperRewind) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
@@ -55,8 +56,8 @@ func (w *wrapperRewind) ReadTimeout(p []byte, timeout time.Duration) (int, error
55 56
 	defer w.mutex.Unlock()
56 57
 
57 58
 	if w.rewinded {
58
-		if n, err := w.buf.Read(p); err != io.EOF {
59
-			return n, err
59
+		if n, err := w.buf.Read(p); errors.Is(err, io.EOF) {
60
+			return n, err // nolint: wrapcheck
60 61
 		}
61 62
 	}
62 63
 
@@ -66,7 +67,7 @@ func (w *wrapperRewind) ReadTimeout(p []byte, timeout time.Duration) (int, error
66 67
 		w.buf.Write(p[:n])
67 68
 	}
68 69
 
69
-	return n, err
70
+	return n, err // nolint: wrapcheck
70 71
 }
71 72
 
72 73
 func (w *wrapperRewind) Conn() net.Conn {

+ 1
- 1
wrappers/stream/stats_telegram.go Wyświetl plik

@@ -56,7 +56,7 @@ func (w *wrapperTelegramStats) Close() error {
56 56
 		stats.Stats.TelegramDisconnected(w.dc, w.RemoteAddr())
57 57
 	})
58 58
 
59
-	return err
59
+	return err // nolint: wrapcheck
60 60
 }
61 61
 
62 62
 func NewTelegramStats(dc conntypes.DC, parent conntypes.StreamReadWriteCloser) conntypes.StreamReadWriteCloser {

+ 4
- 4
wrappers/stream/stats_traffic.go Wyświetl plik

@@ -17,28 +17,28 @@ func (w *wrapperTrafficStats) Write(p []byte) (int, error) {
17 17
 	n, err := w.parent.Write(p)
18 18
 	stats.Stats.EgressTraffic(n)
19 19
 
20
-	return n, err
20
+	return n, err // nolint: wrapcheck
21 21
 }
22 22
 
23 23
 func (w *wrapperTrafficStats) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
24 24
 	n, err := w.parent.WriteTimeout(p, timeout)
25 25
 	stats.Stats.EgressTraffic(n)
26 26
 
27
-	return n, err
27
+	return n, err // nolint: wrapcheck
28 28
 }
29 29
 
30 30
 func (w *wrapperTrafficStats) Read(p []byte) (int, error) {
31 31
 	n, err := w.parent.Read(p)
32 32
 	stats.Stats.IngressTraffic(n)
33 33
 
34
-	return n, err
34
+	return n, err // nolint: wrapcheck
35 35
 }
36 36
 
37 37
 func (w *wrapperTrafficStats) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
38 38
 	n, err := w.parent.ReadTimeout(p, timeout)
39 39
 	stats.Stats.IngressTraffic(n)
40 40
 
41
-	return n, err
41
+	return n, err // nolint: wrapcheck
42 42
 }
43 43
 
44 44
 func (w *wrapperTrafficStats) Conn() net.Conn {

Ładowanie…
Anuluj
Zapisz