From bbed421cd879a526c01dcd5de3ef8a63e3b8d6b4 Mon Sep 17 00:00:00 2001 From: Caleb Doxsey Date: Fri, 21 Apr 2023 17:25:11 -0600 Subject: [PATCH] config: remove source, remove deadcode, fix linting issues (#4118) * remove source, remove deadcode, fix linting issues * use github action for lint * fix missing envoy --- .github/workflows/lint.yaml | 26 ++ .github/workflows/test.yaml | 4 +- .golangci.yml | 9 + Makefile | 2 +- authenticate/handlers.go | 2 +- authenticate/handlers_test.go | 10 +- authenticate/identity_profile.go | 2 +- authorize/check_response.go | 4 +- authorize/check_response_test.go | 7 +- authorize/evaluator/evaluator_test.go | 26 +- .../evaluator/google_cloud_serverless.go | 2 +- authorize/evaluator/policy_evaluator_test.go | 19 +- authorize/grpc_test.go | 13 +- config/config_source.go | 4 +- config/envoyconfig/bootstrap.go | 2 +- config/envoyconfig/clusters_envoy_admin.go | 2 +- config/envoyconfig/envoyconfig.go | 6 +- config/envoyconfig/listeners.go | 32 -- config/envoyconfig/listeners_envoy_admin.go | 2 +- config/envoyconfig/listeners_test.go | 37 +- config/envoyconfig/protocols.go | 2 +- config/envoyconfig/route_configurations.go | 2 +- config/envoyconfig/routes.go | 14 +- config/envoyconfig/routes_test.go | 40 +-- config/log.go | 2 +- config/metrics.go | 4 +- config/metrics_test.go | 2 +- config/options.go | 87 +---- config/options_test.go | 14 +- config/policy.go | 40 +-- config/policy_test.go | 2 +- config/trace.go | 4 +- databroker/databroker.go | 2 +- databroker/databroker_test.go | 12 +- go.mod | 132 +------ go.sum | 332 +----------------- integration/authorization_test.go | 2 +- integration/benchmark_test.go | 4 +- .../cmd/pomerium-integration-tests/main.go | 2 +- integration/control_plane_test.go | 6 +- integration/flows/flows.go | 6 +- integration/forms/forms.go | 2 +- integration/main_test.go | 2 +- integration/policy_test.go | 22 +- internal/autocert/manager.go | 8 +- internal/autocert/manager_test.go | 26 +- internal/controlplane/events.go | 12 +- internal/controlplane/http.go | 2 +- internal/controlplane/xdsmgr/xdsmgr.go | 2 +- internal/databroker/config_source.go | 4 +- internal/databroker/server.go | 2 +- internal/databroker/server_test.go | 48 +-- internal/deterministicecdsa/ecdsa.go | 2 +- internal/encoding/jws/jws.go | 4 +- internal/encoding/mock/mock_encoder.go | 4 +- internal/encoding/mock/mock_encoder_test.go | 4 +- internal/handlers/jwks_test.go | 2 +- internal/handlers/webauthn/webauthn.go | 2 +- internal/handlers/well_known_pomerium_test.go | 2 +- internal/httputil/handlers_test.go | 2 +- internal/httputil/httputil_test.go | 6 +- internal/httputil/reproxy/reproxy_test.go | 2 +- internal/httputil/router.go | 2 +- internal/identity/manager/manager.go | 3 +- internal/identity/manager/manager_test.go | 6 +- internal/identity/manager/sync.go | 4 +- internal/identity/mock_provider.go | 6 +- internal/identity/oauth/apple/apple.go | 11 +- internal/identity/oauth/github/github.go | 6 +- internal/log/log.go | 2 +- internal/registry/inmemory/inmemory.go | 10 +- internal/registry/inmemory/inmemory_test.go | 4 +- internal/registry/reporter.go | 4 +- internal/registry/reporter_test.go | 4 +- internal/sessions/cookie/cookie_store.go | 4 +- internal/sessions/cookie/cookie_store_test.go | 5 +- internal/sessions/header/header_store_test.go | 6 +- internal/sessions/queryparam/query_store.go | 4 +- .../sessions/queryparam/query_store_test.go | 3 +- internal/telemetry/grpc_test.go | 2 +- internal/telemetry/metrics/grpc_test.go | 2 +- internal/telemetry/metrics/http.go | 4 +- internal/telemetry/metrics/http_test.go | 6 +- internal/telemetry/metrics/info_test.go | 6 +- internal/telemetry/metrics/processes_test.go | 3 +- internal/telemetry/metrics/providers.go | 2 +- internal/telemetry/metrics/providers_test.go | 2 +- internal/tests/xdserr/cmd/main.go | 8 +- internal/tests/xdserr/config.go | 12 +- internal/tests/xdserr/echo.go | 2 +- internal/testutil/testutil.go | 2 +- internal/tripper/chain_test.go | 10 +- internal/urlutil/known.go | 2 +- internal/urlutil/known_test.go | 8 +- internal/urlutil/url.go | 5 - pkg/cryptutil/certificates.go | 5 +- pkg/cryptutil/x509.go | 4 +- pkg/grpc/databroker/databroker.go | 3 +- pkg/grpc/databroker/fast_forward_test.go | 4 +- pkg/grpc/databroker/leaser.go | 2 +- pkg/grpc/device/device.go | 46 +-- pkg/grpc/session/session.go | 16 +- pkg/hpke/handlers/hpke_public_key_test.go | 2 +- pkg/policy/criteria/cors_preflight_test.go | 3 +- pkg/policy/criteria/criteria_test.go | 10 +- pkg/policy/criteria/http_method_test.go | 3 +- pkg/storage/encrypted_test.go | 14 +- pkg/storage/index.go | 4 +- pkg/storage/index_test.go | 4 +- pkg/storage/inmemory/backend.go | 2 +- pkg/storage/postgres/postgres.go | 16 +- pkg/storage/postgres/registry_test.go | 4 +- pkg/storage/postgres/stream.go | 2 +- pkg/storage/querier.go | 16 +- pkg/storage/redis/redis.go | 4 +- pkg/webauthnutil/device_type_test.go | 4 +- pkg/webauthnutil/options.go | 5 +- proxy/handlers_test.go | 10 +- proxy/identity_profile.go | 2 +- proxy/proxy.go | 2 +- proxy/proxy_test.go | 6 +- tools.go | 1 - 122 files changed, 438 insertions(+), 998 deletions(-) create mode 100644 .github/workflows/lint.yaml diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 000000000..b3b65e2a4 --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,26 @@ +name: Lint +permissions: + contents: read +on: + push: + branches: + - main + pull_request: {} + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 + with: + fetch-depth: 0 + + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 + with: + go-version: 1.20.x + + - run: make deps-build + + - uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5 + with: + args: --timeout=10m diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ff4beec0e..0803bd450 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -49,9 +49,7 @@ jobs: restore-keys: ${{ runner.os }}-go- - run: make deps-build - - name: Lint - if: runner.os == 'Linux' - run: make lint + - name: test run: make test diff --git a/.golangci.yml b/.golangci.yml index adacb8da6..207b7d432 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -46,10 +46,15 @@ linters-settings: linters: disable-all: true enable: + - asasalint - bodyclose - depguard - dogsled - errcheck + - errorlint + - exportloopref + - gci + - gocheckcompilerdirectives - gofmt - goimports - goprintffuncname @@ -58,15 +63,18 @@ linters: - govet - ineffassign - lll + - loggercheck - misspell - nakedret - nolintlint - revive - staticcheck - stylecheck + - tenv - typecheck - unconvert - unused + - usestdlibvars issues: exclude-use-default: false @@ -96,6 +104,7 @@ issues: - (Expect directory permissions to be 0750 or less|Expect file permissions to be 0600 or less) # gosec: False positive is triggered by 'src, err := os.ReadFile(filename)' - Potential file inclusion via variable + - empty-block ## ## Custom diff --git a/Makefile b/Makefile index 75dfe7534..17ed350db 100644 --- a/Makefile +++ b/Makefile @@ -93,7 +93,7 @@ build-ui: yarn .PHONY: lint lint: ## Verifies `golint` passes. @echo "==> $@" - @$(GO) run github.com/golangci/golangci-lint/cmd/golangci-lint run ./... + @golangci-lint run ./... .PHONY: test test: get-envoy ## Runs the go tests. diff --git a/authenticate/handlers.go b/authenticate/handlers.go index 0dd17b3ad..5ea9c5c07 100644 --- a/authenticate/handlers.go +++ b/authenticate/handlers.go @@ -168,7 +168,7 @@ func (a *Authenticate) VerifySession(next http.Handler) http.Handler { } // RobotsTxt handles the /robots.txt route. -func (a *Authenticate) RobotsTxt(w http.ResponseWriter, r *http.Request) { +func (a *Authenticate) RobotsTxt(w http.ResponseWriter, _ *http.Request) { w.Header().Set("Content-Type", "text/plain; charset=utf-8") w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "User-agent: *\nDisallow: /") diff --git a/authenticate/handlers_test.go b/authenticate/handlers_test.go index 1eded3509..4f6cd5628 100644 --- a/authenticate/handlers_test.go +++ b/authenticate/handlers_test.go @@ -50,7 +50,7 @@ func testAuthenticate() *Authenticate { func TestAuthenticate_RobotsTxt(t *testing.T) { auth := testAuthenticate() - req, err := http.NewRequest("GET", "/robots.txt", nil) + req, err := http.NewRequest(http.MethodGet, "/robots.txt", nil) if err != nil { t.Fatal(err) } @@ -73,7 +73,7 @@ func TestAuthenticate_Handler(t *testing.T) { if h == nil { t.Error("handler cannot be nil") } - req := httptest.NewRequest("GET", "/robots.txt", nil) + req := httptest.NewRequest(http.MethodGet, "/robots.txt", nil) req.Header.Set("Accept", "application/json") rr := httptest.NewRecorder() @@ -88,7 +88,7 @@ func TestAuthenticate_Handler(t *testing.T) { // cors preflight req = httptest.NewRequest(http.MethodOptions, "/.pomerium/sign_in", nil) req.Header.Set("Accept", "application/json") - req.Header.Set("Access-Control-Request-Method", "GET") + req.Header.Set("Access-Control-Request-Method", http.MethodGet) req.Header.Set("Access-Control-Request-Headers", "X-Requested-With") rr = httptest.NewRecorder() h.ServeHTTP(rr, req) @@ -430,7 +430,7 @@ func TestAuthenticate_SessionValidatorMiddleware(t *testing.T) { }), options: config.NewAtomicOptions(), } - r := httptest.NewRequest("GET", "/", nil) + r := httptest.NewRequest(http.MethodGet, "/", nil) state, err := tt.session.LoadSession(r) if err != nil { t.Fatal(err) @@ -461,7 +461,7 @@ func TestAuthenticate_userInfo(t *testing.T) { t.Run("cookie-redirect-uri", func(t *testing.T) { w := httptest.NewRecorder() - r := httptest.NewRequest("GET", "https://authenticate.service.cluster.local/.pomerium/?pomerium_redirect_uri=https://www.example.com", nil) + r := httptest.NewRequest(http.MethodGet, "https://authenticate.service.cluster.local/.pomerium/?pomerium_redirect_uri=https://www.example.com", nil) var a Authenticate a.state = atomicutil.NewValue(&authenticateState{ cookieSecret: cryptutil.NewKey(), diff --git a/authenticate/identity_profile.go b/authenticate/identity_profile.go index a806f6e67..d69b265ee 100644 --- a/authenticate/identity_profile.go +++ b/authenticate/identity_profile.go @@ -26,7 +26,7 @@ var cookieChunker = httputil.NewCookieChunker() func (a *Authenticate) buildIdentityProfile( ctx context.Context, r *http.Request, - sessionState *sessions.State, + _ *sessions.State, claims identity.SessionClaims, oauthToken *oauth2.Token, ) (*identitypb.Profile, error) { diff --git a/authorize/check_response.go b/authorize/check_response.go index 4125921c1..617468387 100644 --- a/authorize/check_response.go +++ b/authorize/check_response.go @@ -61,8 +61,8 @@ func (a *Authorize) handleResult( } func (a *Authorize) handleResultAllowed( - ctx context.Context, - in *envoy_service_auth_v3.CheckRequest, + _ context.Context, + _ *envoy_service_auth_v3.CheckRequest, result *evaluator.Result, ) (*envoy_service_auth_v3.CheckResponse, error) { return a.okResponse(result.Headers), nil diff --git a/authorize/check_response_test.go b/authorize/check_response_test.go index 0f0ba42b0..aa3134d97 100644 --- a/authorize/check_response_test.go +++ b/authorize/check_response_test.go @@ -4,7 +4,6 @@ import ( "context" "net/http" "net/http/httptest" - "net/url" "testing" envoy_config_core_v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3" @@ -95,8 +94,8 @@ func TestAuthorize_okResponse(t *testing.T) { opt := &config.Options{ AuthenticateURLString: "https://authenticate.example.com", Policies: []config.Policy{{ - Source: &config.StringURL{URL: &url.URL{Host: "example.com"}}, - To: mustParseWeightedURLs(t, "https://to.example.com"), + From: "https://example.com", + To: mustParseWeightedURLs(t, "https://to.example.com"), SubPolicies: []config.SubPolicy{{ Rego: []string{"allow = true"}, }}, @@ -160,7 +159,7 @@ func TestAuthorize_deniedResponse(t *testing.T) { a := &Authorize{currentOptions: config.NewAtomicOptions(), state: atomicutil.NewValue(new(authorizeState))} a.currentOptions.Store(&config.Options{ Policies: []config.Policy{{ - Source: &config.StringURL{URL: &url.URL{Host: "example.com"}}, + From: "https://example.com", SubPolicies: []config.SubPolicy{{ Rego: []string{"allow = true"}, }}, diff --git a/authorize/evaluator/evaluator_test.go b/authorize/evaluator/evaluator_test.go index baa1a1871..9fe1ca7dd 100644 --- a/authorize/evaluator/evaluator_test.go +++ b/authorize/evaluator/evaluator_test.go @@ -87,7 +87,7 @@ func TestEvaluator(t *testing.T) { Action: parser.ActionAllow, Or: []parser.Criterion{{ Name: "http_method", Data: parser.Object{ - "is": parser.String("GET"), + "is": parser.String(http.MethodGet), }, }}, }}, @@ -152,7 +152,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -177,7 +177,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -204,7 +204,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -228,7 +228,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -252,7 +252,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -283,7 +283,7 @@ func TestEvaluator(t *testing.T) { ID: "session2", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -308,7 +308,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -332,7 +332,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -361,7 +361,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -384,7 +384,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, }, @@ -421,7 +421,7 @@ func TestEvaluator(t *testing.T) { ID: "session1", }, HTTP: RequestHTTP{ - Method: "GET", + Method: http.MethodGet, URL: "https://from.example.com", ClientCertificate: testValidCert, Headers: tc.src, @@ -436,7 +436,7 @@ func TestEvaluator(t *testing.T) { res, err := eval(t, options, []proto.Message{}, &Request{ Policy: &policies[8], HTTP: NewRequestHTTP( - "GET", + http.MethodGet, *mustParseURL("https://from.example.com/"), nil, testValidCert, diff --git a/authorize/evaluator/google_cloud_serverless.go b/authorize/evaluator/google_cloud_serverless.go index fe139e283..7feaffa76 100644 --- a/authorize/evaluator/google_cloud_serverless.go +++ b/authorize/evaluator/google_cloud_serverless.go @@ -66,7 +66,7 @@ type gcpIdentityTokenSource struct { func (src *gcpIdentityTokenSource) Token() (*oauth2.Token, error) { res, err, _ := src.singleflight.Do("", func() (interface{}, error) { - req, err := http.NewRequestWithContext(context.Background(), "GET", GCPIdentityDocURL+"?"+url.Values{ + req, err := http.NewRequestWithContext(context.Background(), http.MethodGet, GCPIdentityDocURL+"?"+url.Values{ "format": {"full"}, "audience": {src.audience}, }.Encode(), nil) diff --git a/authorize/evaluator/policy_evaluator_test.go b/authorize/evaluator/policy_evaluator_test.go index 32edc41ea..386184c14 100644 --- a/authorize/evaluator/policy_evaluator_test.go +++ b/authorize/evaluator/policy_evaluator_test.go @@ -2,6 +2,7 @@ package evaluator import ( "context" + "net/http" "strings" "testing" "time" @@ -69,7 +70,7 @@ func TestPolicyEvaluator(t *testing.T) { p1, []proto.Message{s1, u1, s2, u2}, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "s1"}, IsValidClientCertificate: true, @@ -86,7 +87,7 @@ func TestPolicyEvaluator(t *testing.T) { p1, []proto.Message{s1, u1, s2, u2}, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "s1"}, IsValidClientCertificate: false, @@ -103,7 +104,7 @@ func TestPolicyEvaluator(t *testing.T) { p1, []proto.Message{s1, u1, s2, u2}, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "s2"}, IsValidClientCertificate: true, @@ -134,7 +135,7 @@ func TestPolicyEvaluator(t *testing.T) { p, []proto.Message{s1, u1, s2, u2}, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "s1"}, IsValidClientCertificate: true, @@ -164,7 +165,7 @@ func TestPolicyEvaluator(t *testing.T) { p, []proto.Message{s1, u1, s2, u2}, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "s1"}, IsValidClientCertificate: true, @@ -195,7 +196,7 @@ func TestPolicyEvaluator(t *testing.T) { p, []proto.Message{s1, u1, s2, u2}, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "s1"}, IsValidClientCertificate: false, @@ -234,7 +235,7 @@ func TestPolicyEvaluator(t *testing.T) { p, []proto.Message{s1, u1, s2, u2, r1}, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "s1"}, IsValidClientCertificate: true, @@ -257,7 +258,7 @@ func TestPolicyEvaluator(t *testing.T) { }, }, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "sa1"}, IsValidClientCertificate: true, @@ -281,7 +282,7 @@ func TestPolicyEvaluator(t *testing.T) { }, }, &PolicyRequest{ - HTTP: RequestHTTP{Method: "GET", URL: "https://from.example.com/path"}, + HTTP: RequestHTTP{Method: http.MethodGet, URL: "https://from.example.com/path"}, Session: RequestSession{ID: "sa1"}, IsValidClientCertificate: true, diff --git a/authorize/grpc_test.go b/authorize/grpc_test.go index 56874c65e..e1198972a 100644 --- a/authorize/grpc_test.go +++ b/authorize/grpc_test.go @@ -2,6 +2,7 @@ package authorize import ( "context" + "net/http" "net/url" "testing" @@ -45,7 +46,7 @@ func Test_getEvaluatorRequest(t *testing.T) { a := &Authorize{currentOptions: config.NewAtomicOptions(), state: atomicutil.NewValue(new(authorizeState))} a.currentOptions.Store(&config.Options{ Policies: []config.Policy{{ - Source: &config.StringURL{URL: &url.URL{Host: "example.com"}}, + From: "https://example.com", SubPolicies: []config.SubPolicy{{ Rego: []string{"allow = true"}, }}, @@ -61,7 +62,7 @@ func Test_getEvaluatorRequest(t *testing.T) { Request: &envoy_service_auth_v3.AttributeContext_Request{ Http: &envoy_service_auth_v3.AttributeContext_HttpRequest{ Id: "id-1234", - Method: "GET", + Method: http.MethodGet, Headers: map[string]string{ "accept": "text/html", "x-forwarded-proto": "https", @@ -85,7 +86,7 @@ func Test_getEvaluatorRequest(t *testing.T) { ID: "SESSION_ID", }, HTTP: evaluator.NewRequestHTTP( - "GET", + http.MethodGet, mustParseURL("http://example.com/some/path?qs=1"), map[string]string{ "Accept": "text/html", @@ -102,7 +103,7 @@ func Test_getEvaluatorRequestWithPortInHostHeader(t *testing.T) { a := &Authorize{currentOptions: config.NewAtomicOptions(), state: atomicutil.NewValue(new(authorizeState))} a.currentOptions.Store(&config.Options{ Policies: []config.Policy{{ - Source: &config.StringURL{URL: &url.URL{Host: "example.com"}}, + From: "https://example.com", SubPolicies: []config.SubPolicy{{ Rego: []string{"allow = true"}, }}, @@ -117,7 +118,7 @@ func Test_getEvaluatorRequestWithPortInHostHeader(t *testing.T) { Request: &envoy_service_auth_v3.AttributeContext_Request{ Http: &envoy_service_auth_v3.AttributeContext_HttpRequest{ Id: "id-1234", - Method: "GET", + Method: http.MethodGet, Headers: map[string]string{ "accept": "text/html", "x-forwarded-proto": "https", @@ -135,7 +136,7 @@ func Test_getEvaluatorRequestWithPortInHostHeader(t *testing.T) { Policy: &a.currentOptions.Load().Policies[0], Session: evaluator.RequestSession{}, HTTP: evaluator.NewRequestHTTP( - "GET", + http.MethodGet, mustParseURL("http://example.com/some/path?qs=1"), map[string]string{ "Accept": "text/html", diff --git a/config/config_source.go b/config/config_source.go index 218bd0a4d..6b0f46ddd 100644 --- a/config/config_source.go +++ b/config/config_source.go @@ -36,7 +36,7 @@ func (dispatcher *ChangeDispatcher) Trigger(ctx context.Context, cfg *Config) { } // OnConfigChange adds a listener. -func (dispatcher *ChangeDispatcher) OnConfigChange(ctx context.Context, li ChangeListener) { +func (dispatcher *ChangeDispatcher) OnConfigChange(_ context.Context, li ChangeListener) { dispatcher.Lock() defer dispatcher.Unlock() dispatcher.onConfigChangeListeners = append(dispatcher.onConfigChangeListeners, li) @@ -80,7 +80,7 @@ func (src *StaticSource) SetConfig(ctx context.Context, cfg *Config) { } // OnConfigChange is ignored for the StaticSource. -func (src *StaticSource) OnConfigChange(ctx context.Context, li ChangeListener) { +func (src *StaticSource) OnConfigChange(_ context.Context, li ChangeListener) { src.mu.Lock() defer src.mu.Unlock() diff --git a/config/envoyconfig/bootstrap.go b/config/envoyconfig/bootstrap.go index 433115d56..2e9429653 100644 --- a/config/envoyconfig/bootstrap.go +++ b/config/envoyconfig/bootstrap.go @@ -97,7 +97,7 @@ func (b *Builder) BuildBootstrapAdmin(cfg *config.Config) (admin *envoy_config_b // BuildBootstrapDynamicResources builds the dynamic resources for the envoy bootstrap. func (b *Builder) BuildBootstrapDynamicResources( - cfg *config.Config, + _ *config.Config, fullyStatic bool, ) (dynamicResources *envoy_config_bootstrap_v3.Bootstrap_DynamicResources, err error) { if fullyStatic { diff --git a/config/envoyconfig/clusters_envoy_admin.go b/config/envoyconfig/clusters_envoy_admin.go index feda13be0..4cde20f92 100644 --- a/config/envoyconfig/clusters_envoy_admin.go +++ b/config/envoyconfig/clusters_envoy_admin.go @@ -10,7 +10,7 @@ import ( "github.com/pomerium/pomerium/config" ) -func (b *Builder) buildEnvoyAdminCluster(ctx context.Context, cfg *config.Config) (*envoy_config_cluster_v3.Cluster, error) { +func (b *Builder) buildEnvoyAdminCluster(_ context.Context, _ *config.Config) (*envoy_config_cluster_v3.Cluster, error) { return &envoy_config_cluster_v3.Cluster{ Name: envoyAdminClusterName, ConnectTimeout: defaultConnectionTimeout, diff --git a/config/envoyconfig/envoyconfig.go b/config/envoyconfig/envoyconfig.go index db037d880..9e78f0a99 100644 --- a/config/envoyconfig/envoyconfig.go +++ b/config/envoyconfig/envoyconfig.go @@ -233,12 +233,12 @@ func getCombinedCertificateAuthority(cfg *config.Config) ([]byte, error) { } func marshalAny(msg proto.Message) *anypb.Any { - any := new(anypb.Any) - _ = anypb.MarshalFrom(any, msg, proto.MarshalOptions{ + data := new(anypb.Any) + _ = anypb.MarshalFrom(data, msg, proto.MarshalOptions{ AllowPartial: true, Deterministic: true, }) - return any + return data } // parseAddress parses a string address into an envoy address. diff --git a/config/envoyconfig/listeners.go b/config/envoyconfig/listeners.go index f234829f8..b27b5e156 100644 --- a/config/envoyconfig/listeners.go +++ b/config/envoyconfig/listeners.go @@ -27,7 +27,6 @@ import ( "github.com/pomerium/pomerium/internal/sets" "github.com/pomerium/pomerium/internal/telemetry/metrics" "github.com/pomerium/pomerium/internal/urlutil" - "github.com/pomerium/pomerium/pkg/cryptutil" ) const listenerBufferLimit uint32 = 32 * 1024 @@ -574,37 +573,6 @@ func getAllRouteableHosts(options *config.Options, addr string) ([]string, error return allHosts.ToSlice(), nil } -func getAllServerNames(cfg *config.Config, addr string) ([]string, error) { - serverNames := sets.NewSorted[string]() - serverNames.Add("*") - - certs, err := cfg.AllCertificates() - if err != nil { - return nil, err - } - for i := range certs { - serverNames.Add(cryptutil.GetCertificateServerNames(&certs[i])...) - } - - if addr == cfg.Options.Addr { - sns, err := cfg.Options.GetAllRouteableHTTPServerNames() - if err != nil { - return nil, err - } - serverNames.Add(sns...) - } - - if addr == cfg.Options.GetGRPCAddr() { - sns, err := cfg.Options.GetAllRouteableGRPCServerNames() - if err != nil { - return nil, err - } - serverNames.Add(sns...) - } - - return serverNames.ToSlice(), nil -} - func urlsMatchHost(urls []*url.URL, host string) bool { for _, u := range urls { if urlMatchesHost(u, host) { diff --git a/config/envoyconfig/listeners_envoy_admin.go b/config/envoyconfig/listeners_envoy_admin.go index 306d0f267..5b0a8050b 100644 --- a/config/envoyconfig/listeners_envoy_admin.go +++ b/config/envoyconfig/listeners_envoy_admin.go @@ -11,7 +11,7 @@ import ( "github.com/pomerium/pomerium/config" ) -func (b *Builder) buildEnvoyAdminListener(ctx context.Context, cfg *config.Config) (*envoy_config_listener_v3.Listener, error) { +func (b *Builder) buildEnvoyAdminListener(_ context.Context, cfg *config.Config) (*envoy_config_listener_v3.Listener, error) { filter, err := b.buildEnvoyAdminHTTPConnectionManagerFilter() if err != nil { return nil, err diff --git a/config/envoyconfig/listeners_test.go b/config/envoyconfig/listeners_test.go index 3bf1b3111..898e04d72 100644 --- a/config/envoyconfig/listeners_test.go +++ b/config/envoyconfig/listeners_test.go @@ -125,7 +125,7 @@ func Test_buildDownstreamTLSContext(t *testing.T) { downstreamTLSContext, err := b.buildDownstreamTLSContextMulti(context.Background(), &config.Config{Options: &config.Options{ Policies: []config.Policy{ { - Source: &config.StringURL{URL: mustParseURL(t, "https://a.example.com:1234")}, + From: "https://a.example.com:1234", TLSDownstreamClientCA: "TEST", }, }, @@ -224,10 +224,10 @@ func Test_getAllDomains(t *testing.T) { AuthorizeURLString: "https://authorize.example.com:9001", DataBrokerURLString: "https://cache.example.com:9001", Policies: []config.Policy{ - {Source: &config.StringURL{URL: mustParseURL(t, "http://a.example.com")}}, - {Source: &config.StringURL{URL: mustParseURL(t, "https://b.example.com")}}, - {Source: &config.StringURL{URL: mustParseURL(t, "https://c.example.com")}}, - {Source: &config.StringURL{URL: mustParseURL(t, "https://d.unknown.example.com")}}, + {From: "http://a.example.com"}, + {From: "https://b.example.com"}, + {From: "https://c.example.com"}, + {From: "https://d.unknown.example.com"}, }, Cert: base64.StdEncoding.EncodeToString(certPEM), Key: base64.StdEncoding.EncodeToString(keyPEM), @@ -281,33 +281,6 @@ func Test_getAllDomains(t *testing.T) { assert.Equal(t, expect, actual) }) }) - t.Run("tls", func(t *testing.T) { - t.Run("http", func(t *testing.T) { - actual, err := getAllServerNames(&config.Config{Options: options}, "127.0.0.1:9000") - require.NoError(t, err) - expect := []string{ - "*", - "*.unknown.example.com", - "a.example.com", - "authenticate.example.com", - "b.example.com", - "c.example.com", - "d.unknown.example.com", - } - assert.Equal(t, expect, actual) - }) - t.Run("grpc", func(t *testing.T) { - actual, err := getAllServerNames(&config.Config{Options: options}, "127.0.0.1:9001") - require.NoError(t, err) - expect := []string{ - "*", - "*.unknown.example.com", - "authorize.example.com", - "cache.example.com", - } - assert.Equal(t, expect, actual) - }) - }) } func Test_urlMatchesHost(t *testing.T) { diff --git a/config/envoyconfig/protocols.go b/config/envoyconfig/protocols.go index 3e34792b1..6ebfcf9cc 100644 --- a/config/envoyconfig/protocols.go +++ b/config/envoyconfig/protocols.go @@ -116,7 +116,7 @@ func buildUpstreamALPN(upstreamProtocol upstreamProtocolConfig) []string { } } -func getUpstreamProtocolForPolicy(ctx context.Context, policy *config.Policy) upstreamProtocolConfig { +func getUpstreamProtocolForPolicy(_ context.Context, policy *config.Policy) upstreamProtocolConfig { upstreamProtocol := upstreamProtocolAuto if policy.AllowWebsockets { // #2388, force http/1 when using web sockets diff --git a/config/envoyconfig/route_configurations.go b/config/envoyconfig/route_configurations.go index ba2475ea4..dae0d507c 100644 --- a/config/envoyconfig/route_configurations.go +++ b/config/envoyconfig/route_configurations.go @@ -29,7 +29,7 @@ func (b *Builder) BuildRouteConfigurations( } func (b *Builder) buildMainRouteConfiguration( - ctx context.Context, + _ context.Context, cfg *config.Config, ) (*envoy_config_route_v3.RouteConfiguration, error) { var certs []tls.Certificate diff --git a/config/envoyconfig/routes.go b/config/envoyconfig/routes.go index 3f0b93133..f6f719311 100644 --- a/config/envoyconfig/routes.go +++ b/config/envoyconfig/routes.go @@ -198,7 +198,12 @@ func (b *Builder) buildPolicyRoutes( for i, p := range options.GetAllPolicies() { policy := p - if !urlMatchesHost(policy.Source.URL, host) { + fromURL, err := urlutil.ParseAndValidateURL(policy.From) + if err != nil { + return nil, err + } + + if !urlMatchesHost(fromURL, host) { continue } @@ -335,7 +340,8 @@ func (b *Builder) buildPolicyRouteRouteAction(options *config.Options, policy *c Enabled: &wrappers.BoolValue{Value: policy.AllowSPDY}, }, } - if urlutil.IsTCP(policy.Source.URL) { + + if policy.IsTCP() { upgradeConfigs = append(upgradeConfigs, &envoy_config_route_v3.RouteAction_UpgradeConfig{ UpgradeType: "CONNECT", Enabled: &wrappers.BoolValue{Value: true}, @@ -407,7 +413,7 @@ func toEnvoyHeaders(headers map[string]string) []*envoy_config_core_v3.HeaderVal func mkRouteMatch(policy *config.Policy) *envoy_config_route_v3.RouteMatch { match := &envoy_config_route_v3.RouteMatch{} switch { - case urlutil.IsTCP(policy.Source.URL): + case policy.IsTCP(): match.PathSpecifier = &envoy_config_route_v3.RouteMatch_ConnectMatcher_{ ConnectMatcher: &envoy_config_route_v3.RouteMatch_ConnectMatcher{}, } @@ -473,7 +479,7 @@ func getRouteIdleTimeout(policy *config.Policy) *durationpb.Duration { func shouldDisableStreamIdleTimeout(policy *config.Policy) bool { return policy.AllowWebsockets || - urlutil.IsTCP(policy.Source.URL) || + policy.IsTCP() || policy.IsForKubernetes() // disable for kubernetes so that tailing logs works (#2182) } diff --git a/config/envoyconfig/routes_test.go b/config/envoyconfig/routes_test.go index 6046e5ef0..61080474f 100644 --- a/config/envoyconfig/routes_test.go +++ b/config/envoyconfig/routes_test.go @@ -298,7 +298,7 @@ func TestTimeouts(t *testing.T) { DefaultUpstreamTimeout: time.Second * 3, Policies: []config.Policy{ { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", Path: "/test", UpstreamTimeout: getDuration(tc.upstream), IdleTimeout: getDuration(tc.idle), @@ -352,48 +352,48 @@ func Test_buildPolicyRoutes(t *testing.T) { DefaultUpstreamTimeout: time.Second * 3, Policies: []config.Policy{ { - Source: &config.StringURL{URL: mustParseURL(t, "https://ignore.example.com")}, + From: "https://ignore.example.com", PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", Path: "/some/path", AllowWebsockets: true, PreserveHostHeader: true, PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", Prefix: "/some/prefix/", SetRequestHeaders: map[string]string{"HEADER-KEY": "HEADER-VALUE"}, UpstreamTimeout: &oneMinute, PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", Regex: `^/[a]+$`, PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", Prefix: "/some/prefix/", RemoveRequestHeaders: []string{"HEADER-KEY"}, UpstreamTimeout: &oneMinute, PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", Path: "/some/path", AllowSPDY: true, PreserveHostHeader: true, PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", Path: "/some/path", AllowSPDY: true, AllowWebsockets: true, @@ -401,7 +401,7 @@ func Test_buildPolicyRoutes(t *testing.T) { PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", Path: "/websocket-timeout", AllowWebsockets: true, PreserveHostHeader: true, @@ -911,7 +911,7 @@ func Test_buildPolicyRoutes(t *testing.T) { DefaultUpstreamTimeout: time.Second * 3, Policies: []config.Policy{ { - Source: &config.StringURL{URL: mustParseURL(t, "https://authenticate.example.com")}, + From: "https://authenticate.example.com", PassIdentityHeaders: true, }, }, @@ -992,11 +992,11 @@ func Test_buildPolicyRoutes(t *testing.T) { DefaultUpstreamTimeout: time.Second * 3, Policies: []config.Policy{ { - Source: &config.StringURL{URL: mustParseURL(t, "tcp+https://example.com:22")}, + From: "tcp+https://example.com:22", PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "tcp+https://example.com:22")}, + From: "tcp+https://example.com:22", PassIdentityHeaders: true, UpstreamTimeout: &ten, }, @@ -1143,7 +1143,7 @@ func Test_buildPolicyRoutes(t *testing.T) { }, Policies: []config.Policy{ { - Source: &config.StringURL{URL: mustParseURL(t, "https://from.example.com")}, + From: "https://from.example.com", }, }, }, "from.example.com", false) @@ -1229,37 +1229,37 @@ func Test_buildPolicyRoutesRewrite(t *testing.T) { DefaultUpstreamTimeout: time.Second * 3, Policies: []config.Policy{ { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", To: mustParseWeightedURLs(t, "https://foo.example.com/bar"), PassIdentityHeaders: true, }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", To: mustParseWeightedURLs(t, "https://foo.example.com/bar"), PassIdentityHeaders: true, PrefixRewrite: "/foo", }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", To: mustParseWeightedURLs(t, "https://foo.example.com/bar"), PassIdentityHeaders: true, RegexRewritePattern: "^/service/([^/]+)(/.*)$", RegexRewriteSubstitution: "\\2/instance/\\1", }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", To: mustParseWeightedURLs(t, "https://foo.example.com/bar"), PassIdentityHeaders: true, HostRewrite: "literal.example.com", }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", To: mustParseWeightedURLs(t, "https://foo.example.com/bar"), PassIdentityHeaders: true, HostRewriteHeader: "HOST_HEADER", }, { - Source: &config.StringURL{URL: mustParseURL(t, "https://example.com")}, + From: "https://example.com", To: mustParseWeightedURLs(t, "https://foo.example.com/bar"), PassIdentityHeaders: true, HostPathRegexRewritePattern: "^/(.+)/.+$", diff --git a/config/log.go b/config/log.go index 6b1c66319..b988911d8 100644 --- a/config/log.go +++ b/config/log.go @@ -26,7 +26,7 @@ func (mgr *LogManager) Close() error { } // OnConfigChange is called whenever configuration changes. -func (mgr *LogManager) OnConfigChange(ctx context.Context, cfg *Config) { +func (mgr *LogManager) OnConfigChange(_ context.Context, cfg *Config) { if cfg == nil || cfg.Options == nil { return } diff --git a/config/metrics.go b/config/metrics.go index 5328d4602..f8c138210 100644 --- a/config/metrics.go +++ b/config/metrics.go @@ -9,12 +9,12 @@ import ( "sync" "time" + "github.com/rs/zerolog" + "github.com/pomerium/pomerium/internal/log" "github.com/pomerium/pomerium/internal/middleware" "github.com/pomerium/pomerium/internal/telemetry" "github.com/pomerium/pomerium/internal/telemetry/metrics" - - "github.com/rs/zerolog" ) const ( diff --git a/config/metrics_test.go b/config/metrics_test.go index a0b563a17..f3efd91ae 100644 --- a/config/metrics_test.go +++ b/config/metrics_test.go @@ -52,7 +52,7 @@ func TestMetricsManagerBasicAuth(t *testing.T) { assert.NoError(t, err) assert.Equal(t, http.StatusUnauthorized, res.StatusCode) - req, err := http.NewRequest("GET", fmt.Sprintf("%s/metrics", srv1.URL), nil) + req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/metrics", srv1.URL), nil) require.NoError(t, err) req.SetBasicAuth("x", "y") res, err = http.DefaultClient.Do(req) diff --git a/config/options.go b/config/options.go index 0f416af79..510434672 100644 --- a/config/options.go +++ b/config/options.go @@ -463,7 +463,7 @@ func (o *Options) viperIsSet(key string) bool { // parseHeaders handles unmarshalling any custom headers correctly from the // environment or viper's parsed keys -func (o *Options) parseHeaders(ctx context.Context) error { +func (o *Options) parseHeaders(_ context.Context) error { var headers map[string]string if o.HeadersEnv != "" { // Handle JSON by default via viper @@ -1094,51 +1094,6 @@ func (o *Options) GetAllRouteableGRPCHosts() ([]string, error) { return hosts.ToSlice(), nil } -// GetAllRouteableGRPCServerNames returns all the possible gRPC server names handled by the Pomerium options. -func (o *Options) GetAllRouteableGRPCServerNames() ([]string, error) { - hosts := sets.NewSorted[string]() - - // authorize urls - if IsAll(o.Services) { - authorizeURLs, err := o.GetAuthorizeURLs() - if err != nil { - return nil, err - } - for _, u := range authorizeURLs { - hosts.Add(urlutil.GetServerNamesForURL(u)...) - } - } else if IsAuthorize(o.Services) { - authorizeURLs, err := o.GetInternalAuthorizeURLs() - if err != nil { - return nil, err - } - for _, u := range authorizeURLs { - hosts.Add(urlutil.GetServerNamesForURL(u)...) - } - } - - // databroker urls - if IsAll(o.Services) { - dataBrokerURLs, err := o.GetDataBrokerURLs() - if err != nil { - return nil, err - } - for _, u := range dataBrokerURLs { - hosts.Add(urlutil.GetServerNamesForURL(u)...) - } - } else if IsDataBroker(o.Services) { - dataBrokerURLs, err := o.GetInternalDataBrokerURLs() - if err != nil { - return nil, err - } - for _, u := range dataBrokerURLs { - hosts.Add(urlutil.GetServerNamesForURL(u)...) - } - } - - return hosts.ToSlice(), nil -} - // GetAllRouteableHTTPHosts returns all the possible HTTP hosts handled by the Pomerium options. func (o *Options) GetAllRouteableHTTPHosts() ([]string, error) { hosts := sets.NewSorted[string]() @@ -1159,9 +1114,14 @@ func (o *Options) GetAllRouteableHTTPHosts() ([]string, error) { // policy urls if IsProxy(o.Services) { for _, policy := range o.GetAllPolicies() { - hosts.Add(urlutil.GetDomainsForURL(policy.Source.URL)...) + fromURL, err := urlutil.ParseAndValidateURL(policy.From) + if err != nil { + return nil, err + } + + hosts.Add(urlutil.GetDomainsForURL(fromURL)...) if policy.TLSDownstreamServerName != "" { - tlsURL := policy.Source.URL.ResolveReference(&url.URL{Host: policy.TLSDownstreamServerName}) + tlsURL := fromURL.ResolveReference(&url.URL{Host: policy.TLSDownstreamServerName}) hosts.Add(urlutil.GetDomainsForURL(tlsURL)...) } } @@ -1170,37 +1130,6 @@ func (o *Options) GetAllRouteableHTTPHosts() ([]string, error) { return hosts.ToSlice(), nil } -// GetAllRouteableHTTPServerNames returns all the possible HTTP server names handled by the Pomerium options. -func (o *Options) GetAllRouteableHTTPServerNames() ([]string, error) { - serverNames := sets.NewSorted[string]() - if IsAuthenticate(o.Services) { - authenticateURL, err := o.GetInternalAuthenticateURL() - if err != nil { - return nil, err - } - serverNames.Add(urlutil.GetServerNamesForURL(authenticateURL)...) - - authenticateURL, err = o.GetAuthenticateURL() - if err != nil { - return nil, err - } - serverNames.Add(urlutil.GetServerNamesForURL(authenticateURL)...) - } - - // policy urls - if IsProxy(o.Services) { - for _, policy := range o.GetAllPolicies() { - serverNames.Add(urlutil.GetServerNamesForURL(policy.Source.URL)...) - if policy.TLSDownstreamServerName != "" { - tlsURL := policy.Source.URL.ResolveReference(&url.URL{Host: policy.TLSDownstreamServerName}) - serverNames.Add(urlutil.GetServerNamesForURL(tlsURL)...) - } - } - } - - return serverNames.ToSlice(), nil -} - // GetClientSecret gets the client secret. func (o *Options) GetClientSecret() (string, error) { if o == nil { diff --git a/config/options_test.go b/config/options_test.go index e8a76cc18..eb03d6331 100644 --- a/config/options_test.go +++ b/config/options_test.go @@ -87,9 +87,9 @@ func Test_bindEnvs(t *testing.T) { defer os.Unsetenv("POMERIUM_DEBUG") defer os.Unsetenv("POLICY") defer os.Unsetenv("HEADERS") - os.Setenv("POMERIUM_DEBUG", "true") - os.Setenv("POLICY", "LSBmcm9tOiBodHRwczovL2h0dHBiaW4ubG9jYWxob3N0LnBvbWVyaXVtLmlvCiAgdG86IAogICAgLSBodHRwOi8vbG9jYWxob3N0OjgwODEsMQo=") - os.Setenv("HEADERS", `{"X-Custom-1":"foo", "X-Custom-2":"bar"}`) + t.Setenv("POMERIUM_DEBUG", "true") + t.Setenv("POLICY", "LSBmcm9tOiBodHRwczovL2h0dHBiaW4ubG9jYWxob3N0LnBvbWVyaXVtLmlvCiAgdG86IAogICAgLSBodHRwOi8vbG9jYWxob3N0OjgwODEsMQo=") + t.Setenv("HEADERS", `{"X-Custom-1":"foo", "X-Custom-2":"bar"}`) err := bindEnvs(o, v) if err != nil { t.Fatalf("failed to bind options to env vars: %s", err) @@ -207,7 +207,6 @@ func Test_parsePolicyFile(t *testing.T) { } source := "https://pomerium.io" - sourceURL, _ := url.ParseRequestURI(source) to, err := ParseWeightedURL("https://httpbin.org") require.NoError(t, err) @@ -222,9 +221,8 @@ func Test_parsePolicyFile(t *testing.T) { "simple json", []byte(fmt.Sprintf(`{"policy":[{"from": "%s","to":"%s"}]}`, source, to.URL.String())), []Policy{{ - From: source, - To: []WeightedURL{*to}, - Source: &StringURL{sourceURL}, + From: source, + To: []WeightedURL{*to}, }}, false, }, @@ -280,7 +278,7 @@ func Test_Checksum(t *testing.T) { func TestOptionsFromViper(t *testing.T) { opts := []cmp.Option{ cmpopts.IgnoreFields(Options{}, "CookieSecret", "GRPCInsecure", "GRPCAddr", "DataBrokerURLString", "DataBrokerURLStrings", "AuthorizeURLString", "AuthorizeURLStrings", "DefaultUpstreamTimeout", "CookieExpire", "Services", "Addr", "LogLevel", "KeyFile", "CertFile", "SharedKey", "ReadTimeout", "IdleTimeout", "GRPCClientTimeout", "GRPCClientDNSRoundRobin", "TracingSampleRate", "ProgrammaticRedirectDomainWhitelist"), - cmpopts.IgnoreFields(Policy{}, "Source", "EnvoyOpts"), + cmpopts.IgnoreFields(Policy{}, "EnvoyOpts"), cmpOptIgnoreUnexported, } diff --git a/config/policy.go b/config/policy.go index 238ebb5f6..3f8a8776c 100644 --- a/config/policy.go +++ b/config/policy.go @@ -4,7 +4,6 @@ import ( "context" "crypto/tls" "encoding/base64" - "encoding/json" "fmt" "net/url" "os" @@ -41,8 +40,6 @@ type Policy struct { AllowedDomains []string `mapstructure:"allowed_domains" yaml:"allowed_domains,omitempty" json:"allowed_domains,omitempty"` AllowedIDPClaims identity.FlattenedClaims `mapstructure:"allowed_idp_claims" yaml:"allowed_idp_claims,omitempty" json:"allowed_idp_claims,omitempty"` - Source *StringURL `yaml:",omitempty" json:"source,omitempty" hash:"ignore"` - // Additional route matching options Prefix string `mapstructure:"prefix" yaml:"prefix,omitempty" json:"prefix,omitempty"` Path string `mapstructure:"path" yaml:"path,omitempty" json:"path,omitempty"` @@ -450,8 +447,6 @@ func (p *Policy) Validate() error { source.String()) } - p.Source = &StringURL{source} - if len(p.To) == 0 && p.Redirect == nil { return errEitherToOrRedirectRequired } @@ -558,7 +553,7 @@ func (p *Policy) Checksum() uint64 { // RouteID returns a unique identifier for a route func (p *Policy) RouteID() (uint64, error) { id := routeID{ - Source: p.Source, + From: p.From, Prefix: p.Prefix, Path: p.Path, Regex: p.Regex, @@ -589,19 +584,20 @@ func (p *Policy) String() string { to = strings.Join(dsts, ",") } - return fmt.Sprintf("%s → %s", p.Source.String(), to) + return fmt.Sprintf("%s → %s", p.From, to) } // Matches returns true if the policy would match the given URL. func (p *Policy) Matches(requestURL url.URL) bool { - // handle nils by always returning false - if p.Source == nil { + // an invalid from URL should not match anything + fromURL, err := urlutil.ParseAndValidateURL(p.From) + if err != nil { return false } // make sure one of the host domains matches the incoming url found := false - for _, host := range urlutil.GetDomainsForURL(p.Source.URL) { + for _, host := range urlutil.GetDomainsForURL(fromURL) { found = found || host == requestURL.Host } if !found { @@ -634,6 +630,11 @@ func (p *Policy) IsForKubernetes() bool { return p.KubernetesServiceAccountTokenFile != "" || p.KubernetesServiceAccountToken != "" } +// IsTCP returns true if the route is for TCP. +func (p *Policy) IsTCP() bool { + return strings.HasPrefix(p.From, "tcp") +} + // AllAllowedDomains returns all the allowed domains. func (p *Policy) AllAllowedDomains() []string { var ads []string @@ -674,25 +675,8 @@ func (p *Policy) GetSetAuthorizationHeader() configpb.Route_AuthorizationHeaderM return mode } -// StringURL stores a URL as a string in json. -type StringURL struct { - *url.URL -} - -func (su *StringURL) String() string { - if su == nil || su.URL == nil { - return "?" - } - return su.URL.String() -} - -// MarshalJSON returns the URLs host as json. -func (su *StringURL) MarshalJSON() ([]byte, error) { - return json.Marshal(su.String()) -} - type routeID struct { - Source *StringURL + From string To []string Prefix string Path string diff --git a/config/policy_test.go b/config/policy_test.go index 63461578e..5efc1c68b 100644 --- a/config/policy_test.go +++ b/config/policy_test.go @@ -84,7 +84,7 @@ func TestPolicy_String(t *testing.T) { if got := p.String(); got != tt.want { t.Errorf("Policy.String() = %v, want %v", got, tt.want) } - out, err := json.Marshal(p.Source) + out, err := json.Marshal(p.From) if err != nil { t.Fatal(err) } diff --git a/config/trace.go b/config/trace.go index e17389cd6..f57bc8a1e 100644 --- a/config/trace.go +++ b/config/trace.go @@ -6,12 +6,12 @@ import ( "reflect" "sync" + "github.com/rs/zerolog" + "github.com/pomerium/pomerium/internal/log" "github.com/pomerium/pomerium/internal/telemetry" "github.com/pomerium/pomerium/internal/telemetry/trace" "github.com/pomerium/pomerium/internal/urlutil" - - "github.com/rs/zerolog" ) // TracingOptions are the options for tracing. diff --git a/databroker/databroker.go b/databroker/databroker.go index e0b64cbfa..c91f8e267 100644 --- a/databroker/databroker.go +++ b/databroker/databroker.go @@ -31,7 +31,7 @@ func newDataBrokerServer(cfg *config.Config) *dataBrokerServer { } // OnConfigChange updates the underlying databroker server whenever configuration is changed. -func (srv *dataBrokerServer) OnConfigChange(ctx context.Context, cfg *config.Config) { +func (srv *dataBrokerServer) OnConfigChange(_ context.Context, cfg *config.Config) { srv.server.UpdateConfig(srv.getOptions(cfg)...) srv.setKey(cfg) } diff --git a/databroker/databroker_test.go b/databroker/databroker_test.go index 60839865f..64b841449 100644 --- a/databroker/databroker_test.go +++ b/databroker/databroker_test.go @@ -50,7 +50,7 @@ func TestServerSync(t *testing.T) { require.NoError(t, err) defer conn.Close() c := databroker.NewDataBrokerServiceClient(conn) - any := protoutil.NewAny(new(user.User)) + data := protoutil.NewAny(new(user.User)) numRecords := 200 var serverVersion uint64 @@ -58,9 +58,9 @@ func TestServerSync(t *testing.T) { for i := 0; i < numRecords; i++ { res, err := c.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: strconv.Itoa(i), - Data: any, + Data: data, }}, }) require.NoError(t, err) @@ -102,15 +102,15 @@ func BenchmarkSync(b *testing.B) { } defer conn.Close() c := databroker.NewDataBrokerServiceClient(conn) - any := protoutil.NewAny(new(session.Session)) + data := protoutil.NewAny(new(session.Session)) numRecords := 10000 for i := 0; i < numRecords; i++ { _, _ = c.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: strconv.Itoa(i), - Data: any, + Data: data, }}, }) } diff --git a/go.mod b/go.mod index 1eb7ff35c..aed198f2a 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,6 @@ require ( github.com/go-redis/redis/v8 v8.11.5 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.3 - github.com/golangci/golangci-lint v1.51.2 github.com/google/btree v1.1.2 github.com/google/go-cmp v0.5.9 github.com/google/go-jsonnet v0.19.1 @@ -77,7 +76,6 @@ require ( ) require ( - 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect cloud.google.com/go v0.110.0 // indirect cloud.google.com/go/iam v0.13.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect @@ -96,161 +94,77 @@ require ( github.com/aws/aws-sdk-go-v2/service/sts v1.18.7 // indirect github.com/aws/smithy-go v1.13.5 // indirect github.com/dustin/go-humanize v1.0.1 // indirect + github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/google/s2a-go v0.1.0 // indirect github.com/googleapis/gax-go/v2 v2.8.0 // indirect github.com/jackc/puddle/v2 v2.2.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/junk1tm/musttag v0.4.5 // indirect + github.com/lib/pq v1.10.7 // indirect github.com/lyft/protoc-gen-star/v2 v2.0.1 // indirect github.com/minio/md5-simd v1.1.2 // indirect github.com/minio/sha256-simd v1.0.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect - github.com/nunnatsa/ginkgolinter v0.8.1 // indirect + github.com/onsi/gomega v1.26.0 // indirect github.com/rs/xid v1.4.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect - github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect ) require ( - 4d63.com/gochecknoglobals v0.2.1 // indirect cloud.google.com/go/compute v1.19.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/storage v1.29.0 - github.com/Abirdcfly/dupword v0.0.9 // indirect - github.com/Antonboom/errname v0.1.7 // indirect - github.com/Antonboom/nilnil v0.1.1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/BurntSushi/toml v1.2.1 // indirect github.com/DataDog/datadog-go v3.5.0+incompatible // indirect - github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect - github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect - github.com/Masterminds/semver v1.5.0 // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/OpenPeeDeeP/depguard v1.1.1 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect - github.com/alexkohler/prealloc v1.0.0 // indirect - github.com/alingse/asasalint v0.0.11 // indirect github.com/andybalholm/brotli v1.0.4 // indirect - github.com/ashanbrown/forbidigo v1.4.0 // indirect - github.com/ashanbrown/makezero v1.1.1 // indirect github.com/aws/aws-sdk-go-v2/config v1.18.19 github.com/beorn7/perks v1.0.1 // indirect - github.com/bkielbasa/cyclop v1.2.0 // indirect - github.com/blizzy78/varnamelen v0.8.0 // indirect - github.com/bombsimon/wsl/v3 v3.4.0 // indirect - github.com/breml/bidichk v0.2.3 // indirect - github.com/breml/errchkjson v0.3.0 // indirect - github.com/butuzov/ireturn v0.1.1 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect - github.com/charithe/durationcheck v0.0.9 // indirect - github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348 // indirect github.com/cloudflare/circl v1.3.2 github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b // indirect github.com/containerd/continuity v0.3.0 // indirect - github.com/curioswitch/go-reassign v0.2.0 // indirect - github.com/daixiang0/gci v0.9.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/denis-tingaikin/go-header v0.4.3 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/docker/cli v20.10.21+incompatible // indirect github.com/docker/distribution v2.8.1+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.4.0 // indirect - github.com/esimonov/ifshort v1.0.4 // indirect - github.com/ettle/strcase v0.1.1 // indirect - github.com/fatih/color v1.14.1 // indirect - github.com/fatih/structtag v1.2.0 // indirect - github.com/firefart/nonamedreturns v1.0.4 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect - github.com/fzipp/gocyclo v0.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect - github.com/go-critic/go-critic v0.6.7 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-toolsmith/astcast v1.1.0 // indirect - github.com/go-toolsmith/astcopy v1.0.3 // indirect - github.com/go-toolsmith/astequal v1.1.0 // indirect - github.com/go-toolsmith/astfmt v1.1.0 // indirect - github.com/go-toolsmith/astp v1.1.0 // indirect - github.com/go-toolsmith/strparse v1.1.0 // indirect - github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect - github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect - github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect - github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 // indirect - github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect - github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect - github.com/golangci/misspell v0.4.0 // indirect - github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect - github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect github.com/google/go-tpm v0.3.3 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect github.com/gorilla/securecookie v1.1.1 // indirect - github.com/gostaticanalysis/analysisutil v0.7.1 // indirect - github.com/gostaticanalysis/comment v1.4.2 // indirect - github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect - github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hexops/gotextdiff v1.0.3 // indirect github.com/iancoleman/strcase v0.2.0 // indirect github.com/imdario/mergo v0.3.12 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect github.com/jackc/pgx/v5 v5.3.1 - github.com/jgautheron/goconst v1.5.1 // indirect - github.com/jingyugao/rowserrcheck v1.1.1 // indirect - github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect - github.com/julz/importas v0.1.0 // indirect - github.com/kisielk/errcheck v1.6.3 // indirect - github.com/kisielk/gotool v1.0.0 // indirect - github.com/kkHAIKE/contextcheck v1.1.3 // indirect github.com/klauspost/compress v1.16.0 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect - github.com/kulti/thelper v0.6.3 // indirect - github.com/kunwardeep/paralleltest v1.0.6 // indirect - github.com/kyoh86/exportloopref v0.1.11 // indirect - github.com/ldez/gomoddirectives v0.2.3 // indirect - github.com/ldez/tagliatelle v0.4.0 // indirect - github.com/leonklingele/grouper v1.1.1 // indirect github.com/libdns/libdns v0.2.1 // indirect - github.com/lufeee/execinquery v1.2.1 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.7 // indirect - github.com/maratori/testableexamples v1.0.0 // indirect - github.com/maratori/testpackage v1.1.0 // indirect - github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect - github.com/mattn/go-runewidth v0.0.13 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/mbilski/exhaustivestruct v1.2.0 // indirect - github.com/mgechev/revive v1.2.5 // indirect github.com/miekg/dns v1.1.50 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect - github.com/moricho/tparallel v0.2.1 // indirect - github.com/nakabonne/nestif v0.3.1 // indirect - github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect - github.com/nishanths/exhaustive v0.9.5 // indirect - github.com/nishanths/predeclared v0.2.2 // indirect - github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect github.com/opencontainers/runc v1.1.5 // indirect @@ -258,64 +172,29 @@ require ( github.com/philhofer/fwd v1.0.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/polyfloyd/go-errorlint v1.1.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/statsd_exporter v0.22.7 // indirect - github.com/quasilyte/go-ruleguard v0.3.19 // indirect - github.com/quasilyte/gogrep v0.5.0 // indirect - github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 // indirect - github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/rivo/uniseg v0.2.0 // indirect - github.com/ryancurrah/gomodguard v1.3.0 // indirect - github.com/ryanrolds/sqlclosecheck v0.4.0 // indirect - github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect - github.com/sashamelentyev/interfacebloat v1.1.0 // indirect - github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect - github.com/securego/gosec/v2 v2.15.0 // indirect - github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/sirupsen/logrus v1.9.0 // indirect - github.com/sivchari/containedctx v1.0.2 // indirect - github.com/sivchari/nosnakecase v1.7.0 // indirect - github.com/sivchari/tenv v1.7.1 // indirect - github.com/sonatard/noctx v0.0.1 // indirect - github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.6.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect - github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect - github.com/stretchr/objx v0.5.0 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect - github.com/tdakkota/asciicheck v0.1.1 // indirect - github.com/tetafro/godot v1.4.11 // indirect - github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e // indirect - github.com/timonwong/loggercheck v0.9.3 // indirect github.com/tinylib/msgp v1.1.2 // indirect github.com/tklauser/go-sysconf v0.3.11 // indirect github.com/tklauser/numcpus v0.6.0 // indirect - github.com/tomarrell/wrapcheck/v2 v2.8.0 // indirect - github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/uber/jaeger-client-go v2.25.0+incompatible // indirect - github.com/ultraware/funlen v0.0.3 // indirect - github.com/ultraware/whitespace v0.0.5 // indirect - github.com/uudashr/gocognit v1.0.6 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect - github.com/yagipy/maintidx v1.0.0 // indirect github.com/yashtewari/glob-intersection v0.1.0 // indirect - github.com/yeya24/promlinter v0.2.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - gitlab.com/bosi/decorder v0.2.3 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/goleak v1.2.1 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect golang.org/x/mod v0.9.0 // indirect golang.org/x/sys v0.7.0 // indirect @@ -326,9 +205,4 @@ require ( gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - honnef.co/go/tools v0.4.2 // indirect - mvdan.cc/gofumpt v0.4.0 // indirect - mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect - mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect - mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect ) diff --git a/go.sum b/go.sum index a89844775..5f86ea118 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,3 @@ -4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= -4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= -4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= -4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -58,17 +54,9 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9 contrib.go.opencensus.io/exporter/zipkin v0.1.2 h1:YqE293IZrKtqPnpwDPH/lOqTWD/s3Iwabycam74JV3g= contrib.go.opencensus.io/exporter/zipkin v0.1.2/go.mod h1:mP5xM3rrgOjpn79MM8fZbj3gsxcuytSqtH0dxSWW1RE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Abirdcfly/dupword v0.0.9 h1:MxprGjKq3yDBICXDgEEsyGirIXfMYXkLNT/agPsE1tk= -github.com/Abirdcfly/dupword v0.0.9/go.mod h1:PzmHVLLZ27MvHSzV7eFmMXSFArWXZPZmfuuziuUrf2g= -github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako= -github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU= -github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q= -github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CAFxX/httpcompression v0.0.8 h1:UBWojERnpCS6X7whJkGGZeCC3ruZBRwkwkcnfGfb0ko= github.com/CAFxX/httpcompression v0.0.8/go.mod h1:bVd1taHK1vYb5SWe9lwNDCqrfj2ka+C1Zx7JHzxuHnU= @@ -76,12 +64,6 @@ github.com/DataDog/datadog-go v3.5.0+incompatible h1:AShr9cqkF+taHjyQgcBcQUt/ZNK github.com/DataDog/datadog-go v3.5.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/opencensus-go-exporter-datadog v0.0.0-20200406135749-5c268882acf0 h1:Y6HFfo8UuntPOpfmUmLb0o3MNYKfUuH2aNmvypsDbY4= github.com/DataDog/opencensus-go-exporter-datadog v0.0.0-20200406135749-5c268882acf0/go.mod h1:/VV3EFO/hTNQZHAqaj+CPGy2+ioFrP4EX3iRwozubhQ= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts= -github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= -github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= @@ -89,8 +71,6 @@ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA= -github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= @@ -103,10 +83,6 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= -github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= -github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= -github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= @@ -115,10 +91,6 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/ashanbrown/forbidigo v1.4.0 h1:spdPbupaSqtWORq1Q4eHBoPBmHtwVyLKwaedbSLc5Sw= -github.com/ashanbrown/forbidigo v1.4.0/go.mod h1:IvgwB5Y4fzqSAj/WVXKWigoTkB0dzI2FBbpKWuh7ph8= -github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= -github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= github.com/aws/aws-sdk-go-v2 v1.17.7/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2 v1.17.8 h1:GMupCNNI7FARX27L7GjCJM8NgivWbRgpjNI/hOQjFS8= github.com/aws/aws-sdk-go-v2 v1.17.8/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= @@ -164,18 +136,6 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bkielbasa/cyclop v1.2.0 h1:7Jmnh0yL2DjKfw28p86YTd/B4lRGcNuu12sKE35sM7A= -github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= -github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= -github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU= -github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= -github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI= -github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A= -github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw= -github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU= -github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= -github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/caddyserver/certmagic v0.17.2 h1:o30seC1T/dBqBCNNGNHWwj2i5/I/FMjBbTAhjADP3nE= github.com/caddyserver/certmagic v0.17.2/go.mod h1:ouWUuC490GOLJzkyN35eXfV8bSbwMwSf4bdhkIxtdQE= @@ -190,10 +150,6 @@ github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk= -github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= -github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348 h1:cy5GCEZLUCshCGCRRUjxHrDUqkB4l5cuUt3ShEckQEo= -github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348/go.mod h1:f/miWtG3SSuTxKsNK3o58H1xl+XV6ZIfbC6p7lPPB8U= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -228,18 +184,11 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= -github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= -github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/daixiang0/gci v0.9.1 h1:jBrwBmBZTDsGsXiaCTLIe9diotp1X4X64zodFrh7l+c= -github.com/daixiang0/gci v0.9.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= 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/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU= -github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -275,17 +224,7 @@ github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCw github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= -github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= -github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= -github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= -github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= -github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= -github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= -github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/foxcpp/go-mockdns v0.0.0-20210729171921-fb145fc6f897 h1:E52jfcE64UG42SwLmrW0QByONfGynWuzBvm86BoB9z8= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= @@ -296,14 +235,10 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= -github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= -github.com/go-critic/go-critic v0.6.7 h1:1evPrElnLQ2LZtJfmNDzlieDhjnq36SLgNzisx06oPM= -github.com/go-critic/go-critic v0.6.7/go.mod h1:fYZUijFdcnxgx6wPjQA2QEjIRaNCT0gO8bhexy6/QmE= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -320,39 +255,17 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= -github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= -github.com/go-toolsmith/astcopy v1.0.3 h1:r0bgSRlMOAgO+BdQnVAcpMSMkrQCnV6ZJmIkrJgcJj0= -github.com/go-toolsmith/astcopy v1.0.3/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= -github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astequal v1.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw= -github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= -github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= -github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= -github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= -github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= -github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5 h1:eD9POs68PHkwrx7hAB78z1cb6PfGq/jyWn3wJywsH1o= -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= -github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= -github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= -github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= -github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -397,26 +310,6 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= -github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= -github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY= -github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= -github.com/golangci/golangci-lint v1.51.2 h1:yIcsT1X9ZYHdSpeWXRT1ORC/FPGSqDHbHsu9uk4FK7M= -github.com/golangci/golangci-lint v1.51.2/go.mod h1:KH9Q7/3glwpYSknxUgUyLlAv46A8fsSKo1hH2wDvkr8= -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.4.0 h1:KtVB/hTK4bbL/S6bs64rYyk8adjmh1BygbBiaAiX+a0= -github.com/golangci/misspell v0.4.0/go.mod h1:W6O/bwV6lGDxUCChm2ykw9NQdd5bYd1Xkjo88UcWyJc= -github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ= -github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/brotli/go/cbrotli v0.0.0-20210623081221-ce222e317e36 h1:qg5qEpjk1P1EMnInOCpxOpWSPRsspXJDT7P80y/JfFA= github.com/google/brotli/go/cbrotli v0.0.0-20210623081221-ce222e317e36/go.mod h1:nOPhAkwVliJdNTkj3gXpljmWhjc4wCaVqbMJcPKWP4s= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -478,8 +371,6 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U= -github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= @@ -489,20 +380,6 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= -github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= -github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= -github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= -github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= -github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= -github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= -github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= -github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= -github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= -github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -514,17 +391,12 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.2 h1:Dwmkdr5Nc/oBiXgJS3CDHNhJtIHkuZ3DZF5twqnfBdU= github.com/hashicorp/golang-lru/v2 v2.0.2/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= -github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= @@ -533,8 +405,6 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1: github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= @@ -543,12 +413,6 @@ github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= github.com/jackc/puddle/v2 v2.2.0 h1:RdcDk92EJBuBS55nQMMYFXTxwstHug4jkhT5pq8VxPk= github.com/jackc/puddle/v2 v2.2.0/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= -github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM= -github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= -github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -562,18 +426,9 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= -github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= -github.com/junk1tm/musttag v0.4.5 h1:d+mpJ1vn6WFEVKHwkgJiIedis1u/EawKOuUTygAUtCo= -github.com/junk1tm/musttag v0.4.5/go.mod h1:XkcL/9O6RmD88JBXb+I15nYRl9W4ExhgQeCBEhfMC8U= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8= -github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= -github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkHAIKE/contextcheck v1.1.3 h1:l4pNvrb8JSwRd51ojtcOxOeHJzHek+MtOyXbaR0uvmw= -github.com/kkHAIKE/contextcheck v1.1.3/go.mod h1:PG/cwd6c0705/LM0KTr1acO2gORUxkSVWyLJOFW5qoo= github.com/klauspost/compress v1.14.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= @@ -592,23 +447,10 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= -github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= -github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoaGS+Ugg8g= -github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= -github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= -github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= -github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= -github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= -github.com/ldez/tagliatelle v0.4.0 h1:sylp7d9kh6AdXN2DpVGHBRb5guTVAgOxqNGhbqc4b1c= -github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I= -github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= -github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libdns/libdns v0.2.1 h1:Wu59T7wSHRgtA0cfxC+n1c/e+O3upJGWytknkmFEDis= github.com/libdns/libdns v0.2.1/go.mod h1:yQCXzk1lEZmmCPa857bnk4TsOiqYasqpyOEeSObbb40= -github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= -github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star/v2 v2.0.1 h1:keaAo8hRuAT0O3DfJ/wM3rufbAjGeJ1lAtWZHDjKGB0= @@ -617,16 +459,8 @@ github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0Q github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= -github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= -github.com/maratori/testpackage v1.1.0 h1:GJY4wlzQhuBusMF1oahQCBtUV/AQ/k69IZ68vxaac2Q= -github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc= github.com/martinlindhe/base36 v1.1.1 h1:1F1MZ5MGghBXDZ2KJ3QfxmiydlWOGB8HCEtkap5NkVg= github.com/martinlindhe/base36 v1.1.1/go.mod h1:vMS8PaZ5e/jV9LwFKlm0YLnXl/hpOihiBxKkIoc3g08= -github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7RXkts09K+dEBJWakUWwICVqYbA= -github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -636,16 +470,9 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= -github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= -github.com/mgechev/revive v1.2.5 h1:UF9AR8pOAuwNmhXj2odp4mxv9Nx2qUIwVz8ZsU+Mbec= -github.com/mgechev/revive v1.2.5/go.mod h1:nFOXent79jMTISAfOAasKfy0Z2Ejq0WX7Qn/KAdYopI= github.com/mholt/acmez v1.1.0 h1:IQ9CGHKOHokorxnffsqDvmmE30mDenO1lptYZ1AYkHY= github.com/mholt/acmez v1.1.0/go.mod h1:zwo5+fbLLTowAX8o8ETfQzbDtwGEXnPhkmGdKIP+bgs= github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= @@ -656,7 +483,6 @@ github.com/minio/minio-go/v7 v7.0.50 h1:4IL4V8m/kI90ZL6GupCARZVrBv8/XrcKcJhaJ3iz github.com/minio/minio-go/v7 v7.0.50/go.mod h1:IbbodHyjUAguneyucUaahv+VMNs/EOTV9du7A7/Z3HU= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= @@ -673,35 +499,21 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/moricho/tparallel v0.2.1 h1:95FytivzT6rYzdJLdtfn6m1bfFJylOJK41+lgv/EHf4= -github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= -github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= -github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6FxaNu/BnU2OAaLF86eTVhP2hjTB6iMvItA= -github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= -github.com/nishanths/exhaustive v0.9.5 h1:TzssWan6orBiLYVqewCG8faud9qlFntJE30ACpzmGME= -github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA= -github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= -github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.8.1 h1:/y4o/0hV+ruUHj4xXh89xlFjoaitnI4LnkpuYs02q1c= -github.com/nunnatsa/ginkgolinter v0.8.1/go.mod h1:FYYLtszIdmzCH8XMaMPyxPVXZ7VCaIm55bA+gugx+14= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo/v2 v2.8.0 h1:pAM+oBNPrpXRs+E/8spkeGx9QgekbRVyr74EUvRVOUI= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= github.com/open-policy-agent/opa v0.49.2 h1:n8ntRq/yDWy+cmYaqSLrHXmrT3tX8WlK28vjFQdC6W8= github.com/open-policy-agent/opa v0.49.2/go.mod h1:7L3lN5qe8xboRmEHxC5lGjo5KsRMdK+CCLiFoOCP7rU= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -717,12 +529,6 @@ github.com/openzipkin/zipkin-go v0.4.1 h1:kNd/ST2yLLWhaWrkgchya40TJabe8Hioj9udfP github.com/openzipkin/zipkin-go v0.4.1/go.mod h1:qY0VqDSN1pOBN94dBc6w2GJlWLiovAyg7Qt6/I9HecM= github.com/ory/dockertest/v3 v3.10.0 h1:4K3z2VMe8Woe++invjaTB7VRyQXQy5UY+loujO4aNE4= github.com/ory/dockertest/v3 v3.10.0/go.mod h1:nr57ZbRWMqfsdGdFNLHz5jjNdDb7VVFnzAeW1n5N1Lg= -github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= -github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= @@ -742,8 +548,6 @@ github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6J github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.1.0 h1:VKoEFg5yxSgJ2yFPVhxW7oGz+f8/OVcuMeNvcPIi6Eg= -github.com/polyfloyd/go-errorlint v1.1.0/go.mod h1:Uss7Bc/izYG0leCMRx3WVlrpqWedSZk7V/FUQW6VJ6U= github.com/pomerium/csrf v1.7.0 h1:Qp4t6oyEod3svQtKfJZs589mdUTWKVf7q0PgCKYCshY= github.com/pomerium/csrf v1.7.0/go.mod h1:hAPZV47mEj2T9xFs+ysbum4l7SF1IdrryYaY6PdoIqw= github.com/pomerium/datasource v0.18.2-0.20221108160055-c6134b5ed524 h1:3YQY1sb54tEEbr0L73rjHkpLB0IB6qh3zl1+XQbMLis= @@ -790,19 +594,9 @@ github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/quasilyte/go-ruleguard v0.3.19 h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc= -github.com/quasilyte/go-ruleguard v0.3.19/go.mod h1:lHSn69Scl48I7Gt9cX3VrbsZYvYiBYszZOZW4A+oTEw= -github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= -github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY= -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -815,29 +609,12 @@ github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw= -github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= -github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI= -github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ= -github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= -github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= -github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= -github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1jbEOPrEhDzGYq0= -github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU= github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw= -github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= github.com/shirou/gopsutil/v3 v3.23.2 h1:PAWSuiAszn7IhPMBtXsbSCafej7PqUOvY6YywlQUExU= github.com/shirou/gopsutil/v3 v3.23.2/go.mod h1:gv0aQw33GLo3pG8SiWKiQrbDzbRY1K80RyZJ7V4Th1M= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -845,17 +622,7 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYIc1yrHI= -github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= -github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= -github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= -github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= -github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY= -github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= -github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= -github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= @@ -865,8 +632,6 @@ github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -877,17 +642,12 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= -github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= -github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= -github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -903,22 +663,8 @@ github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxm github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= -github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk= github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= -github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTXuO0A= -github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= -github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= -github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw= -github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= -github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo= -github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= -github.com/timonwong/loggercheck v0.9.3 h1:ecACo9fNiHxX4/Bc02rW2+kaJIAMAes7qJ7JKxt0EZI= -github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw= github.com/tinylib/msgp v1.1.2 h1:gWmO7n0Ys2RBEb7GPYB9Ujq8Mk5p2U08lRnmMcGy6BQ= github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= @@ -928,21 +674,11 @@ github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tniswong/go.rfcx v0.0.0-20181019234604-07783c52761f h1:C43EMGXFtvYf/zunHR6ivZV7Z6ytg73t0GXwYyicXMQ= github.com/tniswong/go.rfcx v0.0.0-20181019234604-07783c52761f/go.mod h1:N+sR0vLSCTtI6o06PMWsjMB4TVqqDttKNq4iC9wvxVY= -github.com/tomarrell/wrapcheck/v2 v2.8.0 h1:qDzbir0xmoE+aNxGCPrn+rUSxAX+nG6vREgbbXAR81I= -github.com/tomarrell/wrapcheck/v2 v2.8.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= -github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= -github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA= -github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI= -github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842Y= -github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= github.com/valyala/gozstd v1.11.0 h1:VV6qQFt+4sBBj9OJ7eKVvsFAMy59Urcs9Lgd+o5FOw0= github.com/valyala/gozstd v1.11.0/go.mod h1:y5Ew47GLlP37EkTB+B4s7r6A5rdaeB7ftbl9zoYiIPQ= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= @@ -960,25 +696,18 @@ github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17 github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= -github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= github.com/yashtewari/glob-intersection v0.1.0 h1:6gJvMYQlTDOL3dMsPF6J0+26vwX9MB8/1q3uAdhmTrg= github.com/yashtewari/glob-intersection v0.1.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= -github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= -github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE= github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0= -gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -1013,7 +742,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1028,9 +756,6 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220930202632-ec3f01382ef9 h1:RjggHMcaTVp0LOVZcW0bo8alwHrOaCrGUDgfWUHhnN4= golang.org/x/exp v0.0.0-20220930202632-ec3f01382ef9/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ= -golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1057,11 +782,7 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1108,11 +829,8 @@ golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1205,13 +923,11 @@ golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1221,16 +937,12 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1239,9 +951,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1249,16 +959,12 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1266,10 +972,8 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1278,7 +982,6 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1288,25 +991,16 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1314,19 +1008,9 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= -golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= -golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1482,16 +1166,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.4.2 h1:6qXr+R5w+ktL5UkwEbPp+fEvfyoMPche6GkOpGHZcLc= -honnef.co/go/tools v0.4.2/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA= -mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM= -mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w= -mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is= namespacelabs.dev/go-filenotify v0.0.0-20220511192020-53ea11be7eaa h1:jj2kjs0Hvufj40wuhMAzoZUOwrwMDFg1gHZ49RiIv9w= namespacelabs.dev/go-filenotify v0.0.0-20220511192020-53ea11be7eaa/go.mod h1:e8NJRaInXRRm1+KPA6EkGEzdLJAgEvVSIKiLzpP97nI= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/integration/authorization_test.go b/integration/authorization_test.go index 10306a149..7a10753ea 100644 --- a/integration/authorization_test.go +++ b/integration/authorization_test.go @@ -27,7 +27,7 @@ func TestAuthorization(t *testing.T) { t.Run("public", func(t *testing.T) { client := getClient(t) - req, err := http.NewRequestWithContext(ctx, "GET", "https://httpdetails.localhost.pomerium.io", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io", nil) if err != nil { t.Fatal(err) } diff --git a/integration/benchmark_test.go b/integration/benchmark_test.go index f2b17c89b..c6d976613 100644 --- a/integration/benchmark_test.go +++ b/integration/benchmark_test.go @@ -20,7 +20,7 @@ func BenchmarkLoggedInUserAccess(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { - req, err := http.NewRequestWithContext(ctx, "GET", "https://httpdetails.localhost.pomerium.io/by-domain", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/by-domain", nil) require.NoError(b, err) res, err := client.Do(req) require.NoError(b, err) @@ -34,7 +34,7 @@ func BenchmarkLoggedOutUserAccess(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { - req, err := http.NewRequestWithContext(ctx, "GET", "https://httpdetails.localhost.pomerium.io/by-domain", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/by-domain", nil) require.NoError(b, err) res, err := client.Do(req) require.NoError(b, err) diff --git a/integration/cmd/pomerium-integration-tests/main.go b/integration/cmd/pomerium-integration-tests/main.go index 632056dad..7a0376ad7 100644 --- a/integration/cmd/pomerium-integration-tests/main.go +++ b/integration/cmd/pomerium-integration-tests/main.go @@ -36,7 +36,7 @@ func main() { } } -func runGenerateConfiguration(ctx context.Context) error { +func runGenerateConfiguration(_ context.Context) error { log.Info().Msg("generating configuration") root := filepath.Join(".", "integration") diff --git a/integration/control_plane_test.go b/integration/control_plane_test.go index f34445b33..94747f7a1 100644 --- a/integration/control_plane_test.go +++ b/integration/control_plane_test.go @@ -16,7 +16,7 @@ func TestDashboard(t *testing.T) { defer clearTimeout() t.Run("user dashboard", func(t *testing.T) { - req, err := http.NewRequestWithContext(ctx, "GET", "https://authenticate.localhost.pomerium.io/.pomerium/", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://authenticate.localhost.pomerium.io/.pomerium/", nil) if err != nil { t.Fatal(err) } @@ -32,7 +32,7 @@ func TestDashboard(t *testing.T) { assert.Equal(t, http.StatusFound, res.StatusCode, "unexpected status code: %s", body) }) t.Run("dashboard strict slash redirect", func(t *testing.T) { - req, err := http.NewRequestWithContext(ctx, "GET", "https://authenticate.localhost.pomerium.io/.pomerium", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://authenticate.localhost.pomerium.io/.pomerium", nil) if err != nil { t.Fatal(err) } @@ -64,7 +64,7 @@ func TestHealth(t *testing.T) { endpoint := endpoint routeToCheck := fmt.Sprintf("%s/%s", route, endpoint) t.Run(routeToCheck, func(t *testing.T) { - req, err := http.NewRequestWithContext(ctx, "GET", routeToCheck, nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, routeToCheck, nil) if err != nil { t.Fatal(err) } diff --git a/integration/flows/flows.go b/integration/flows/flows.go index 8a1ea7f51..1ae1f7477 100644 --- a/integration/flows/flows.go +++ b/integration/flows/flows.go @@ -92,7 +92,7 @@ func Authenticate(ctx context.Context, client *http.Client, url *url.URL, option apiLogin.RawQuery = q.Encode() apiLogin.Path = cfg.apiPath - req, err := http.NewRequestWithContext(ctx, "GET", apiLogin.String(), nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, apiLogin.String(), nil) if err != nil { return nil, fmt.Errorf("via-api: invalid request: %w", err) } @@ -113,7 +113,7 @@ func Authenticate(ctx context.Context, client *http.Client, url *url.URL, option } } - req, err := http.NewRequestWithContext(ctx, "GET", url.String(), nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, url.String(), nil) if err != nil { return nil, err } @@ -234,7 +234,7 @@ func requestFromRedirectResponse(ctx context.Context, res *http.Response, req *h return nil, fmt.Errorf("error parsing location: %w", err) } location = req.URL.ResolveReference(location) - newreq, err := http.NewRequestWithContext(ctx, "GET", location.String(), nil) + newreq, err := http.NewRequestWithContext(ctx, http.MethodGet, location.String(), nil) if err != nil { return nil, err } diff --git a/integration/forms/forms.go b/integration/forms/forms.go index 2161106e4..420ef3017 100644 --- a/integration/forms/forms.go +++ b/integration/forms/forms.go @@ -30,7 +30,7 @@ func Parse(r io.Reader) []Form { var visit func(*html.Node) visit = func(node *html.Node) { if node.Type == html.ElementNode && node.Data == "form" { - currentForm = &Form{Action: "", Method: "GET", Inputs: make(map[string]string)} + currentForm = &Form{Action: "", Method: http.MethodGet, Inputs: make(map[string]string)} for _, attr := range node.Attr { switch attr.Key { case "action": diff --git a/integration/main_test.go b/integration/main_test.go index f79d73306..df0ab502b 100644 --- a/integration/main_test.go +++ b/integration/main_test.go @@ -111,7 +111,7 @@ func waitForHealthy(ctx context.Context) error { reqCtx, clearTimeout := context.WithTimeout(ctx, time.Second) defer clearTimeout() - req, err := http.NewRequestWithContext(reqCtx, "GET", endpoint, nil) + req, err := http.NewRequestWithContext(reqCtx, http.MethodGet, endpoint, nil) if err != nil { return err } diff --git a/integration/policy_test.go b/integration/policy_test.go index 3e31139f2..f0ee3ec42 100644 --- a/integration/policy_test.go +++ b/integration/policy_test.go @@ -26,7 +26,7 @@ func TestQueryStringParams(t *testing.T) { "q2": {"x?y?z"}, } - req, err := http.NewRequestWithContext(ctx, "GET", "https://httpdetails.localhost.pomerium.io/?"+qs.Encode(), nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/?"+qs.Encode(), nil) if err != nil { t.Fatal(err) } @@ -58,11 +58,11 @@ func TestCORS(t *testing.T) { defer clearTimeout() t.Run("enabled", func(t *testing.T) { - req, err := http.NewRequestWithContext(ctx, "OPTIONS", "https://httpdetails.localhost.pomerium.io/cors-enabled", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodOptions, "https://httpdetails.localhost.pomerium.io/cors-enabled", nil) if err != nil { t.Fatal(err) } - req.Header.Set("Access-Control-Request-Method", "GET") + req.Header.Set("Access-Control-Request-Method", http.MethodGet) req.Header.Set("Origin", "https://httpdetails.localhost.pomerium.io") res, err := getClient(t).Do(req) @@ -74,11 +74,11 @@ func TestCORS(t *testing.T) { assert.Equal(t, http.StatusOK, res.StatusCode, "unexpected status code") }) t.Run("disabled", func(t *testing.T) { - req, err := http.NewRequestWithContext(ctx, "OPTIONS", "https://httpdetails.localhost.pomerium.io/cors-disabled", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodOptions, "https://httpdetails.localhost.pomerium.io/cors-disabled", nil) if err != nil { t.Fatal(err) } - req.Header.Set("Access-Control-Request-Method", "GET") + req.Header.Set("Access-Control-Request-Method", http.MethodGet) req.Header.Set("Origin", "https://httpdetails.localhost.pomerium.io") res, err := getClient(t).Do(req) @@ -97,7 +97,7 @@ func TestPreserveHostHeader(t *testing.T) { defer clearTimeout() t.Run("enabled", func(t *testing.T) { - req, err := http.NewRequestWithContext(ctx, "GET", "https://httpdetails.localhost.pomerium.io/preserve-host-header-enabled", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/preserve-host-header-enabled", nil) if err != nil { t.Fatal(err) } @@ -122,7 +122,7 @@ func TestPreserveHostHeader(t *testing.T) { "destination host should be preserved in %v", result) }) t.Run("disabled", func(t *testing.T) { - req, err := http.NewRequestWithContext(ctx, "GET", "https://httpdetails.localhost.pomerium.io/preserve-host-header-disabled", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/preserve-host-header-disabled", nil) if err != nil { t.Fatal(err) } @@ -153,7 +153,7 @@ func TestSetRequestHeaders(t *testing.T) { ctx, clearTimeout := context.WithTimeout(ctx, time.Second*30) defer clearTimeout() - req, err := http.NewRequestWithContext(ctx, "GET", "https://httpdetails.localhost.pomerium.io/", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/", nil) if err != nil { t.Fatal(err) } @@ -181,7 +181,7 @@ func TestRemoveRequestHeaders(t *testing.T) { ctx, clearTimeout := context.WithTimeout(ctx, time.Second*30) defer clearTimeout() - req, err := http.NewRequestWithContext(ctx, "GET", "https://httpdetails.localhost.pomerium.io/", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/", nil) if err != nil { t.Fatal(err) } @@ -245,7 +245,7 @@ func TestGoogleCloudRun(t *testing.T) { ctx, clearTimeout := context.WithTimeout(ctx, time.Second*30) defer clearTimeout() - req, err := http.NewRequestWithContext(ctx, "GET", "https://cloudrun.localhost.pomerium.io/", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://cloudrun.localhost.pomerium.io/", nil) if err != nil { t.Fatal(err) } @@ -287,7 +287,7 @@ func TestLoadBalancer(t *testing.T) { _ = res.Body.Close() for i := 0; i < 100; i++ { - req, err := http.NewRequestWithContext(ctx, "GET", + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://httpdetails.localhost.pomerium.io/"+path, nil) if !assert.NoError(t, err) { return distribution diff --git a/internal/autocert/manager.go b/internal/autocert/manager.go index 16a7cd1f3..3af8f8c2b 100644 --- a/internal/autocert/manager.go +++ b/internal/autocert/manager.go @@ -23,6 +23,7 @@ import ( "github.com/pomerium/pomerium/internal/httputil" "github.com/pomerium/pomerium/internal/log" "github.com/pomerium/pomerium/internal/telemetry/metrics" + "github.com/pomerium/pomerium/internal/urlutil" "github.com/pomerium/pomerium/pkg/cryptutil" ) @@ -438,11 +439,12 @@ func sourceHostnames(cfg *config.Config) []string { dedupe := map[string]struct{}{} for _, p := range policies { - dedupe[p.Source.Hostname()] = struct{}{} + if u, _ := urlutil.ParseAndValidateURL(p.From); u != nil { + dedupe[u.Hostname()] = struct{}{} + } } if cfg.Options.AuthenticateURLString != "" { - u, _ := cfg.Options.GetAuthenticateURL() - if u != nil { + if u, _ := cfg.Options.GetAuthenticateURL(); u != nil { dedupe[u.Hostname()] = struct{}{} } } diff --git a/internal/autocert/manager_test.go b/internal/autocert/manager_test.go index 51fadc146..e9372b28a 100644 --- a/internal/autocert/manager_test.go +++ b/internal/autocert/manager_test.go @@ -384,7 +384,7 @@ func Test_configureCertificateAuthority(t *testing.T) { expected *certmagic.ACMEIssuer wantErr bool } - var tests = map[string]func(t *testing.T) test{ + tests := map[string]func(t *testing.T) test{ "ok/default": func(t *testing.T) test { return test{ args: args{ @@ -460,7 +460,7 @@ func Test_configureExternalAccountBinding(t *testing.T) { expected *certmagic.ACMEIssuer wantErr bool } - var tests = map[string]func(t *testing.T) test{ + tests := map[string]func(t *testing.T) test{ "ok": func(t *testing.T) test { return test{ args: args{ @@ -522,11 +522,11 @@ func Test_configureTrustedRoots(t *testing.T) { wantErr bool cleanup func() } - var tests = map[string]func(t *testing.T) test{ + tests := map[string]func(t *testing.T) test{ "ok/pem": func(t *testing.T) test { - copy, err := x509.SystemCertPool() + roots, err := x509.SystemCertPool() require.NoError(t, err) - ok := copy.AppendCertsFromPEM(ca.certPEM) + ok := roots.AppendCertsFromPEM(ca.certPEM) require.Equal(t, true, ok) return test{ args: args{ @@ -538,15 +538,15 @@ func Test_configureTrustedRoots(t *testing.T) { expected: &certmagic.ACMEIssuer{ CA: certmagic.DefaultACME.CA, TestCA: certmagic.DefaultACME.TestCA, - TrustedRoots: copy, + TrustedRoots: roots, }, wantErr: false, } }, "ok/file": func(t *testing.T) test { - copy, err := x509.SystemCertPool() + roots, err := x509.SystemCertPool() require.NoError(t, err) - ok := copy.AppendCertsFromPEM(ca.certPEM) + ok := roots.AppendCertsFromPEM(ca.certPEM) require.Equal(t, true, ok) f, err := os.CreateTemp("", "pomerium-test-ca") require.NoError(t, err) @@ -563,7 +563,7 @@ func Test_configureTrustedRoots(t *testing.T) { expected: &certmagic.ACMEIssuer{ CA: certmagic.DefaultACME.CA, TestCA: certmagic.DefaultACME.TestCA, - TrustedRoots: copy, + TrustedRoots: roots, }, wantErr: false, cleanup: func() { @@ -572,7 +572,7 @@ func Test_configureTrustedRoots(t *testing.T) { } }, "fail/pem": func(t *testing.T) test { - copy, err := x509.SystemCertPool() + roots, err := x509.SystemCertPool() require.NoError(t, err) return test{ args: args{ @@ -584,13 +584,13 @@ func Test_configureTrustedRoots(t *testing.T) { expected: &certmagic.ACMEIssuer{ CA: certmagic.DefaultACME.CA, TestCA: certmagic.DefaultACME.TestCA, - TrustedRoots: copy, + TrustedRoots: roots, }, wantErr: true, } }, "fail/file": func(t *testing.T) test { - copy, err := x509.SystemCertPool() + roots, err := x509.SystemCertPool() require.NoError(t, err) return test{ args: args{ @@ -602,7 +602,7 @@ func Test_configureTrustedRoots(t *testing.T) { expected: &certmagic.ACMEIssuer{ CA: certmagic.DefaultACME.CA, TestCA: certmagic.DefaultACME.TestCA, - TrustedRoots: copy, + TrustedRoots: roots, }, wantErr: true, } diff --git a/internal/controlplane/events.go b/internal/controlplane/events.go index 07667bf8e..ae3e9761c 100644 --- a/internal/controlplane/events.go +++ b/internal/controlplane/events.go @@ -22,16 +22,16 @@ const maxEvents = 50 var outboundGRPCConnection = new(grpc.CachedOutboundGRPClientConn) func (srv *Server) storeEvent(ctx context.Context, evt proto.Message) error { - any := protoutil.NewAny(evt) + data := protoutil.NewAny(evt) client, err := srv.getDataBrokerClient(ctx) if err != nil { return err } - if !srv.haveSetCapacity[any.GetTypeUrl()] { + if !srv.haveSetCapacity[data.GetTypeUrl()] { _, err = client.SetOptions(ctx, &databrokerpb.SetOptionsRequest{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Options: &databrokerpb.Options{ Capacity: proto.Uint64(maxEvents), }, @@ -39,7 +39,7 @@ func (srv *Server) storeEvent(ctx context.Context, evt proto.Message) error { if err != nil { return err } - srv.haveSetCapacity[any.GetTypeUrl()] = true + srv.haveSetCapacity[data.GetTypeUrl()] = true } var id string @@ -51,9 +51,9 @@ func (srv *Server) storeEvent(ctx context.Context, evt proto.Message) error { _, err = client.Put(ctx, &databrokerpb.PutRequest{ Records: []*databrokerpb.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: id, - Data: any, + Data: data, }}, }) if err != nil { diff --git a/internal/controlplane/http.go b/internal/controlplane/http.go index 8208d92c9..f1749d980 100644 --- a/internal/controlplane/http.go +++ b/internal/controlplane/http.go @@ -19,7 +19,7 @@ import ( hpke_handlers "github.com/pomerium/pomerium/pkg/hpke/handlers" ) -func (srv *Server) addHTTPMiddleware(root *mux.Router, cfg *config.Config) { +func (srv *Server) addHTTPMiddleware(root *mux.Router, _ *config.Config) { compressor, err := httpcompression.DefaultAdapter() if err != nil { panic(err) diff --git a/internal/controlplane/xdsmgr/xdsmgr.go b/internal/controlplane/xdsmgr/xdsmgr.go index f6e2fa0f2..8c46ed453 100644 --- a/internal/controlplane/xdsmgr/xdsmgr.go +++ b/internal/controlplane/xdsmgr/xdsmgr.go @@ -212,7 +212,7 @@ func (mgr *Manager) DeltaAggregatedResources( // StreamAggregatedResources is not implemented. func (mgr *Manager) StreamAggregatedResources( - stream envoy_service_discovery_v3.AggregatedDiscoveryService_StreamAggregatedResourcesServer, + _ envoy_service_discovery_v3.AggregatedDiscoveryService_StreamAggregatedResourcesServer, ) error { return status.Errorf(codes.Unimplemented, "method StreamAggregatedResources not implemented") } diff --git a/internal/databroker/config_source.go b/internal/databroker/config_source.go index faa265709..0b3396ddd 100644 --- a/internal/databroker/config_source.go +++ b/internal/databroker/config_source.go @@ -223,13 +223,13 @@ func (s *syncerHandler) GetDataBrokerServiceClient() databroker.DataBrokerServic return s.client } -func (s *syncerHandler) ClearRecords(ctx context.Context) { +func (s *syncerHandler) ClearRecords(_ context.Context) { s.src.mu.Lock() s.src.dbConfigs = map[string]dbConfig{} s.src.mu.Unlock() } -func (s *syncerHandler) UpdateRecords(ctx context.Context, serverVersion uint64, records []*databroker.Record) { +func (s *syncerHandler) UpdateRecords(ctx context.Context, _ uint64, records []*databroker.Record) { if len(records) == 0 { return } diff --git a/internal/databroker/server.go b/internal/databroker/server.go index 5d3582cbf..324e96cd1 100644 --- a/internal/databroker/server.go +++ b/internal/databroker/server.go @@ -129,7 +129,7 @@ func (srv *Server) Get(ctx context.Context, req *databroker.GetRequest) (*databr } // ListTypes lists all the record types. -func (srv *Server) ListTypes(ctx context.Context, req *emptypb.Empty) (*databroker.ListTypesResponse, error) { +func (srv *Server) ListTypes(ctx context.Context, _ *emptypb.Empty) (*databroker.ListTypesResponse, error) { ctx, span := trace.StartSpan(ctx, "databroker.grpc.ListTypes") defer span.End() log.Info(ctx).Msg("list types") diff --git a/internal/databroker/server_test.go b/internal/databroker/server_test.go index c1a6fbc48..c73b18c9e 100644 --- a/internal/databroker/server_test.go +++ b/internal/databroker/server_test.go @@ -59,25 +59,25 @@ func TestServer_Get(t *testing.T) { s := new(session.Session) s.Id = "1" - any := protoutil.NewAny(s) + data := protoutil.NewAny(s) _, err := srv.Put(context.Background(), &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, - Data: any, + Data: data, }}, }) assert.NoError(t, err) _, err = srv.Put(context.Background(), &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, DeletedAt: timestamppb.Now(), }}, }) assert.NoError(t, err) _, err = srv.Get(context.Background(), &databroker.GetRequest{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, }) assert.Error(t, err) @@ -91,17 +91,17 @@ func TestServer_Options(t *testing.T) { s := new(session.Session) s.Id = "1" - any := protoutil.NewAny(s) + data := protoutil.NewAny(s) _, err := srv.Put(context.Background(), &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, - Data: any, + Data: data, }}, }) assert.NoError(t, err) _, err = srv.SetOptions(context.Background(), &databroker.SetOptionsRequest{ - Type: any.TypeUrl, + Type: data.TypeUrl, Options: &databroker.Options{ Capacity: proto.Uint64(1), }, @@ -141,12 +141,12 @@ func TestServer_Query(t *testing.T) { for i := 0; i < 10; i++ { s := new(session.Session) s.Id = fmt.Sprint(i) - any := protoutil.NewAny(s) + data := protoutil.NewAny(s) _, err := srv.Put(context.Background(), &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, - Data: any, + Data: data, }}, }) assert.NoError(t, err) @@ -192,12 +192,12 @@ func TestServer_Sync(t *testing.T) { s := new(session.Session) s.Id = "1" - any := protoutil.NewAny(s) + data := protoutil.NewAny(s) _, err := srv.Put(context.Background(), &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, - Data: any, + Data: data, }}, }) assert.NoError(t, err) @@ -251,9 +251,9 @@ func TestServer_Sync(t *testing.T) { _, err = srv.Put(context.Background(), &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, - Data: any, + Data: data, }}, }) assert.NoError(t, err) @@ -276,12 +276,12 @@ func TestServerInvalidStorage(t *testing.T) { s := new(session.Session) s.Id = "1" - any := protoutil.NewAny(s) + data := protoutil.NewAny(s) _, err := srv.Put(context.Background(), &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, - Data: any, + Data: data, }}, }) _ = assert.Error(t, err) && assert.Contains(t, err.Error(), "unsupported storage type") @@ -297,12 +297,12 @@ func TestServerRedis(t *testing.T) { s := new(session.Session) s.Id = "1" - any := protoutil.NewAny(s) + data := protoutil.NewAny(s) _, err := srv.Put(context.Background(), &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.TypeUrl, + Type: data.TypeUrl, Id: s.Id, - Data: any, + Data: data, }}, }) assert.NoError(t, err) @@ -328,7 +328,7 @@ func TestServerRedis(t *testing.T) { client := databroker.NewDataBrokerServiceClient(cc) stream, err := client.SyncLatest(ctx, &databroker.SyncLatestRequest{ - Type: any.TypeUrl, + Type: data.TypeUrl, }) if err != nil { return err diff --git a/internal/deterministicecdsa/ecdsa.go b/internal/deterministicecdsa/ecdsa.go index f18804c09..05571e2ea 100644 --- a/internal/deterministicecdsa/ecdsa.go +++ b/internal/deterministicecdsa/ecdsa.go @@ -102,7 +102,7 @@ func WrapPrivateKey(privateKey *ecdsa.PrivateKey) crypto.PrivateKey { // This method implements crypto.Signer, which is an interface to support keys // where the private part is kept in, for example, a hardware module. Common // uses can use the SignASN1 function in this package directly. -func (priv deterministicPrivateKey) Sign(rand io.Reader, digest []byte, opts crypto.SignerOpts) ([]byte, error) { +func (priv deterministicPrivateKey) Sign(rand io.Reader, digest []byte, _ crypto.SignerOpts) ([]byte, error) { r, s, err := Sign(rand, priv.PrivateKey, digest) if err != nil { return nil, err diff --git a/internal/encoding/jws/jws.go b/internal/encoding/jws/jws.go index 6615a7404..eaa0ad573 100644 --- a/internal/encoding/jws/jws.go +++ b/internal/encoding/jws/jws.go @@ -3,10 +3,10 @@ package jws import ( - "github.com/pomerium/pomerium/internal/encoding" - "github.com/go-jose/go-jose/v3" "github.com/go-jose/go-jose/v3/jwt" + + "github.com/pomerium/pomerium/internal/encoding" ) // JSONWebSigner is the struct representing a signed JWT. diff --git a/internal/encoding/mock/mock_encoder.go b/internal/encoding/mock/mock_encoder.go index 6166fe0be..ed664f573 100644 --- a/internal/encoding/mock/mock_encoder.go +++ b/internal/encoding/mock/mock_encoder.go @@ -19,11 +19,11 @@ type Encoder struct { } // Marshal is a mock implementation of Encoder. -func (mc Encoder) Marshal(i interface{}) ([]byte, error) { +func (mc Encoder) Marshal(_ any) ([]byte, error) { return mc.MarshalResponse, mc.MarshalError } // Unmarshal is a mock implementation of Encoder. -func (mc Encoder) Unmarshal(s []byte, i interface{}) error { +func (mc Encoder) Unmarshal(_ []byte, _ any) error { return mc.UnmarshalError } diff --git a/internal/encoding/mock/mock_encoder_test.go b/internal/encoding/mock/mock_encoder_test.go index dbb2c9952..6717e2e28 100644 --- a/internal/encoding/mock/mock_encoder_test.go +++ b/internal/encoding/mock/mock_encoder_test.go @@ -13,14 +13,14 @@ func TestMockEncoder(t *testing.T) { UnmarshalError: e, } s, err := mc.Marshal("test") - if err != e { + if !errors.Is(err, e) { t.Error("unexpected Marshal error") } if string(s) != "MarshalResponse" { t.Error("unexpected MarshalResponse error") } err = mc.Unmarshal([]byte("s"), "s") - if err != e { + if !errors.Is(err, e) { t.Error("unexpected Unmarshal error") } } diff --git a/internal/handlers/jwks_test.go b/internal/handlers/jwks_test.go index 83321423c..43c60ec39 100644 --- a/internal/handlers/jwks_test.go +++ b/internal/handlers/jwks_test.go @@ -41,7 +41,7 @@ func TestJWKSHandler(t *testing.T) { w := httptest.NewRecorder() r := httptest.NewRequest(http.MethodOptions, "/", nil) r.Header.Set("Origin", "https://www.example.com") - r.Header.Set("Access-Control-Request-Method", "GET") + r.Header.Set("Access-Control-Request-Method", http.MethodGet) handlers.JWKSHandler(nil).ServeHTTP(w, r) assert.Equal(t, http.StatusNoContent, w.Result().StatusCode) }) diff --git a/internal/handlers/webauthn/webauthn.go b/internal/handlers/webauthn/webauthn.go index 6f42e6008..ec9d35924 100644 --- a/internal/handlers/webauthn/webauthn.go +++ b/internal/handlers/webauthn/webauthn.go @@ -128,7 +128,7 @@ func (h *Handler) handle(w http.ResponseWriter, r *http.Request) error { } switch { - case r.Method == "GET": + case r.Method == http.MethodGet: return h.handleView(w, r, s) case r.FormValue("action") == "authenticate": return h.handleAuthenticate(w, r, s) diff --git a/internal/handlers/well_known_pomerium_test.go b/internal/handlers/well_known_pomerium_test.go index 598fcb4ba..b4db777ea 100644 --- a/internal/handlers/well_known_pomerium_test.go +++ b/internal/handlers/well_known_pomerium_test.go @@ -17,7 +17,7 @@ func TestWellKnownPomeriumHandler(t *testing.T) { w := httptest.NewRecorder() r := httptest.NewRequest(http.MethodOptions, "/", nil) r.Header.Set("Origin", authenticateURL.String()) - r.Header.Set("Access-Control-Request-Method", "GET") + r.Header.Set("Access-Control-Request-Method", http.MethodGet) WellKnownPomerium(authenticateURL).ServeHTTP(w, r) assert.Equal(t, http.StatusNoContent, w.Result().StatusCode) }) diff --git a/internal/httputil/handlers_test.go b/internal/httputil/handlers_test.go index 60e4fda36..183085aa8 100644 --- a/internal/httputil/handlers_test.go +++ b/internal/httputil/handlers_test.go @@ -51,7 +51,7 @@ func TestHandlerFunc_ServeHTTP(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - r := httptest.NewRequest("GET", "/", nil) + r := httptest.NewRequest(http.MethodGet, "/", nil) r.Header.Set("Accept", "application/json") w := httptest.NewRecorder() tt.f.ServeHTTP(w, r) diff --git a/internal/httputil/httputil_test.go b/internal/httputil/httputil_test.go index 472a9432f..be4c3b8d3 100644 --- a/internal/httputil/httputil_test.go +++ b/internal/httputil/httputil_test.go @@ -9,16 +9,16 @@ import ( ) func TestGetClientIPAddress(t *testing.T) { - r1, err := http.NewRequest("GET", "https://example.com", nil) + r1, err := http.NewRequest(http.MethodGet, "https://example.com", nil) require.NoError(t, err) assert.Equal(t, "127.0.0.1", GetClientIPAddress(r1)) - r2, err := http.NewRequest("GET", "https://example.com", nil) + r2, err := http.NewRequest(http.MethodGet, "https://example.com", nil) require.NoError(t, err) r2.RemoteAddr = "127.0.0.2:1234" assert.Equal(t, "127.0.0.2", GetClientIPAddress(r2)) - r3, err := http.NewRequest("GET", "https://example.com", nil) + r3, err := http.NewRequest(http.MethodGet, "https://example.com", nil) require.NoError(t, err) r3.RemoteAddr = "127.0.0.3:1234" r3.Header.Set("X-Envoy-External-Address", "127.0.0.3") diff --git a/internal/httputil/reproxy/reproxy_test.go b/internal/httputil/reproxy/reproxy_test.go index 3728d9d56..28d92504b 100644 --- a/internal/httputil/reproxy/reproxy_test.go +++ b/internal/httputil/reproxy/reproxy_test.go @@ -62,7 +62,7 @@ func TestMiddleware(t *testing.T) { policyID, _ := cfg.Options.Policies[0].RouteID() - req, err := http.NewRequest("GET", srv2.URL, nil) + req, err := http.NewRequest(http.MethodGet, srv2.URL, nil) require.NoError(t, err) for _, hdr := range h.GetPolicyIDHeaders(policyID) { req.Header.Set(hdr[0], hdr[1]) diff --git a/internal/httputil/router.go b/internal/httputil/router.go index c40cf8d1b..fcc3ab509 100644 --- a/internal/httputil/router.go +++ b/internal/httputil/router.go @@ -16,7 +16,7 @@ func NewRouter() *mux.Router { // CSRFFailureHandler sets a HTTP 403 Forbidden status and writes the // CSRF failure reason to the response. -func CSRFFailureHandler(w http.ResponseWriter, r *http.Request) error { +func CSRFFailureHandler(_ http.ResponseWriter, r *http.Request) error { if err := csrf.FailureReason(r); err != nil { return NewError(http.StatusBadRequest, csrf.FailureReason(r)) } diff --git a/internal/identity/manager/manager.go b/internal/identity/manager/manager.go index 8ec1c7c34..5f13d5967 100644 --- a/internal/identity/manager/manager.go +++ b/internal/identity/manager/manager.go @@ -448,7 +448,8 @@ func isTemporaryError(err error) bool { if errors.Is(err, context.DeadlineExceeded) || errors.Is(err, context.Canceled) { return true } - if e, ok := err.(interface{ Temporary() bool }); ok && e.Temporary() { + var hasTemporary interface{ Temporary() bool } + if errors.As(err, &hasTemporary) && hasTemporary.Temporary() { return true } return false diff --git a/internal/identity/manager/manager_test.go b/internal/identity/manager/manager_test.go index ff73c6d35..1a4ed386b 100644 --- a/internal/identity/manager/manager_test.go +++ b/internal/identity/manager/manager_test.go @@ -160,11 +160,11 @@ func TestManager_reportErrors(t *testing.T) { } func mkRecord(msg recordable) *databroker.Record { - any := protoutil.NewAny(msg) + data := protoutil.NewAny(msg) return &databroker.Record{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: msg.GetId(), - Data: any, + Data: data, } } diff --git a/internal/identity/manager/sync.go b/internal/identity/manager/sync.go index e99300c68..f8707cb0c 100644 --- a/internal/identity/manager/sync.go +++ b/internal/identity/manager/sync.go @@ -17,7 +17,7 @@ type dataBrokerSyncer struct { } func newDataBrokerSyncer( - ctx context.Context, + _ context.Context, cfg *atomicutil.Value[*config], update chan<- updateRecordsMessage, clear chan<- struct{}, @@ -47,7 +47,7 @@ func (syncer *dataBrokerSyncer) GetDataBrokerServiceClient() databroker.DataBrok return syncer.cfg.Load().dataBrokerClient } -func (syncer *dataBrokerSyncer) UpdateRecords(ctx context.Context, serverVersion uint64, records []*databroker.Record) { +func (syncer *dataBrokerSyncer) UpdateRecords(ctx context.Context, _ uint64, records []*databroker.Record) { select { case <-ctx.Done(): case syncer.update <- updateRecordsMessage{records: records}: diff --git a/internal/identity/mock_provider.go b/internal/identity/mock_provider.go index cdb298416..221e4d24f 100644 --- a/internal/identity/mock_provider.go +++ b/internal/identity/mock_provider.go @@ -33,18 +33,18 @@ func (mp MockProvider) Refresh(context.Context, *oauth2.Token, identity.State) ( } // Revoke is a mocked providers function. -func (mp MockProvider) Revoke(ctx context.Context, s *oauth2.Token) error { +func (mp MockProvider) Revoke(_ context.Context, _ *oauth2.Token) error { return mp.RevokeError } // GetSignInURL is a mocked providers function. -func (mp MockProvider) GetSignInURL(s string) (string, error) { return mp.GetSignInURLResponse, nil } +func (mp MockProvider) GetSignInURL(_ string) (string, error) { return mp.GetSignInURLResponse, nil } // LogOut is a mocked providers function. func (mp MockProvider) LogOut() (*url.URL, error) { return &mp.LogOutResponse, mp.LogOutError } // UpdateUserInfo is a mocked providers function. -func (mp MockProvider) UpdateUserInfo(ctx context.Context, t *oauth2.Token, v interface{}) error { +func (mp MockProvider) UpdateUserInfo(_ context.Context, _ *oauth2.Token, _ interface{}) error { return mp.UpdateUserInfoError } diff --git a/internal/identity/oauth/apple/apple.go b/internal/identity/oauth/apple/apple.go index 4e73e93a3..d734bfef8 100644 --- a/internal/identity/oauth/apple/apple.go +++ b/internal/identity/oauth/apple/apple.go @@ -10,12 +10,10 @@ import ( "net/http" "net/url" "strings" - "time" - - "golang.org/x/exp/maps" - "golang.org/x/oauth2" "github.com/go-jose/go-jose/v3/jwt" + "golang.org/x/exp/maps" + "golang.org/x/oauth2" "github.com/pomerium/pomerium/internal/httputil" "github.com/pomerium/pomerium/internal/identity/identity" @@ -32,7 +30,6 @@ const ( defaultProviderURL = "https://appleid.apple.com" tokenURL = "/auth/token" //nolint: gosec authURL = "/auth/authorize" - refreshDeadline = time.Minute * 60 revocationURL = "/auth/revoke" ) @@ -50,7 +47,7 @@ type Provider struct { } // New instantiates an OpenID Connect (OIDC) provider for Apple. -func New(ctx context.Context, o *oauth.Options) (*Provider, error) { +func New(_ context.Context, o *oauth.Options) (*Provider, error) { options := *o if options.ProviderURL == "" { options.ProviderURL = defaultProviderURL @@ -178,7 +175,7 @@ func (p *Provider) Revoke(ctx context.Context, t *oauth2.Token) error { } // UpdateUserInfo gets claims from the oauth token. -func (p *Provider) UpdateUserInfo(ctx context.Context, t *oauth2.Token, v interface{}) error { +func (p *Provider) UpdateUserInfo(_ context.Context, t *oauth2.Token, v interface{}) error { rawIDToken, ok := t.Extra("id_token").(string) if !ok { return nil diff --git a/internal/identity/oauth/github/github.go b/internal/identity/oauth/github/github.go index 5443c959d..e5e3d98da 100644 --- a/internal/identity/oauth/github/github.go +++ b/internal/identity/oauth/github/github.go @@ -56,7 +56,7 @@ type Provider struct { } // New instantiates an OAuth2 provider for Github. -func New(ctx context.Context, o *oauth.Options) (*Provider, error) { +func New(_ context.Context, o *oauth.Options) (*Provider, error) { p := Provider{} if o.ProviderURL == "" { o.ProviderURL = defaultProviderURL @@ -92,7 +92,7 @@ func New(ctx context.Context, o *oauth.Options) (*Provider, error) { func (p *Provider) Authenticate(ctx context.Context, code string, v identity.State) (*oauth2.Token, error) { oauth2Token, err := p.Oauth.Exchange(ctx, code) if err != nil { - return nil, fmt.Errorf("github: token exchange failed %v", err) + return nil, fmt.Errorf("github: token exchange failed %w", err) } // github tokens never expire @@ -124,7 +124,7 @@ func (p *Provider) UpdateUserInfo(ctx context.Context, t *oauth2.Token, v interf } // Refresh is a no-op for github, because github sessions never expire. -func (p *Provider) Refresh(ctx context.Context, t *oauth2.Token, v identity.State) (*oauth2.Token, error) { +func (p *Provider) Refresh(_ context.Context, t *oauth2.Token, _ identity.State) (*oauth2.Token, error) { t.Expiry = time.Now().Add(refreshDeadline) return t, nil } diff --git a/internal/log/log.go b/internal/log/log.go index 2bf68a773..5bd44280e 100644 --- a/internal/log/log.go +++ b/internal/log/log.go @@ -161,7 +161,7 @@ func Panic() *zerolog.Event { // zerolog.Disabled will still disable events produced by this method. // // You must call Msg on the returned event in order to send the event. -func Log(ctx context.Context) *zerolog.Event { +func Log(_ context.Context) *zerolog.Event { return Logger().Log() } diff --git a/internal/registry/inmemory/inmemory.go b/internal/registry/inmemory/inmemory.go index 7ee8a71d5..b00c9fc6f 100644 --- a/internal/registry/inmemory/inmemory.go +++ b/internal/registry/inmemory/inmemory.go @@ -6,14 +6,14 @@ import ( "sync" "time" - "github.com/pomerium/pomerium/internal/registry" - "github.com/pomerium/pomerium/internal/signal" - pb "github.com/pomerium/pomerium/pkg/grpc/registry" - "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" + + "github.com/pomerium/pomerium/internal/registry" + "github.com/pomerium/pomerium/internal/signal" + pb "github.com/pomerium/pomerium/pkg/grpc/registry" ) type inMemoryServer struct { @@ -131,7 +131,7 @@ func (s *inMemoryServer) reportLocked(services []*pb.Service) (bool, error) { } // List returns current snapshot of the services known to the registry -func (s *inMemoryServer) List(ctx context.Context, req *pb.ListRequest) (*pb.ServiceList, error) { +func (s *inMemoryServer) List(_ context.Context, req *pb.ListRequest) (*pb.ServiceList, error) { if err := req.Validate(); err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) } diff --git a/internal/registry/inmemory/inmemory_test.go b/internal/registry/inmemory/inmemory_test.go index 4b366a49a..16c3f8093 100644 --- a/internal/registry/inmemory/inmemory_test.go +++ b/internal/registry/inmemory/inmemory_test.go @@ -8,14 +8,14 @@ import ( "testing" "time" - pb "github.com/pomerium/pomerium/pkg/grpc/registry" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/test/bufconn" + + pb "github.com/pomerium/pomerium/pkg/grpc/registry" ) const ( diff --git a/internal/registry/reporter.go b/internal/registry/reporter.go index 7168f8b83..719b4819b 100644 --- a/internal/registry/reporter.go +++ b/internal/registry/reporter.go @@ -9,12 +9,12 @@ import ( "strings" "time" + "github.com/cenkalti/backoff/v4" + "github.com/pomerium/pomerium/config" "github.com/pomerium/pomerium/internal/log" "github.com/pomerium/pomerium/pkg/grpc" pb "github.com/pomerium/pomerium/pkg/grpc/registry" - - "github.com/cenkalti/backoff/v4" ) // Reporter periodically submits a list of services available on this instance to the service registry diff --git a/internal/registry/reporter_test.go b/internal/registry/reporter_test.go index 63d97c626..1bfa7fe49 100644 --- a/internal/registry/reporter_test.go +++ b/internal/registry/reporter_test.go @@ -3,9 +3,9 @@ package registry import ( "testing" - "github.com/pomerium/pomerium/config" - "github.com/stretchr/testify/assert" + + "github.com/pomerium/pomerium/config" ) func TestMetricsURL(t *testing.T) { diff --git a/internal/sessions/cookie/cookie_store.go b/internal/sessions/cookie/cookie_store.go index 6514b9ab9..041456242 100644 --- a/internal/sessions/cookie/cookie_store.go +++ b/internal/sessions/cookie/cookie_store.go @@ -96,7 +96,7 @@ func (cs *Store) makeCookie(value string) *http.Cookie { } // ClearSession clears the session cookie from a request -func (cs *Store) ClearSession(w http.ResponseWriter, r *http.Request) { +func (cs *Store) ClearSession(w http.ResponseWriter, _ *http.Request) { c := cs.makeCookie("") c.MaxAge = -1 c.Expires = timeNow().Add(-time.Hour) @@ -130,7 +130,7 @@ func (cs *Store) LoadSession(r *http.Request) (string, error) { return jwt, nil } } - return "", fmt.Errorf("%w: %s", sessions.ErrMalformed, err) + return "", fmt.Errorf("%w: %w", sessions.ErrMalformed, err) } // SaveSession saves a session state to a request's cookie store. diff --git a/internal/sessions/cookie/cookie_store_test.go b/internal/sessions/cookie/cookie_store_test.go index a92256d70..e6289c486 100644 --- a/internal/sessions/cookie/cookie_store_test.go +++ b/internal/sessions/cookie/cookie_store_test.go @@ -4,6 +4,7 @@ import ( "crypto/rand" "errors" "fmt" + "net/http" "net/http/httptest" "strings" "testing" @@ -133,13 +134,13 @@ func TestStore_SaveSession(t *testing.T) { decoder: tt.decoder, } - r := httptest.NewRequest("GET", "/", nil) + r := httptest.NewRequest(http.MethodGet, "/", nil) w := httptest.NewRecorder() if err := s.SaveSession(w, r, tt.State); (err != nil) != tt.wantErr { t.Errorf("Store.SaveSession() error = %v, wantErr %v", err, tt.wantErr) } - r = httptest.NewRequest("GET", "/", nil) + r = httptest.NewRequest(http.MethodGet, "/", nil) for _, cookie := range w.Result().Cookies() { r.AddCookie(cookie) } diff --git a/internal/sessions/header/header_store_test.go b/internal/sessions/header/header_store_test.go index 7acf526bf..757956fbe 100644 --- a/internal/sessions/header/header_store_test.go +++ b/internal/sessions/header/header_store_test.go @@ -9,19 +9,19 @@ import ( func TestTokenFromHeader(t *testing.T) { t.Run("pomerium header", func(t *testing.T) { - r, _ := http.NewRequest("GET", "http://localhost/some/url", nil) + r, _ := http.NewRequest(http.MethodGet, "http://localhost/some/url", nil) r.Header.Set("X-Pomerium-Authorization", "JWT") v := TokenFromHeaders(r) assert.Equal(t, "JWT", v) }) t.Run("pomerium type", func(t *testing.T) { - r, _ := http.NewRequest("GET", "http://localhost/some/url", nil) + r, _ := http.NewRequest(http.MethodGet, "http://localhost/some/url", nil) r.Header.Set("Authorization", "Pomerium JWT") v := TokenFromHeaders(r) assert.Equal(t, "JWT", v) }) t.Run("bearer type", func(t *testing.T) { - r, _ := http.NewRequest("GET", "http://localhost/some/url", nil) + r, _ := http.NewRequest(http.MethodGet, "http://localhost/some/url", nil) r.Header.Set("Authorization", "Bearer Pomerium-JWT") v := TokenFromHeaders(r) assert.Equal(t, "JWT", v) diff --git a/internal/sessions/queryparam/query_store.go b/internal/sessions/queryparam/query_store.go index c4f1e277c..034f8f5c2 100644 --- a/internal/sessions/queryparam/query_store.go +++ b/internal/sessions/queryparam/query_store.go @@ -53,14 +53,14 @@ func (qp *Store) LoadSession(r *http.Request) (string, error) { } // ClearSession clears the session cookie from a request's query param key `pomerium_session`. -func (qp *Store) ClearSession(w http.ResponseWriter, r *http.Request) { +func (qp *Store) ClearSession(_ http.ResponseWriter, r *http.Request) { params := r.URL.Query() params.Del(qp.queryParamKey) r.URL.RawQuery = params.Encode() } // SaveSession sets a session to a request's query param key `pomerium_session` -func (qp *Store) SaveSession(w http.ResponseWriter, r *http.Request, x interface{}) error { +func (qp *Store) SaveSession(_ http.ResponseWriter, r *http.Request, x interface{}) error { data, err := qp.encoder.Marshal(x) if err != nil { return err diff --git a/internal/sessions/queryparam/query_store_test.go b/internal/sessions/queryparam/query_store_test.go index 2777d9412..478acc51e 100644 --- a/internal/sessions/queryparam/query_store_test.go +++ b/internal/sessions/queryparam/query_store_test.go @@ -2,6 +2,7 @@ package queryparam import ( "errors" + "net/http" "net/http/httptest" "net/url" "testing" @@ -30,7 +31,7 @@ func TestNewQueryParamStore(t *testing.T) { t.Run(tt.name, func(t *testing.T) { got := NewStore(tt.enc, tt.qp) - r := httptest.NewRequest("GET", "/", nil) + r := httptest.NewRequest(http.MethodGet, "/", nil) w := httptest.NewRecorder() if err := got.SaveSession(w, r, tt.State); (err != nil) != tt.wantErr { diff --git a/internal/telemetry/grpc_test.go b/internal/telemetry/grpc_test.go index 740e9269e..038f58ada 100644 --- a/internal/telemetry/grpc_test.go +++ b/internal/telemetry/grpc_test.go @@ -18,7 +18,7 @@ type mockTagHandler struct { type mockCtxTag string -func (m *mockTagHandler) TagRPC(ctx context.Context, tagInfo *grpcstats.RPCTagInfo) context.Context { +func (m *mockTagHandler) TagRPC(ctx context.Context, _ *grpcstats.RPCTagInfo) context.Context { m.called = true return context.WithValue(ctx, mockCtxTag("added"), "true") } diff --git a/internal/telemetry/metrics/grpc_test.go b/internal/telemetry/metrics/grpc_test.go index 67aa1642f..87738e60a 100644 --- a/internal/telemetry/metrics/grpc_test.go +++ b/internal/telemetry/metrics/grpc_test.go @@ -19,7 +19,7 @@ type testInvoker struct { statsHandler stats.Handler } -func (t testInvoker) UnaryInvoke(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, opts ...grpc.CallOption) error { +func (t testInvoker) UnaryInvoke(ctx context.Context, method string, _, reply any, _ *grpc.ClientConn, _ ...grpc.CallOption) error { r := reply.(*wrapperspb.StringValue) r.Value = "hello" diff --git a/internal/telemetry/metrics/http.go b/internal/telemetry/metrics/http.go index ef106df7d..d89f40872 100644 --- a/internal/telemetry/metrics/http.go +++ b/internal/telemetry/metrics/http.go @@ -110,7 +110,7 @@ var ( ) // HTTPMetricsHandler creates a metrics middleware for incoming HTTP requests -func HTTPMetricsHandler(getInstallationID func() string, service string) func(next http.Handler) http.Handler { +func HTTPMetricsHandler(_ func() string, service string) func(next http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ctx, tagErr := tag.New( @@ -137,7 +137,7 @@ func HTTPMetricsHandler(getInstallationID func() string, service string) func(ne } // HTTPMetricsRoundTripper creates a metrics tracking tripper for outbound HTTP Requests -func HTTPMetricsRoundTripper(getInstallationID func() string, service string) func(next http.RoundTripper) http.RoundTripper { +func HTTPMetricsRoundTripper(_ func() string, service string) func(next http.RoundTripper) http.RoundTripper { return func(next http.RoundTripper) http.RoundTripper { return tripper.RoundTripperFunc(func(r *http.Request) (*http.Response, error) { ctx, tagErr := tag.New( diff --git a/internal/telemetry/metrics/http_test.go b/internal/telemetry/metrics/http_test.go index adc1ca5ec..99755e2c8 100644 --- a/internal/telemetry/metrics/http_test.go +++ b/internal/telemetry/metrics/http_test.go @@ -64,7 +64,7 @@ func Test_HTTPMetricsHandler(t *testing.T) { { name: "good get", url: "http://test.local/good", - verb: "GET", + verb: http.MethodGet, wanthttpServerRequestSize: "{ { {host test.local}{http_method GET}{service test_service} }&{1 0 5e-324 0 0 [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]", wanthttpServerResponseSize: "{ { {host test.local}{http.status 200}{http_method GET}{service test_service} }&{1 5 5 5 0 [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]", wanthttpServerRequestDuration: "{ { {host test.local}{http.status 200}{http_method GET}{service test_service} }", @@ -145,7 +145,7 @@ func Test_HTTPMetricsRoundTripper(t *testing.T) { { name: "good get", url: "http://test.local/good", - verb: "GET", + verb: http.MethodGet, wanthttpClientRequestSize: "{ { {host test.local}{http.status 200}{http_method GET}{service test_service} }&{1 5 5 5 0 [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]", wanthttpClientResponseSize: "{ { {host test.local}{http.status 200}{http_method GET}{service test_service} }&{1 5 5 5 0 [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]", wanthttpClientRequestDuration: "{ { {host test.local}{http.status 200}{http_method GET}{service test_service} }", @@ -190,7 +190,7 @@ func Test_HTTPMetricsRoundTripper(t *testing.T) { // Check for transport Errors client = http.Client{Transport: chain.Then(newFailingTestTransport())} - req, _ := http.NewRequest("GET", "http://test.local", new(bytes.Buffer)) + req, _ := http.NewRequest(http.MethodGet, "http://test.local", new(bytes.Buffer)) resp, err := client.Do(req) if err == nil || resp != nil { t.Error("Transport error not surfaced properly") diff --git a/internal/telemetry/metrics/info_test.go b/internal/telemetry/metrics/info_test.go index a76de7061..005904ec7 100644 --- a/internal/telemetry/metrics/info_test.go +++ b/internal/telemetry/metrics/info_test.go @@ -6,12 +6,12 @@ import ( "runtime" "testing" - "github.com/pomerium/pomerium/internal/version" - "github.com/pomerium/pomerium/pkg/metrics" - "go.opencensus.io/metric/metricdata" "go.opencensus.io/metric/metricproducer" "go.opencensus.io/stats/view" + + "github.com/pomerium/pomerium/internal/version" + "github.com/pomerium/pomerium/pkg/metrics" ) func Test_SetConfigInfo(t *testing.T) { diff --git a/internal/telemetry/metrics/processes_test.go b/internal/telemetry/metrics/processes_test.go index f2875de35..43c8b5c58 100644 --- a/internal/telemetry/metrics/processes_test.go +++ b/internal/telemetry/metrics/processes_test.go @@ -2,6 +2,7 @@ package metrics import ( "context" + "net/http" "net/http/httptest" "os" "runtime" @@ -40,7 +41,7 @@ func TestProcessCollector(t *testing.T) { "pomerium_example_process_virtual_memory_max_bytes", } assert.Eventually(t, func() bool { - req := httptest.NewRequest("GET", "http://test.local/metrics", nil) + req := httptest.NewRequest(http.MethodGet, "http://test.local/metrics", nil) rec := httptest.NewRecorder() exp.ServeHTTP(rec, req) str := rec.Body.String() diff --git a/internal/telemetry/metrics/providers.go b/internal/telemetry/metrics/providers.go index 1d4ea17e8..1878b6b7f 100644 --- a/internal/telemetry/metrics/providers.go +++ b/internal/telemetry/metrics/providers.go @@ -224,7 +224,7 @@ func scrapeEndpoint(endpoint ScrapeEndpoint, labels []*io_prometheus_client.Labe return func(ctx context.Context) promProducerResult { name := fmt.Sprintf("%s %s", endpoint.Name, endpoint.URL.String()) - req, err := http.NewRequestWithContext(ctx, "GET", endpoint.URL.String(), nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint.URL.String(), nil) if err != nil { return promProducerResult{name: name, err: fmt.Errorf("make request: %w", err)} } diff --git a/internal/telemetry/metrics/providers_test.go b/internal/telemetry/metrics/providers_test.go index be68547e6..aa795401c 100644 --- a/internal/telemetry/metrics/providers_test.go +++ b/internal/telemetry/metrics/providers_test.go @@ -33,7 +33,7 @@ func getMetrics(t *testing.T, envoyURL *url.URL) []byte { if err != nil { t.Fatal(err) } - req := httptest.NewRequest("GET", "http://test.local/metrics", nil) + req := httptest.NewRequest(http.MethodGet, "http://test.local/metrics", nil) rec := httptest.NewRecorder() h.ServeHTTP(rec, req) diff --git a/internal/tests/xdserr/cmd/main.go b/internal/tests/xdserr/cmd/main.go index ad40c7444..ed99af1dc 100644 --- a/internal/tests/xdserr/cmd/main.go +++ b/internal/tests/xdserr/cmd/main.go @@ -169,7 +169,7 @@ func saveAndLogConfig(ctx context.Context, client databroker.DataBrokerServiceCl return nil } -func waitHealthy(ctx context.Context, client *http.Client, routes []*config.Route) error { +func waitHealthy(ctx context.Context, _ *http.Client, routes []*config.Route) error { now := time.Now() if err := xdserr.WaitForHealthy(ctx, httpClient, routes); err != nil { return err @@ -184,12 +184,12 @@ func waitHealthy(ctx context.Context, client *http.Client, routes []*config.Rout } func saveConfig(ctx context.Context, client databroker.DataBrokerServiceClient, cfg *config.Config) error { - any := protoutil.NewAny(cfg) + data := protoutil.NewAny(cfg) r, err := client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: "test_config", - Data: any, + Data: data, }}, }) if err != nil { diff --git a/internal/tests/xdserr/config.go b/internal/tests/xdserr/config.go index 571f6ea49..f9b476666 100644 --- a/internal/tests/xdserr/config.go +++ b/internal/tests/xdserr/config.go @@ -43,20 +43,20 @@ func DumpConfig(ctx context.Context, adminURL string) (*adminv3.RoutesConfigDump return nil, err } - any, _ := anypb.New(&emptypb.Empty{}) - fmt.Println(protojson.Format(any)) + a, _ := anypb.New(&emptypb.Empty{}) + fmt.Println(protojson.Format(a)) opts := &protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: true, } for i, data := range cfg.Configs { - any := new(anypb.Any) - if err = opts.Unmarshal(data, any); err != nil { + a := new(anypb.Any) + if err = opts.Unmarshal(data, a); err != nil { log.Error(ctx).Err(err).Int("config", i). - //RawJSON("data", data). + // RawJSON("data", data). Msg("decode") } else { - log.Info(ctx).Msg(any.TypeUrl) + log.Info(ctx).Msg(a.TypeUrl) } } return nil, err diff --git a/internal/tests/xdserr/echo.go b/internal/tests/xdserr/echo.go index fcb3729ea..0d79deee8 100644 --- a/internal/tests/xdserr/echo.go +++ b/internal/tests/xdserr/echo.go @@ -9,7 +9,7 @@ import ( "golang.org/x/sync/errgroup" ) -func echo(w http.ResponseWriter, r *http.Request) { +func echo(w http.ResponseWriter, _ *http.Request) { fmt.Fprintf(w, "pong") } diff --git a/internal/testutil/testutil.go b/internal/testutil/testutil.go index 73f4b20a7..4e7c62eee 100644 --- a/internal/testutil/testutil.go +++ b/internal/testutil/testutil.go @@ -19,7 +19,7 @@ import ( func AssertProtoEqual(t *testing.T, expected, actual interface{}, msgAndArgs ...interface{}) bool { t.Helper() return assert.True(t, cmp.Equal(expected, actual, protocmp.Transform()), - cmp.Diff(expected, actual, protocmp.Transform())) + append(msgAndArgs, cmp.Diff(expected, actual, protocmp.Transform()))...) } // AssertProtoJSONEqual asserts that a protobuf message matches the given JSON. The protoMsg can also be a slice diff --git a/internal/tripper/chain_test.go b/internal/tripper/chain_test.go index 721e9442b..bb7942317 100644 --- a/internal/tripper/chain_test.go +++ b/internal/tripper/chain_test.go @@ -12,7 +12,7 @@ type mockTransport struct { id string } -func (t *mockTransport) RoundTrip(r *http.Request) (*http.Response, error) { +func (t *mockTransport) RoundTrip(_ *http.Request) (*http.Response, error) { w := httptest.NewRecorder() w.WriteString(t.id) @@ -46,7 +46,7 @@ func TestNew(t *testing.T) { chain := NewChain(m1, m2) resp, _ := chain.Then(t1). - RoundTrip(httptest.NewRequest("GET", "/", nil)) + RoundTrip(httptest.NewRequest(http.MethodGet, "/", nil)) if len(chain.constructors) != 2 { t.Errorf("Wrong number of constructors in chain") @@ -64,7 +64,7 @@ func TestThenNoMiddleware(t *testing.T) { want := "t" resp, _ := chain.Then(t1). - RoundTrip(httptest.NewRequest("GET", "/", nil)) + RoundTrip(httptest.NewRequest(http.MethodGet, "/", nil)) b, _ := io.ReadAll(resp.Body) if string(b) != want { @@ -89,7 +89,7 @@ func TestAppend(t *testing.T) { want := "t,c2,c1" resp, _ := chain.Then(t1). - RoundTrip(httptest.NewRequest("GET", "/", nil)) + RoundTrip(httptest.NewRequest(http.MethodGet, "/", nil)) if len(chain.constructors) != 2 { t.Errorf("Wrong number of constructors in chain") @@ -112,7 +112,7 @@ func TestAppendImmutability(t *testing.T) { } resp, _ := chain.Then(t1). - RoundTrip(httptest.NewRequest("GET", "/", nil)) + RoundTrip(httptest.NewRequest(http.MethodGet, "/", nil)) b, _ := io.ReadAll(resp.Body) if string(b) != want { diff --git a/internal/urlutil/known.go b/internal/urlutil/known.go index 30cea3539..e7833e098 100644 --- a/internal/urlutil/known.go +++ b/internal/urlutil/known.go @@ -131,7 +131,7 @@ const ( ) // WebAuthnURL returns the /.pomerium/webauthn URL. -func WebAuthnURL(r *http.Request, authenticateURL *url.URL, key []byte, values url.Values) string { +func WebAuthnURL(_ *http.Request, authenticateURL *url.URL, key []byte, values url.Values) string { u := authenticateURL.ResolveReference(&url.URL{ Path: WebAuthnURLPath, RawQuery: buildURLValues(values, url.Values{ diff --git a/internal/urlutil/known_test.go b/internal/urlutil/known_test.go index 0e5f9d574..5683e4738 100644 --- a/internal/urlutil/known_test.go +++ b/internal/urlutil/known_test.go @@ -41,7 +41,7 @@ func TestCallbackURL(t *testing.T) { func TestRedirectURI(t *testing.T) { t.Run("query", func(t *testing.T) { - r, err := http.NewRequest("GET", "https://www.example.com?"+(url.Values{ + r, err := http.NewRequest(http.MethodGet, "https://www.example.com?"+(url.Values{ QueryRedirectURI: {"https://www.example.com/redirect"}, }).Encode(), nil) require.NoError(t, err) @@ -51,7 +51,7 @@ func TestRedirectURI(t *testing.T) { assert.Equal(t, "https://www.example.com/redirect", redirectURI) }) t.Run("form", func(t *testing.T) { - r, err := http.NewRequest("POST", "https://www.example.com", strings.NewReader((url.Values{ + r, err := http.NewRequest(http.MethodPost, "https://www.example.com", strings.NewReader((url.Values{ QueryRedirectURI: {"https://www.example.com/redirect"}, }).Encode())) require.NoError(t, err) @@ -62,7 +62,7 @@ func TestRedirectURI(t *testing.T) { assert.Equal(t, "https://www.example.com/redirect", redirectURI) }) t.Run("cookie", func(t *testing.T) { - r, err := http.NewRequest("GET", "https://www.example.com", nil) + r, err := http.NewRequest(http.MethodGet, "https://www.example.com", nil) require.NoError(t, err) r.AddCookie(&http.Cookie{ Name: QueryRedirectURI, @@ -102,7 +102,7 @@ func TestSignInURL(t *testing.T) { func TestSignOutURL(t *testing.T) { t.Parallel() - r := httptest.NewRequest("GET", "https://route.example.com?"+(url.Values{ + r := httptest.NewRequest(http.MethodGet, "https://route.example.com?"+(url.Values{ QueryRedirectURI: {"https://www.example.com/redirect"}, }).Encode(), nil) authenticateURL := MustParseAndValidateURL("https://authenticate.example.com") diff --git a/internal/urlutil/url.go b/internal/urlutil/url.go index 32cb48db0..76c3704ec 100644 --- a/internal/urlutil/url.go +++ b/internal/urlutil/url.go @@ -145,11 +145,6 @@ func GetDomainsForURL(u *url.URL) []string { return []string{u.Hostname(), net.JoinHostPort(u.Hostname(), defaultPort)} } -// IsTCP returns whether or not the given URL is for TCP via HTTP Connect. -func IsTCP(u *url.URL) bool { - return u.Scheme == "tcp+http" || u.Scheme == "tcp+https" -} - // Join joins elements of a URL with '/'. func Join(elements ...string) string { var builder strings.Builder diff --git a/pkg/cryptutil/certificates.go b/pkg/cryptutil/certificates.go index af0c53407..426267249 100644 --- a/pkg/cryptutil/certificates.go +++ b/pkg/cryptutil/certificates.go @@ -128,10 +128,9 @@ func DecodePrivateKey(encodedKey []byte) (*ecdsa.PrivateKey, error) { if block.Type == "EC PRIVATE KEY" { break - } else { - skippedTypes = append(skippedTypes, block.Type) - continue } + + skippedTypes = append(skippedTypes, block.Type) } privKey, err := x509.ParseECPrivateKey(block.Bytes) diff --git a/pkg/cryptutil/x509.go b/pkg/cryptutil/x509.go index e1d8500b0..5381f54ef 100644 --- a/pkg/cryptutil/x509.go +++ b/pkg/cryptutil/x509.go @@ -42,7 +42,7 @@ func MarshalPKCS8PrivateKey(key interface{}) ([]byte, error) { } curvePrivateKey, err := asn1.Marshal(kek.KeyBytes()) if err != nil { - return nil, fmt.Errorf("cryptutil: failed to marshal private key: %v", err) + return nil, fmt.Errorf("cryptutil: failed to marshal private key: %w", err) } privKey.PrivateKey = curvePrivateKey return asn1.Marshal(privKey) @@ -86,7 +86,7 @@ func ParsePKCS8PrivateKey(der []byte) (interface{}, error) { if privKey.Algo.Algorithm.Equal(oidPublicKeyX25519) { var bs []byte if _, err := asn1.Unmarshal(privKey.PrivateKey, &bs); err != nil { - return nil, fmt.Errorf("cryptutil: invalid X25519 private key: %v", err) + return nil, fmt.Errorf("cryptutil: invalid X25519 private key: %w", err) } return NewPrivateKeyEncryptionKey(bs) } diff --git a/pkg/grpc/databroker/databroker.go b/pkg/grpc/databroker/databroker.go index f543bdef2..e47641f4a 100644 --- a/pkg/grpc/databroker/databroker.go +++ b/pkg/grpc/databroker/databroker.go @@ -4,6 +4,7 @@ package databroker import ( "context" "encoding/json" + "errors" "fmt" "io" @@ -111,7 +112,7 @@ loop: for { res, err := stream.Recv() switch { - case err == io.EOF: + case errors.Is(err, io.EOF): break loop case err != nil: return nil, 0, 0, fmt.Errorf("error receiving record: %w", err) diff --git a/pkg/grpc/databroker/fast_forward_test.go b/pkg/grpc/databroker/fast_forward_test.go index 626076fca..7ccf0465c 100644 --- a/pkg/grpc/databroker/fast_forward_test.go +++ b/pkg/grpc/databroker/fast_forward_test.go @@ -15,11 +15,11 @@ type mockFF struct { update chan uint64 } -func (ff *mockFF) ClearRecords(ctx context.Context) { +func (ff *mockFF) ClearRecords(_ context.Context) { ff.clear <- struct{}{} } -func (ff *mockFF) UpdateRecords(ctx context.Context, sv uint64, records []*Record) { +func (ff *mockFF) UpdateRecords(_ context.Context, sv uint64, _ []*Record) { time.Sleep(time.Millisecond * time.Duration(rand.Intn(5))) ff.update <- sv } diff --git a/pkg/grpc/databroker/leaser.go b/pkg/grpc/databroker/leaser.go index 223280d7c..0d4a4a62a 100644 --- a/pkg/grpc/databroker/leaser.go +++ b/pkg/grpc/databroker/leaser.go @@ -20,7 +20,7 @@ type retryableError struct { } func (err retryableError) Is(target error) bool { - if _, ok := target.(retryableError); ok { + if _, ok := target.(retryableError); ok { //nolint:errorlint return true } return false diff --git a/pkg/grpc/device/device.go b/pkg/grpc/device/device.go index 1f6e2c2d9..3a67eac71 100644 --- a/pkg/grpc/device/device.go +++ b/pkg/grpc/device/device.go @@ -27,12 +27,12 @@ func DeleteCredential( return nil, err } - any := protoutil.NewAny(credential) + data := protoutil.NewAny(credential) _, err = client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: credentialID, - Data: any, + Data: data, DeletedAt: timestamppb.Now(), }}, }) @@ -52,12 +52,12 @@ func DeleteEnrollment( return nil, err } - any := protoutil.NewAny(enrollment) + data := protoutil.NewAny(enrollment) _, err = client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: enrollmentID, - Data: any, + Data: data, DeletedAt: timestamppb.Now(), }}, }) @@ -70,10 +70,10 @@ func GetCredential( client databroker.DataBrokerServiceClient, credentialID string, ) (*Credential, error) { - any := protoutil.NewAny(new(Credential)) + data := protoutil.NewAny(new(Credential)) res, err := client.Get(ctx, &databroker.GetRequest{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: credentialID, }) if err != nil { @@ -95,10 +95,10 @@ func GetEnrollment( client databroker.DataBrokerServiceClient, enrollmentID string, ) (*Enrollment, error) { - any := protoutil.NewAny(new(Enrollment)) + data := protoutil.NewAny(new(Enrollment)) res, err := client.Get(ctx, &databroker.GetRequest{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: enrollmentID, }) if err != nil { @@ -120,10 +120,10 @@ func GetOwnerCredentialRecord( client databroker.DataBrokerServiceClient, credentialID []byte, ) (*OwnerCredentialRecord, error) { - any := protoutil.NewAny(new(OwnerCredentialRecord)) + data := protoutil.NewAny(new(OwnerCredentialRecord)) res, err := client.Get(ctx, &databroker.GetRequest{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: base58.Encode(credentialID), }) if err != nil { @@ -145,10 +145,10 @@ func GetType( client databroker.DataBrokerServiceClient, typeID string, ) (*Type, error) { - any := protoutil.NewAny(new(Type)) + data := protoutil.NewAny(new(Type)) res, err := client.Get(ctx, &databroker.GetRequest{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: typeID, }) if err != nil { @@ -172,12 +172,12 @@ func PutCredential( ) error { shrinkCredential(credential) - any := protoutil.NewAny(credential) + data := protoutil.NewAny(credential) _, err := client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: credential.GetId(), - Data: any, + Data: data, }}, }) return err @@ -189,12 +189,12 @@ func PutEnrollment( client databroker.DataBrokerServiceClient, enrollment *Enrollment, ) error { - any := protoutil.NewAny(enrollment) + data := protoutil.NewAny(enrollment) _, err := client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: enrollment.GetId(), - Data: any, + Data: data, }}, }) return err @@ -206,12 +206,12 @@ func PutOwnerCredentialRecord( client databroker.DataBrokerServiceClient, ownerCredentialRecord *OwnerCredentialRecord, ) error { - any := protoutil.NewAny(ownerCredentialRecord) + data := protoutil.NewAny(ownerCredentialRecord) _, err := client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: base58.Encode(ownerCredentialRecord.GetId()), - Data: any, + Data: data, }}, }) return err diff --git a/pkg/grpc/session/session.go b/pkg/grpc/session/session.go index 8dcb68e1c..adeab5f39 100644 --- a/pkg/grpc/session/session.go +++ b/pkg/grpc/session/session.go @@ -17,12 +17,12 @@ import ( // Delete deletes a session from the databroker. func Delete(ctx context.Context, client databroker.DataBrokerServiceClient, sessionID string) error { - any := protoutil.NewAny(new(Session)) + data := protoutil.NewAny(new(Session)) _, err := client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: sessionID, - Data: any, + Data: data, DeletedAt: timestamppb.Now(), }}, }) @@ -31,9 +31,9 @@ func Delete(ctx context.Context, client databroker.DataBrokerServiceClient, sess // Get gets a session from the databroker. func Get(ctx context.Context, client databroker.DataBrokerServiceClient, sessionID string) (*Session, error) { - any := protoutil.NewAny(new(Session)) + data := protoutil.NewAny(new(Session)) res, err := client.Get(ctx, &databroker.GetRequest{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: sessionID, }) if err != nil { @@ -51,12 +51,12 @@ func Get(ctx context.Context, client databroker.DataBrokerServiceClient, session // Put sets a session in the databroker. func Put(ctx context.Context, client databroker.DataBrokerServiceClient, s *Session) (*databroker.PutResponse, error) { s = proto.Clone(s).(*Session) - any := protoutil.NewAny(s) + data := protoutil.NewAny(s) res, err := client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ - Type: any.GetTypeUrl(), + Type: data.GetTypeUrl(), Id: s.Id, - Data: any, + Data: data, }}, }) return res, err diff --git a/pkg/hpke/handlers/hpke_public_key_test.go b/pkg/hpke/handlers/hpke_public_key_test.go index 2e0f8f2d6..00fac2cc4 100644 --- a/pkg/hpke/handlers/hpke_public_key_test.go +++ b/pkg/hpke/handlers/hpke_public_key_test.go @@ -20,7 +20,7 @@ func TestHPKEPublicKeyHandler(t *testing.T) { w := httptest.NewRecorder() r := httptest.NewRequest(http.MethodOptions, "/", nil) r.Header.Set("Origin", "https://www.example.com") - r.Header.Set("Access-Control-Request-Method", "GET") + r.Header.Set("Access-Control-Request-Method", http.MethodGet) handlers.HPKEPublicKeyHandler(k1.PublicKey()).ServeHTTP(w, r) assert.Equal(t, http.StatusNoContent, w.Result().StatusCode) }) diff --git a/pkg/policy/criteria/cors_preflight_test.go b/pkg/policy/criteria/cors_preflight_test.go index 1a4a78db4..bd2aff03d 100644 --- a/pkg/policy/criteria/cors_preflight_test.go +++ b/pkg/policy/criteria/cors_preflight_test.go @@ -1,6 +1,7 @@ package criteria import ( + "net/http" "testing" "github.com/stretchr/testify/require" @@ -15,7 +16,7 @@ allow: `, []dataBrokerRecord{}, Input{HTTP: InputHTTP{ Method: "OPTIONS", Headers: map[string][]string{ - "Access-Control-Request-Method": {"GET"}, + "Access-Control-Request-Method": {http.MethodGet}, "Origin": {"example.com"}, }, }}) diff --git a/pkg/policy/criteria/criteria_test.go b/pkg/policy/criteria/criteria_test.go index b5e1a27c6..d8b1c829c 100644 --- a/pkg/policy/criteria/criteria_test.go +++ b/pkg/policy/criteria/criteria_test.go @@ -20,8 +20,10 @@ import ( "github.com/pomerium/pomerium/pkg/protoutil" ) -type A = []interface{} -type M = map[string]interface{} +type ( + A = []interface{} + M = map[string]interface{} +) var testingNow = time.Date(2021, 5, 11, 13, 43, 0, 0, time.Local) @@ -98,8 +100,8 @@ func evaluate(t *testing.T, } for _, record := range dataBrokerRecords { - any := protoutil.NewAny(record) - if string(recordType) == any.GetTypeUrl() && + data := protoutil.NewAny(record) + if string(recordType) == data.GetTypeUrl() && string(recordID) == record.GetId() { bs, _ := json.Marshal(record) v, err := ast.ValueFromReader(bytes.NewReader(bs)) diff --git a/pkg/policy/criteria/http_method_test.go b/pkg/policy/criteria/http_method_test.go index c55415c25..9b52045e4 100644 --- a/pkg/policy/criteria/http_method_test.go +++ b/pkg/policy/criteria/http_method_test.go @@ -1,6 +1,7 @@ package criteria import ( + "net/http" "testing" "github.com/stretchr/testify/require" @@ -13,7 +14,7 @@ allow: and: - http_method: is: GET -`, []dataBrokerRecord{}, Input{HTTP: InputHTTP{Method: "GET"}}) +`, []dataBrokerRecord{}, Input{HTTP: InputHTTP{Method: http.MethodGet}}) require.NoError(t, err) require.Equal(t, A{true, A{ReasonHTTPMethodOK}, M{}}, res["allow"]) require.Equal(t, A{false, A{}}, res["deny"]) diff --git a/pkg/storage/encrypted_test.go b/pkg/storage/encrypted_test.go index fe6a7a579..6fb285a25 100644 --- a/pkg/storage/encrypted_test.go +++ b/pkg/storage/encrypted_test.go @@ -47,20 +47,20 @@ func TestEncryptedBackend(t *testing.T) { return } - any := protoutil.NewAny(wrapperspb.String("HELLO WORLD")) + data := protoutil.NewAny(wrapperspb.String("HELLO WORLD")) rec := &databroker.Record{ Type: "", Id: "TEST-1", - Data: any, + Data: data, } _, err = e.Put(ctx, []*databroker.Record{rec}) if !assert.NoError(t, err) { return } if assert.NotNil(t, m["TEST-1"], "key should be set") { - assert.NotEqual(t, any.TypeUrl, m["TEST-1"].TypeUrl, "encrypted data should be a bytes type") - assert.NotEqual(t, any.Value, m["TEST-1"].Value, "value should be encrypted") + assert.NotEqual(t, data.TypeUrl, m["TEST-1"].TypeUrl, "encrypted data should be a bytes type") + assert.NotEqual(t, data.Value, m["TEST-1"].Value, "value should be encrypted") assert.NotNil(t, rec.ModifiedAt) assert.NotZero(t, rec.Version) } @@ -69,7 +69,7 @@ func TestEncryptedBackend(t *testing.T) { if !assert.NoError(t, err) { return } - assert.Equal(t, any.TypeUrl, record.Data.TypeUrl, "type should be preserved") - assert.Equal(t, any.Value, record.Data.Value, "value should be preserved") - assert.NotEqual(t, any.TypeUrl, record.Type, "record type should be preserved") + assert.Equal(t, data.TypeUrl, record.Data.TypeUrl, "type should be preserved") + assert.Equal(t, data.Value, record.Data.Value, "value should be preserved") + assert.NotEqual(t, data.TypeUrl, record.Type, "record type should be preserved") } diff --git a/pkg/storage/index.go b/pkg/storage/index.go index b7c60ca2b..dc8dc57e4 100644 --- a/pkg/storage/index.go +++ b/pkg/storage/index.go @@ -16,11 +16,11 @@ const ( // GetRecordIndex gets a record's index. If there is no index, nil is returned. func GetRecordIndex(msg proto.Message) *structpb.Struct { for { - any, ok := msg.(*anypb.Any) + data, ok := msg.(*anypb.Any) if !ok { break } - msg, _ = any.UnmarshalNew() + msg, _ = data.UnmarshalNew() } var s *structpb.Struct diff --git a/pkg/storage/index_test.go b/pkg/storage/index_test.go index bace054a9..60c99dae2 100644 --- a/pkg/storage/index_test.go +++ b/pkg/storage/index_test.go @@ -52,11 +52,11 @@ func TestGetRecordIndex(t *testing.T) { }, }) require.NoError(t, err) - any := protoutil.NewAny(v) + data := protoutil.NewAny(v) assert.Equal(t, &structpb.Struct{ Fields: map[string]*structpb.Value{ "cidr": structpb.NewStringValue("192.168.0.0/16"), }, - }, GetRecordIndex(any)) + }, GetRecordIndex(data)) }) } diff --git a/pkg/storage/inmemory/backend.go b/pkg/storage/inmemory/backend.go index 5a4fd7a7f..42199bca7 100644 --- a/pkg/storage/inmemory/backend.go +++ b/pkg/storage/inmemory/backend.go @@ -189,7 +189,7 @@ func (backend *Backend) Lease(_ context.Context, leaseName, leaseID string, ttl } // ListTypes lists the record types. -func (backend *Backend) ListTypes(ctx context.Context) ([]string, error) { +func (backend *Backend) ListTypes(_ context.Context) ([]string, error) { backend.mu.Lock() keys := maps.Keys(backend.lookup) backend.mu.Unlock() diff --git a/pkg/storage/postgres/postgres.go b/pkg/storage/postgres/postgres.go index 6dcfdb868..36efb771d 100644 --- a/pkg/storage/postgres/postgres.go +++ b/pkg/storage/postgres/postgres.go @@ -124,9 +124,9 @@ func getNextChangedRecord(ctx context.Context, q querier, recordType string, aft return nil, fmt.Errorf("error querying next changed record: %w", err) } - any, err := protoutil.UnmarshalAnyJSON(data) + a, err := protoutil.UnmarshalAnyJSON(data) if isUnknownType(err) { - any = protoutil.ToAny(protoutil.ToStruct(map[string]string{ + a = protoutil.ToAny(protoutil.ToStruct(map[string]string{ "id": recordID, })) } else if err != nil { @@ -137,7 +137,7 @@ func getNextChangedRecord(ctx context.Context, q querier, recordType string, aft Version: version, Type: recordType, Id: recordID, - Data: any, + Data: a, ModifiedAt: timestamppbFromTimestamptz(modifiedAt), DeletedAt: timestamppbFromTimestamptz(deletedAt), }, nil @@ -175,7 +175,7 @@ func getRecord(ctx context.Context, q querier, recordType, recordID string) (*da return nil, fmt.Errorf("postgres: failed to execute query: %w", err) } - any, err := protoutil.UnmarshalAnyJSON(data) + a, err := protoutil.UnmarshalAnyJSON(data) if isUnknownType(err) { return nil, storage.ErrNotFound } else if err != nil { @@ -186,7 +186,7 @@ func getRecord(ctx context.Context, q querier, recordType, recordID string) (*da Version: version, Type: recordType, Id: recordID, - Data: any, + Data: a, ModifiedAt: timestamppbFromTimestamptz(modifiedAt), }, nil } @@ -226,9 +226,9 @@ func listRecords(ctx context.Context, q querier, expr storage.FilterExpression, return nil, fmt.Errorf("postgres: failed to scan row: %w", err) } - any, err := protoutil.UnmarshalAnyJSON(data) + a, err := protoutil.UnmarshalAnyJSON(data) if isUnknownType(err) { - any = protoutil.ToAny(protoutil.ToStruct(map[string]string{ + a = protoutil.ToAny(protoutil.ToStruct(map[string]string{ "id": id, })) } else if err != nil { @@ -239,7 +239,7 @@ func listRecords(ctx context.Context, q querier, expr storage.FilterExpression, Version: version, Type: recordType, Id: id, - Data: any, + Data: a, ModifiedAt: timestamppbFromTimestamptz(modifiedAt), }) } diff --git a/pkg/storage/postgres/registry_test.go b/pkg/storage/postgres/registry_test.go index 0f015d5e7..51cf9b7f3 100644 --- a/pkg/storage/postgres/registry_test.go +++ b/pkg/storage/postgres/registry_test.go @@ -115,7 +115,7 @@ func TestRegistry(t *testing.T) { } func TestUnmarshalJSONUnknownFields(t *testing.T) { - any, err := protoutil.UnmarshalAnyJSON([]byte(` + data, err := protoutil.UnmarshalAnyJSON([]byte(` { "@type": "type.googleapis.com/registry.Service", "kind": "AUTHENTICATE", @@ -125,7 +125,7 @@ func TestUnmarshalJSONUnknownFields(t *testing.T) { `)) require.NoError(t, err) var val registry.Service - require.NoError(t, any.UnmarshalTo(&val)) + require.NoError(t, data.UnmarshalTo(&val)) assert.Equal(t, registry.ServiceKind_AUTHENTICATE, val.Kind) assert.Equal(t, "endpoint", val.Endpoint) } diff --git a/pkg/storage/postgres/stream.go b/pkg/storage/postgres/stream.go index 2b859ae30..0c63ae99d 100644 --- a/pkg/storage/postgres/stream.go +++ b/pkg/storage/postgres/stream.go @@ -42,7 +42,7 @@ func (stream *recordStream) Close() error { return nil } -func (stream *recordStream) Next(block bool) bool { +func (stream *recordStream) Next(_ bool) bool { if stream.err != nil { return false } diff --git a/pkg/storage/querier.go b/pkg/storage/querier.go index 7a9736d16..8e05c44f8 100644 --- a/pkg/storage/querier.go +++ b/pkg/storage/querier.go @@ -27,9 +27,9 @@ type Querier interface { // nilQuerier always returns NotFound. type nilQuerier struct{} -func (nilQuerier) InvalidateCache(ctx context.Context, in *databroker.QueryRequest) {} +func (nilQuerier) InvalidateCache(_ context.Context, _ *databroker.QueryRequest) {} -func (nilQuerier) Query(ctx context.Context, in *databroker.QueryRequest, opts ...grpc.CallOption) (*databroker.QueryResponse, error) { +func (nilQuerier) Query(_ context.Context, _ *databroker.QueryRequest, _ ...grpc.CallOption) (*databroker.QueryResponse, error) { return nil, status.Error(codes.NotFound, "not found") } @@ -57,13 +57,13 @@ type staticQuerier struct { func NewStaticQuerier(msgs ...proto.Message) Querier { getter := &staticQuerier{} for _, msg := range msgs { - any := protoutil.NewAny(msg) + data := protoutil.NewAny(msg) record := new(databroker.Record) record.ModifiedAt = timestamppb.Now() record.Version = cryptutil.NewRandomUInt64() record.Id = uuid.New().String() - record.Data = any - record.Type = any.TypeUrl + record.Data = data + record.Type = data.TypeUrl if hasID, ok := msg.(interface{ GetId() string }); ok { record.Id = hasID.GetId() } @@ -77,10 +77,10 @@ func NewStaticQuerier(msgs ...proto.Message) Querier { return getter } -func (q *staticQuerier) InvalidateCache(ctx context.Context, in *databroker.QueryRequest) {} +func (q *staticQuerier) InvalidateCache(_ context.Context, _ *databroker.QueryRequest) {} // Query queries for records. -func (q *staticQuerier) Query(ctx context.Context, in *databroker.QueryRequest, opts ...grpc.CallOption) (*databroker.QueryResponse, error) { +func (q *staticQuerier) Query(_ context.Context, in *databroker.QueryRequest, _ ...grpc.CallOption) (*databroker.QueryResponse, error) { expr, err := FilterExpressionFromStruct(in.GetFilter()) if err != nil { return nil, err @@ -127,7 +127,7 @@ func NewQuerier(client databroker.DataBrokerServiceClient) Querier { return &clientQuerier{client: client} } -func (q *clientQuerier) InvalidateCache(ctx context.Context, in *databroker.QueryRequest) {} +func (q *clientQuerier) InvalidateCache(_ context.Context, _ *databroker.QueryRequest) {} // Query queries for records. func (q *clientQuerier) Query(ctx context.Context, in *databroker.QueryRequest, opts ...grpc.CallOption) (*databroker.QueryResponse, error) { diff --git a/pkg/storage/redis/redis.go b/pkg/storage/redis/redis.go index f45084274..2a4554b67 100644 --- a/pkg/storage/redis/redis.go +++ b/pkg/storage/redis/redis.go @@ -123,7 +123,7 @@ func (backend *Backend) Get(ctx context.Context, recordType, id string) (_ *data key, field := getHashKey(recordType, id) cmd := backend.client.HGet(ctx, key, field) raw, err := cmd.Result() - if err == redis.Nil { + if errors.Is(err, redis.Nil) { return nil, storage.ErrNotFound } else if err != nil { return nil, err @@ -141,7 +141,7 @@ func (backend *Backend) Get(ctx context.Context, recordType, id string) (_ *data // GetOptions gets the options for the given record type. func (backend *Backend) GetOptions(ctx context.Context, recordType string) (*databroker.Options, error) { raw, err := backend.client.HGet(ctx, optionsKey, recordType).Result() - if err == redis.Nil { + if errors.Is(err, redis.Nil) { // treat no options as an empty set of options return new(databroker.Options), nil } else if err != nil { diff --git a/pkg/webauthnutil/device_type_test.go b/pkg/webauthnutil/device_type_test.go index 0031fe51f..5ba0a1662 100644 --- a/pkg/webauthnutil/device_type_test.go +++ b/pkg/webauthnutil/device_type_test.go @@ -22,7 +22,7 @@ func TestGetDeviceType(t *testing.T) { get: func(ctx context.Context, in *databroker.GetRequest, opts ...grpc.CallOption) (*databroker.GetResponse, error) { assert.Equal(t, "type.googleapis.com/pomerium.device.Type", in.GetType()) assert.Equal(t, "any", in.GetId()) - any, _ := anypb.New(&device.Type{ + data, _ := anypb.New(&device.Type{ Id: "any", Name: "Example", }) @@ -30,7 +30,7 @@ func TestGetDeviceType(t *testing.T) { Record: &databroker.Record{ Type: in.GetType(), Id: in.GetId(), - Data: any, + Data: data, }, }, nil }, diff --git a/pkg/webauthnutil/options.go b/pkg/webauthnutil/options.go index 689d64d0f..8d807fcae 100644 --- a/pkg/webauthnutil/options.go +++ b/pkg/webauthnutil/options.go @@ -6,13 +6,12 @@ import ( "net/http" "time" - "github.com/pomerium/webauthn" - "github.com/pomerium/webauthn/cose" - "github.com/pomerium/pomerium/pkg/cryptutil" "github.com/pomerium/pomerium/pkg/grpc/device" "github.com/pomerium/pomerium/pkg/grpc/user" "github.com/pomerium/pomerium/pkg/slices" + "github.com/pomerium/webauthn" + "github.com/pomerium/webauthn/cose" ) const ( diff --git a/proxy/handlers_test.go b/proxy/handlers_test.go index 487eb41da..0205b9d3b 100644 --- a/proxy/handlers_test.go +++ b/proxy/handlers_test.go @@ -7,13 +7,13 @@ import ( "net/url" "testing" + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/assert" + "github.com/pomerium/pomerium/config" "github.com/pomerium/pomerium/internal/atomicutil" "github.com/pomerium/pomerium/internal/httputil" "github.com/pomerium/pomerium/internal/urlutil" - - "github.com/google/go-cmp/cmp" - "github.com/stretchr/testify/assert" ) func TestProxy_RobotsTxt(t *testing.T) { @@ -174,7 +174,7 @@ func TestProxy_ProgrammaticLogin(t *testing.T) { func TestProxy_jwt(t *testing.T) { // without upstream headers being set - req, _ := http.NewRequest("GET", "https://www.example.com/.pomerium/jwt", nil) + req, _ := http.NewRequest(http.MethodGet, "https://www.example.com/.pomerium/jwt", nil) w := httptest.NewRecorder() proxy := &Proxy{ @@ -187,7 +187,7 @@ func TestProxy_jwt(t *testing.T) { // with upstream request headers being set rawJWT := "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTY3MDg4OTI0MSwiZXhwIjoxNjcwODkyODQxfQ.YoROB12_-a8VxikPqrYOA576pLYoLFeGwXAOWCGpXgM" - req, _ = http.NewRequest("GET", "https://www.example.com/.pomerium/jwt", nil) + req, _ = http.NewRequest(http.MethodGet, "https://www.example.com/.pomerium/jwt", nil) w = httptest.NewRecorder() req.Header.Set(httputil.HeaderPomeriumJWTAssertion, rawJWT) err = proxy.jwtAssertion(w, req) diff --git a/proxy/identity_profile.go b/proxy/identity_profile.go index 1bdb37eca..cdc55d134 100644 --- a/proxy/identity_profile.go +++ b/proxy/identity_profile.go @@ -62,7 +62,7 @@ func populateSessionFromProfile(s *session.Session, p *identitypb.Profile, ss *s } } -func populateUserFromProfile(u *user.User, p *identitypb.Profile, ss *sessions.State) { +func populateUserFromProfile(u *user.User, p *identitypb.Profile, _ *sessions.State) { claims := p.GetClaims().AsMap() if v, ok := claims["name"]; ok { u.Name = fmt.Sprint(v) diff --git a/proxy/proxy.go b/proxy/proxy.go index 2cc2b557f..80f410ee0 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -86,7 +86,7 @@ func (p *Proxy) Mount(r *mux.Router) { } // OnConfigChange updates internal structures based on config.Options -func (p *Proxy) OnConfigChange(ctx context.Context, cfg *config.Config) { +func (p *Proxy) OnConfigChange(_ context.Context, cfg *config.Config) { if p == nil { return } diff --git a/proxy/proxy_test.go b/proxy/proxy_test.go index cc0738bf0..24bc4ad16 100644 --- a/proxy/proxy_test.go +++ b/proxy/proxy_test.go @@ -8,10 +8,10 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + "github.com/pomerium/pomerium/config" hpke_handlers "github.com/pomerium/pomerium/pkg/hpke/handlers" - - "github.com/stretchr/testify/require" ) func testOptions(t *testing.T) *config.Options { @@ -204,7 +204,7 @@ func Test_UpdateOptions(t *testing.T) { } p.OnConfigChange(context.Background(), &config.Config{Options: tt.updatedOptions}) - r := httptest.NewRequest("GET", tt.host, nil) + r := httptest.NewRequest(http.MethodGet, tt.host, nil) w := httptest.NewRecorder() p.ServeHTTP(w, r) if tt.wantRoute && w.Code != http.StatusNotFound { diff --git a/tools.go b/tools.go index 5cef69217..de59acd09 100644 --- a/tools.go +++ b/tools.go @@ -8,5 +8,4 @@ import ( _ "github.com/envoyproxy/protoc-gen-validate" _ "github.com/golang/mock/mockgen" _ "github.com/golang/protobuf/protoc-gen-go" - _ "github.com/golangci/golangci-lint/cmd/golangci-lint" )