diff --git a/go.mod b/go.mod index fc2a4e8005ff..17d7eea41803 100644 --- a/go.mod +++ b/go.mod @@ -79,7 +79,7 @@ require ( github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e github.com/opentracing-contrib/go-stdlib v1.0.0 github.com/opentracing/opentracing-go v1.2.0 - github.com/oschwald/geoip2-golang v1.9.0 + github.com/oschwald/geoip2-golang v1.11.0 // github.com/pierrec/lz4 v2.0.5+incompatible github.com/pierrec/lz4/v4 v4.1.18 github.com/pkg/errors v0.9.1 @@ -312,7 +312,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect - github.com/oschwald/maxminddb-golang v1.11.0 // indirect + github.com/oschwald/maxminddb-golang v1.13.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/exporter-toolkit v0.11.0 // indirect diff --git a/go.sum b/go.sum index 3e4a97d15469..64e69c290548 100644 --- a/go.sum +++ b/go.sum @@ -1555,10 +1555,10 @@ github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukw github.com/oracle/oci-go-sdk/v65 v65.41.1 h1:+lbosOyNiib3TGJDvLq1HwEAuFqkOjPJDIkyxM15WdQ= github.com/oracle/oci-go-sdk/v65 v65.41.1/go.mod h1:MXMLMzHnnd9wlpgadPkdlkZ9YrwQmCOmbX5kjVEJodw= github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= -github.com/oschwald/geoip2-golang v1.9.0 h1:uvD3O6fXAXs+usU+UGExshpdP13GAqp4GBrzN7IgKZc= -github.com/oschwald/geoip2-golang v1.9.0/go.mod h1:BHK6TvDyATVQhKNbQBdrj9eAvuwOMi2zSFXizL3K81Y= -github.com/oschwald/maxminddb-golang v1.11.0 h1:aSXMqYR/EPNjGE8epgqwDay+P30hCBZIveY0WZbAWh0= -github.com/oschwald/maxminddb-golang v1.11.0/go.mod h1:YmVI+H0zh3ySFR3w+oz8PCfglAFj3PuCmui13+P9zDg= +github.com/oschwald/geoip2-golang v1.11.0 h1:hNENhCn1Uyzhf9PTmquXENiWS6AlxAEnBII6r8krA3w= +github.com/oschwald/geoip2-golang v1.11.0/go.mod h1:P9zG+54KPEFOliZ29i7SeYZ/GM6tfEL+rgSn03hYuUo= +github.com/oschwald/maxminddb-golang v1.13.0 h1:R8xBorY71s84yO06NgTmQvqvTvlS/bnYZrrWX1MElnU= +github.com/oschwald/maxminddb-golang v1.13.0/go.mod h1:BU0z8BfFVhi1LQaonTwwGQlsHUEu9pWNdMfmq4ztm0o= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI= github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= diff --git a/vendor/github.com/oschwald/geoip2-golang/.golangci.toml b/vendor/github.com/oschwald/geoip2-golang/.golangci.toml index 0950c1c5437f..799416c53a9f 100644 --- a/vendor/github.com/oschwald/geoip2-golang/.golangci.toml +++ b/vendor/github.com/oschwald/geoip2-golang/.golangci.toml @@ -1,452 +1,192 @@ [run] - deadline = "10m" - tests = true +# This is needed for precious, which may run multiple instances +# in parallel +allow-parallel-runners = true +go = "1.21" +tests = true +timeout = "10m" [linters] - disable-all = true - enable = [ - "asasalint", - "asciicheck", - "bidichk", - "bodyclose", - "containedctx", - "contextcheck", +enable-all = true +disable = [ + "cyclop", "depguard", - "dupword", - "durationcheck", - "errcheck", - "errchkjson", - "errname", - "errorlint", - # "exhaustive", - "exportloopref", - "forbidigo", - "goconst", - "gocyclo", - "gocritic", - "godot", - "gofumpt", - "gomodguard", - "gosec", - "gosimple", - "govet", - "grouper", - "ineffassign", - "lll", - "makezero", - "maintidx", - "misspell", - "nakedret", - "nilerr", - "noctx", - "nolintlint", - "nosprintfhostport", - "predeclared", - "revive", - "rowserrcheck", - "sqlclosecheck", - "staticcheck", - "stylecheck", - "tenv", - "tparallel", - "typecheck", - "unconvert", - "unparam", - "unused", - "usestdlibvars", - "vetshadow", - "wastedassign", - ] - -[[linters-settings.depguard.rules.main.deny]] -pkg = "io/ioutil" -desc = "Deprecated. Functions have been moved elsewhere." - -[linters-settings.errcheck] - check-blank = true - # Ignoring Close so that we don't have to have a bunch of - # `defer func() { _ = r.Close() }()` constructs when we - # don't actually care about the error. - ignore = "Close,fmt:.*" + "err113", + "execinquery", + "exhaustive", + "exhaustruct", + "forcetypeassert", + "funlen", + "gochecknoglobals", + "godox", + "gomnd", + "inamedparam", + "interfacebloat", + "mnd", + "nlreturn", + "nonamedreturns", + "paralleltest", + "thelper", + "testpackage", + + "varnamelen", + "wrapcheck", + "wsl", + + # Require Go 1.22 + "copyloopvar", + "intrange", +] [linters-settings.errorlint] - errorf = true - asserts = true - comparison = true +errorf = true +asserts = true +comparison = true [linters-settings.exhaustive] - default-signifies-exhaustive = true +default-signifies-exhaustive = true [linters-settings.forbidigo] - # Forbid the following identifiers - forbid = [ - "Geoip", # use "GeoIP" - "^geoIP", # use "geoip" - "Maxmind", # use "MaxMind" - "^maxMind", # use "maxmind" - ] - -[linters-settings.gocritic] - enabled-checks = [ - "appendAssign", - "appendCombine", - "argOrder", - "assignOp", - "badCall", - "badCond", - "badLock", - "badRegexp", - "badSorting", - "boolExprSimplify", - "builtinShadow", - "builtinShadowDecl", - "captLocal", - "caseOrder", - "codegenComment", - "commentedOutCode", - "commentedOutImport", - "commentFormatting", - "defaultCaseOrder", - "deferInLoop", - "deferUnlambda", - "deprecatedComment", - "docStub", - "dupArg", - "dupBranchBody", - "dupCase", - "dupImport", - "dupSubExpr", - "dynamicFmtString", - "elseif", - "emptyDecl", - "emptyFallthrough", - "emptyStringTest", - "equalFold", - "evalOrder", - "exitAfterDefer", - "exposedSyncMutex", - "externalErrorReassign", - "filepathJoin", - "flagDeref", - "flagName", - "hexLiteral", - "httpNoBody", - "hugeParam", - "ifElseChain", - "importShadow", - "indexAlloc", - "initClause", - "mapKey", - "methodExprCall", - "nestingReduce", - "newDeref", - "nilValReturn", - "octalLiteral", - "offBy1", - "paramTypeCombine", - "preferDecodeRune", - "preferFilepathJoin", - "preferFprint", - "preferStringWriter", - "preferWriteByte", - "ptrToRefParam", - "rangeExprCopy", - "rangeValCopy", - "redundantSprint", - "regexpMust", - "regexpPattern", - "regexpSimplify", - "returnAfterHttpError", - "ruleguard", - "singleCaseSwitch", - "sliceClear", - "sloppyLen", - "sloppyReassign", - "sloppyTestFuncName", - "sloppyTypeAssert", - "sortSlice", - "sprintfQuotedString", - "sqlQuery", - "stringsCompare", - "stringConcatSimplify", - "stringXbytes", - "switchTrue", - "syncMapLoadAndDelete", - "timeExprSimplify", - "todoCommentWithoutDetail", - "tooManyResultsChecker", - "truncateCmp", - "typeAssertChain", - "typeDefFirst", - "typeSwitchVar", - "typeUnparen", - "underef", - "unlabelStmt", - "unlambda", - # "unnamedResult", - "unnecessaryBlock", - "unnecessaryDefer", - "unslice", - "valSwap", - "weakCond", - # Covered by nolintlint - # "whyNoLint" - "wrapperFunc", - "yodaStyleExpr", - ] +# Forbid the following identifiers +forbid = [ + { p = "Geoip", msg = "you should use `GeoIP`" }, + { p = "geoIP", msg = "you should use `geoip`" }, + { p = "Maxmind", msg = "you should use `MaxMind`" }, + { p = "^maxMind", msg = "you should use `maxmind`" }, + { p = "Minfraud", msg = "you should use `MinFraud`" }, + { p = "^minFraud", msg = "you should use `minfraud`" }, + { p = "^math.Max$", msg = "you should use the max built-in instead." }, + { p = "^math.Min$", msg = "you should use the min built-in instead." }, + { p = "^os.IsNotExist", msg = "As per their docs, new code should use errors.Is(err, fs.ErrNotExist)." }, + { p = "^os.IsExist", msg = "As per their docs, new code should use errors.Is(err, fs.ErrExist)" }, +] + +[linters-settings.gci] +sections = ["standard", "default", "prefix(github.com/oschwald/maxminddb-golang)"] [linters-settings.gofumpt] - extra-rules = true - lang-version = "1.19" - -[linters-settings.gosec] - excludes = [ - # G104 - "Audit errors not checked." We use errcheck for this. - "G104", - - # G304 - "Potential file inclusion via variable" - "G304", - - # G306 - "Expect WriteFile permissions to be 0600 or less". - "G306", - - # Prohibits defer (*os.File).Close, which we allow when reading from file. - "G307", - ] +extra-rules = true [linters-settings.govet] - "enable-all" = true - disable = ["shadow"] +enable-all = true +disable = "shadow" [linters-settings.lll] - line-length = 120 - tab-width = 4 - -[linters-settings.nolintlint] - allow-leading-space = false - allow-unused = false - allow-no-explanation = ["lll", "misspell"] - require-explanation = true - require-specific = true - -[linters-settings.revive] - ignore-generated-header = true - severity = "warning" - - # [[linters-settings.revive.rules]] - # name = "add-constant" - - # [[linters-settings.revive.rules]] - # name = "argument-limit" - - [[linters-settings.revive.rules]] - name = "atomic" - - [[linters-settings.revive.rules]] - name = "bare-return" - - [[linters-settings.revive.rules]] - name = "blank-imports" - - [[linters-settings.revive.rules]] - name = "bool-literal-in-expr" - - [[linters-settings.revive.rules]] - name = "call-to-gc" - - # [[linters-settings.revive.rules]] - # name = "cognitive-complexity" - - [[linters-settings.revive.rules]] - name = "comment-spacings" - arguments = ["easyjson", "nolint"] - - # [[linters-settings.revive.rules]] - # name = "confusing-naming" - - # [[linters-settings.revive.rules]] - # name = "confusing-results" - - [[linters-settings.revive.rules]] - name = "constant-logical-expr" - - [[linters-settings.revive.rules]] - name = "context-as-argument" - - [[linters-settings.revive.rules]] - name = "context-keys-type" - - # [[linters-settings.revive.rules]] - # name = "cyclomatic" - - [[linters-settings.revive.rules]] - name = "datarace" - - # [[linters-settings.revive.rules]] - # name = "deep-exit" - - [[linters-settings.revive.rules]] - name = "defer" - - [[linters-settings.revive.rules]] - name = "dot-imports" - - [[linters-settings.revive.rules]] - name = "duplicated-imports" - - [[linters-settings.revive.rules]] - name = "early-return" - - [[linters-settings.revive.rules]] - name = "empty-block" - - [[linters-settings.revive.rules]] - name = "empty-lines" - - [[linters-settings.revive.rules]] - name = "errorf" - - [[linters-settings.revive.rules]] - name = "error-naming" - - [[linters-settings.revive.rules]] - name = "error-return" - - [[linters-settings.revive.rules]] - name = "error-strings" +line-length = 120 +tab-width = 4 - [[linters-settings.revive.rules]] - name = "exported" +[linters-settings.misspell] +locale = "US" - # [[linters-settings.revive.rules]] - # name = "file-header" +[[linters-settings.misspell.extra-words]] +typo = "marshall" +correction = "marshal" - # [[linters-settings.revive.rules]] - # name = "flag-parameter" +[[linters-settings.misspell.extra-words]] +typo = "marshalling" +correction = "marshaling" - # [[linters-settings.revive.rules]] - # name = "function-result-limit" +[[linters-settings.misspell.extra-words]] +typo = "marshalls" +correction = "marshals" - [[linters-settings.revive.rules]] - name = "get-return" +[[linters-settings.misspell.extra-words]] +typo = "unmarshall" +correction = "unmarshal" - [[linters-settings.revive.rules]] - name = "identical-branches" +[[linters-settings.misspell.extra-words]] +typo = "unmarshalling" +correction = "unmarshaling" - [[linters-settings.revive.rules]] - name = "if-return" +[[linters-settings.misspell.extra-words]] +typo = "unmarshalls" +correction = "unmarshals" - [[linters-settings.revive.rules]] - name = "imports-blacklist" - - [[linters-settings.revive.rules]] - name = "import-shadowing" - - [[linters-settings.revive.rules]] - name = "increment-decrement" - - [[linters-settings.revive.rules]] - name = "indent-error-flow" - - # [[linters-settings.revive.rules]] - # name = "line-length-limit" - - # [[linters-settings.revive.rules]] - # name = "max-public-structs" - - [[linters-settings.revive.rules]] - name = "modifies-parameter" - - [[linters-settings.revive.rules]] - name = "modifies-value-receiver" - - # [[linters-settings.revive.rules]] - # name = "nested-structs" - - [[linters-settings.revive.rules]] - name = "optimize-operands-order" - - [[linters-settings.revive.rules]] - name = "package-comments" - - [[linters-settings.revive.rules]] - name = "range" - - [[linters-settings.revive.rules]] - name = "range-val-address" - - [[linters-settings.revive.rules]] - name = "range-val-in-closure" - - [[linters-settings.revive.rules]] - name = "receiver-naming" - - [[linters-settings.revive.rules]] - name = "redefines-builtin-id" - - [[linters-settings.revive.rules]] - name = "string-of-int" - - [[linters-settings.revive.rules]] - name = "struct-tag" - - [[linters-settings.revive.rules]] - name = "superfluous-else" - - [[linters-settings.revive.rules]] - name = "time-equal" - - [[linters-settings.revive.rules]] - name = "time-naming" - - [[linters-settings.revive.rules]] - name = "unconditional-recursion" - - [[linters-settings.revive.rules]] - name = "unexported-naming" - - [[linters-settings.revive.rules]] - name = "unexported-return" - - # [[linters-settings.revive.rules]] - # name = "unhandled-error" - - [[linters-settings.revive.rules]] - name = "unnecessary-stmt" - - [[linters-settings.revive.rules]] - name = "unreachable-code" - - [[linters-settings.revive.rules]] - name = "unused-parameter" - - [[linters-settings.revive.rules]] - name = "unused-receiver" - - [[linters-settings.revive.rules]] - name = "use-any" - - [[linters-settings.revive.rules]] - name = "useless-break" - - [[linters-settings.revive.rules]] - name = "var-declaration" - - [[linters-settings.revive.rules]] - name = "var-naming" +[linters-settings.nolintlint] +allow-unused = false +allow-no-explanation = ["lll", "misspell"] +require-explanation = true +require-specific = true - [[linters-settings.revive.rules]] - name = "waitgroup-by-value" +[linters-settings.revive] +enable-all-rules = true +ignore-generated-header = true +severity = "warning" + +[[linters-settings.revive.rules]] +name = "add-constant" +disabled = true + +[[linters-settings.revive.rules]] +name = "cognitive-complexity" +disabled = true + +[[linters-settings.revive.rules]] +name = "confusing-naming" +disabled = true + +[[linters-settings.revive.rules]] +name = "confusing-results" +disabled = true + +[[linters-settings.revive.rules]] +name = "cyclomatic" +disabled = true + +[[linters-settings.revive.rules]] +name = "deep-exit" +disabled = true + +[[linters-settings.revive.rules]] +name = "flag-parameter" +disabled = true + +[[linters-settings.revive.rules]] +name = "function-length" +disabled = true + +[[linters-settings.revive.rules]] +name = "function-result-limit" +disabled = true + +[[linters-settings.revive.rules]] +name = "line-length-limit" +disabled = true + +[[linters-settings.revive.rules]] +name = "max-public-structs" +disabled = true + +[[linters-settings.revive.rules]] +name = "nested-structs" +disabled = true + +[[linters-settings.revive.rules]] +name = "unchecked-type-assertion" +disabled = true + +[[linters-settings.revive.rules]] +name = "unhandled-error" +disabled = true + +[linters-settings.tagliatelle.case.rules] +avro = "snake" +bson = "snake" +env = "upperSnake" +envconfig = "upperSnake" +json = "snake" +mapstructure = "snake" +xml = "snake" +yaml = "snake" [linters-settings.unparam] - check-exported = true +check-exported = true -[issues] -exclude-use-default = false [[issues.exclude-rules]] - linters = [ - "govet" - ] - path = "_test.go" - text = "^fieldalignment" +linters = [ + "govet", + "revive", +] +path = "_test.go" +text = "fieldalignment:" diff --git a/vendor/github.com/oschwald/geoip2-golang/reader.go b/vendor/github.com/oschwald/geoip2-golang/reader.go index 70980b240ad9..7e9e0a64286d 100644 --- a/vendor/github.com/oschwald/geoip2-golang/reader.go +++ b/vendor/github.com/oschwald/geoip2-golang/reader.go @@ -70,6 +70,7 @@ type Enterprise struct { AutonomousSystemNumber uint `maxminddb:"autonomous_system_number"` StaticIPScore float64 `maxminddb:"static_ip_score"` IsAnonymousProxy bool `maxminddb:"is_anonymous_proxy"` + IsAnycast bool `maxminddb:"is_anycast"` IsLegitimateProxy bool `maxminddb:"is_legitimate_proxy"` IsSatelliteProvider bool `maxminddb:"is_satellite_provider"` } `maxminddb:"traits"` @@ -130,6 +131,7 @@ type City struct { } `maxminddb:"location"` Traits struct { IsAnonymousProxy bool `maxminddb:"is_anonymous_proxy"` + IsAnycast bool `maxminddb:"is_anycast"` IsSatelliteProvider bool `maxminddb:"is_satellite_provider"` } `maxminddb:"traits"` } @@ -163,6 +165,7 @@ type Country struct { } `maxminddb:"represented_country"` Traits struct { IsAnonymousProxy bool `maxminddb:"is_anonymous_proxy"` + IsAnycast bool `maxminddb:"is_anycast"` IsSatelliteProvider bool `maxminddb:"is_satellite_provider"` } `maxminddb:"traits"` } diff --git a/vendor/github.com/oschwald/maxminddb-golang/.golangci.toml b/vendor/github.com/oschwald/maxminddb-golang/.golangci.toml index 0950c1c5437f..799416c53a9f 100644 --- a/vendor/github.com/oschwald/maxminddb-golang/.golangci.toml +++ b/vendor/github.com/oschwald/maxminddb-golang/.golangci.toml @@ -1,452 +1,192 @@ [run] - deadline = "10m" - tests = true +# This is needed for precious, which may run multiple instances +# in parallel +allow-parallel-runners = true +go = "1.21" +tests = true +timeout = "10m" [linters] - disable-all = true - enable = [ - "asasalint", - "asciicheck", - "bidichk", - "bodyclose", - "containedctx", - "contextcheck", +enable-all = true +disable = [ + "cyclop", "depguard", - "dupword", - "durationcheck", - "errcheck", - "errchkjson", - "errname", - "errorlint", - # "exhaustive", - "exportloopref", - "forbidigo", - "goconst", - "gocyclo", - "gocritic", - "godot", - "gofumpt", - "gomodguard", - "gosec", - "gosimple", - "govet", - "grouper", - "ineffassign", - "lll", - "makezero", - "maintidx", - "misspell", - "nakedret", - "nilerr", - "noctx", - "nolintlint", - "nosprintfhostport", - "predeclared", - "revive", - "rowserrcheck", - "sqlclosecheck", - "staticcheck", - "stylecheck", - "tenv", - "tparallel", - "typecheck", - "unconvert", - "unparam", - "unused", - "usestdlibvars", - "vetshadow", - "wastedassign", - ] - -[[linters-settings.depguard.rules.main.deny]] -pkg = "io/ioutil" -desc = "Deprecated. Functions have been moved elsewhere." - -[linters-settings.errcheck] - check-blank = true - # Ignoring Close so that we don't have to have a bunch of - # `defer func() { _ = r.Close() }()` constructs when we - # don't actually care about the error. - ignore = "Close,fmt:.*" + "err113", + "execinquery", + "exhaustive", + "exhaustruct", + "forcetypeassert", + "funlen", + "gochecknoglobals", + "godox", + "gomnd", + "inamedparam", + "interfacebloat", + "mnd", + "nlreturn", + "nonamedreturns", + "paralleltest", + "thelper", + "testpackage", + + "varnamelen", + "wrapcheck", + "wsl", + + # Require Go 1.22 + "copyloopvar", + "intrange", +] [linters-settings.errorlint] - errorf = true - asserts = true - comparison = true +errorf = true +asserts = true +comparison = true [linters-settings.exhaustive] - default-signifies-exhaustive = true +default-signifies-exhaustive = true [linters-settings.forbidigo] - # Forbid the following identifiers - forbid = [ - "Geoip", # use "GeoIP" - "^geoIP", # use "geoip" - "Maxmind", # use "MaxMind" - "^maxMind", # use "maxmind" - ] - -[linters-settings.gocritic] - enabled-checks = [ - "appendAssign", - "appendCombine", - "argOrder", - "assignOp", - "badCall", - "badCond", - "badLock", - "badRegexp", - "badSorting", - "boolExprSimplify", - "builtinShadow", - "builtinShadowDecl", - "captLocal", - "caseOrder", - "codegenComment", - "commentedOutCode", - "commentedOutImport", - "commentFormatting", - "defaultCaseOrder", - "deferInLoop", - "deferUnlambda", - "deprecatedComment", - "docStub", - "dupArg", - "dupBranchBody", - "dupCase", - "dupImport", - "dupSubExpr", - "dynamicFmtString", - "elseif", - "emptyDecl", - "emptyFallthrough", - "emptyStringTest", - "equalFold", - "evalOrder", - "exitAfterDefer", - "exposedSyncMutex", - "externalErrorReassign", - "filepathJoin", - "flagDeref", - "flagName", - "hexLiteral", - "httpNoBody", - "hugeParam", - "ifElseChain", - "importShadow", - "indexAlloc", - "initClause", - "mapKey", - "methodExprCall", - "nestingReduce", - "newDeref", - "nilValReturn", - "octalLiteral", - "offBy1", - "paramTypeCombine", - "preferDecodeRune", - "preferFilepathJoin", - "preferFprint", - "preferStringWriter", - "preferWriteByte", - "ptrToRefParam", - "rangeExprCopy", - "rangeValCopy", - "redundantSprint", - "regexpMust", - "regexpPattern", - "regexpSimplify", - "returnAfterHttpError", - "ruleguard", - "singleCaseSwitch", - "sliceClear", - "sloppyLen", - "sloppyReassign", - "sloppyTestFuncName", - "sloppyTypeAssert", - "sortSlice", - "sprintfQuotedString", - "sqlQuery", - "stringsCompare", - "stringConcatSimplify", - "stringXbytes", - "switchTrue", - "syncMapLoadAndDelete", - "timeExprSimplify", - "todoCommentWithoutDetail", - "tooManyResultsChecker", - "truncateCmp", - "typeAssertChain", - "typeDefFirst", - "typeSwitchVar", - "typeUnparen", - "underef", - "unlabelStmt", - "unlambda", - # "unnamedResult", - "unnecessaryBlock", - "unnecessaryDefer", - "unslice", - "valSwap", - "weakCond", - # Covered by nolintlint - # "whyNoLint" - "wrapperFunc", - "yodaStyleExpr", - ] +# Forbid the following identifiers +forbid = [ + { p = "Geoip", msg = "you should use `GeoIP`" }, + { p = "geoIP", msg = "you should use `geoip`" }, + { p = "Maxmind", msg = "you should use `MaxMind`" }, + { p = "^maxMind", msg = "you should use `maxmind`" }, + { p = "Minfraud", msg = "you should use `MinFraud`" }, + { p = "^minFraud", msg = "you should use `minfraud`" }, + { p = "^math.Max$", msg = "you should use the max built-in instead." }, + { p = "^math.Min$", msg = "you should use the min built-in instead." }, + { p = "^os.IsNotExist", msg = "As per their docs, new code should use errors.Is(err, fs.ErrNotExist)." }, + { p = "^os.IsExist", msg = "As per their docs, new code should use errors.Is(err, fs.ErrExist)" }, +] + +[linters-settings.gci] +sections = ["standard", "default", "prefix(github.com/oschwald/maxminddb-golang)"] [linters-settings.gofumpt] - extra-rules = true - lang-version = "1.19" - -[linters-settings.gosec] - excludes = [ - # G104 - "Audit errors not checked." We use errcheck for this. - "G104", - - # G304 - "Potential file inclusion via variable" - "G304", - - # G306 - "Expect WriteFile permissions to be 0600 or less". - "G306", - - # Prohibits defer (*os.File).Close, which we allow when reading from file. - "G307", - ] +extra-rules = true [linters-settings.govet] - "enable-all" = true - disable = ["shadow"] +enable-all = true +disable = "shadow" [linters-settings.lll] - line-length = 120 - tab-width = 4 - -[linters-settings.nolintlint] - allow-leading-space = false - allow-unused = false - allow-no-explanation = ["lll", "misspell"] - require-explanation = true - require-specific = true - -[linters-settings.revive] - ignore-generated-header = true - severity = "warning" - - # [[linters-settings.revive.rules]] - # name = "add-constant" - - # [[linters-settings.revive.rules]] - # name = "argument-limit" - - [[linters-settings.revive.rules]] - name = "atomic" - - [[linters-settings.revive.rules]] - name = "bare-return" - - [[linters-settings.revive.rules]] - name = "blank-imports" - - [[linters-settings.revive.rules]] - name = "bool-literal-in-expr" - - [[linters-settings.revive.rules]] - name = "call-to-gc" - - # [[linters-settings.revive.rules]] - # name = "cognitive-complexity" - - [[linters-settings.revive.rules]] - name = "comment-spacings" - arguments = ["easyjson", "nolint"] - - # [[linters-settings.revive.rules]] - # name = "confusing-naming" - - # [[linters-settings.revive.rules]] - # name = "confusing-results" - - [[linters-settings.revive.rules]] - name = "constant-logical-expr" - - [[linters-settings.revive.rules]] - name = "context-as-argument" - - [[linters-settings.revive.rules]] - name = "context-keys-type" - - # [[linters-settings.revive.rules]] - # name = "cyclomatic" - - [[linters-settings.revive.rules]] - name = "datarace" - - # [[linters-settings.revive.rules]] - # name = "deep-exit" - - [[linters-settings.revive.rules]] - name = "defer" - - [[linters-settings.revive.rules]] - name = "dot-imports" - - [[linters-settings.revive.rules]] - name = "duplicated-imports" - - [[linters-settings.revive.rules]] - name = "early-return" - - [[linters-settings.revive.rules]] - name = "empty-block" - - [[linters-settings.revive.rules]] - name = "empty-lines" - - [[linters-settings.revive.rules]] - name = "errorf" - - [[linters-settings.revive.rules]] - name = "error-naming" - - [[linters-settings.revive.rules]] - name = "error-return" - - [[linters-settings.revive.rules]] - name = "error-strings" +line-length = 120 +tab-width = 4 - [[linters-settings.revive.rules]] - name = "exported" +[linters-settings.misspell] +locale = "US" - # [[linters-settings.revive.rules]] - # name = "file-header" +[[linters-settings.misspell.extra-words]] +typo = "marshall" +correction = "marshal" - # [[linters-settings.revive.rules]] - # name = "flag-parameter" +[[linters-settings.misspell.extra-words]] +typo = "marshalling" +correction = "marshaling" - # [[linters-settings.revive.rules]] - # name = "function-result-limit" +[[linters-settings.misspell.extra-words]] +typo = "marshalls" +correction = "marshals" - [[linters-settings.revive.rules]] - name = "get-return" +[[linters-settings.misspell.extra-words]] +typo = "unmarshall" +correction = "unmarshal" - [[linters-settings.revive.rules]] - name = "identical-branches" +[[linters-settings.misspell.extra-words]] +typo = "unmarshalling" +correction = "unmarshaling" - [[linters-settings.revive.rules]] - name = "if-return" +[[linters-settings.misspell.extra-words]] +typo = "unmarshalls" +correction = "unmarshals" - [[linters-settings.revive.rules]] - name = "imports-blacklist" - - [[linters-settings.revive.rules]] - name = "import-shadowing" - - [[linters-settings.revive.rules]] - name = "increment-decrement" - - [[linters-settings.revive.rules]] - name = "indent-error-flow" - - # [[linters-settings.revive.rules]] - # name = "line-length-limit" - - # [[linters-settings.revive.rules]] - # name = "max-public-structs" - - [[linters-settings.revive.rules]] - name = "modifies-parameter" - - [[linters-settings.revive.rules]] - name = "modifies-value-receiver" - - # [[linters-settings.revive.rules]] - # name = "nested-structs" - - [[linters-settings.revive.rules]] - name = "optimize-operands-order" - - [[linters-settings.revive.rules]] - name = "package-comments" - - [[linters-settings.revive.rules]] - name = "range" - - [[linters-settings.revive.rules]] - name = "range-val-address" - - [[linters-settings.revive.rules]] - name = "range-val-in-closure" - - [[linters-settings.revive.rules]] - name = "receiver-naming" - - [[linters-settings.revive.rules]] - name = "redefines-builtin-id" - - [[linters-settings.revive.rules]] - name = "string-of-int" - - [[linters-settings.revive.rules]] - name = "struct-tag" - - [[linters-settings.revive.rules]] - name = "superfluous-else" - - [[linters-settings.revive.rules]] - name = "time-equal" - - [[linters-settings.revive.rules]] - name = "time-naming" - - [[linters-settings.revive.rules]] - name = "unconditional-recursion" - - [[linters-settings.revive.rules]] - name = "unexported-naming" - - [[linters-settings.revive.rules]] - name = "unexported-return" - - # [[linters-settings.revive.rules]] - # name = "unhandled-error" - - [[linters-settings.revive.rules]] - name = "unnecessary-stmt" - - [[linters-settings.revive.rules]] - name = "unreachable-code" - - [[linters-settings.revive.rules]] - name = "unused-parameter" - - [[linters-settings.revive.rules]] - name = "unused-receiver" - - [[linters-settings.revive.rules]] - name = "use-any" - - [[linters-settings.revive.rules]] - name = "useless-break" - - [[linters-settings.revive.rules]] - name = "var-declaration" - - [[linters-settings.revive.rules]] - name = "var-naming" +[linters-settings.nolintlint] +allow-unused = false +allow-no-explanation = ["lll", "misspell"] +require-explanation = true +require-specific = true - [[linters-settings.revive.rules]] - name = "waitgroup-by-value" +[linters-settings.revive] +enable-all-rules = true +ignore-generated-header = true +severity = "warning" + +[[linters-settings.revive.rules]] +name = "add-constant" +disabled = true + +[[linters-settings.revive.rules]] +name = "cognitive-complexity" +disabled = true + +[[linters-settings.revive.rules]] +name = "confusing-naming" +disabled = true + +[[linters-settings.revive.rules]] +name = "confusing-results" +disabled = true + +[[linters-settings.revive.rules]] +name = "cyclomatic" +disabled = true + +[[linters-settings.revive.rules]] +name = "deep-exit" +disabled = true + +[[linters-settings.revive.rules]] +name = "flag-parameter" +disabled = true + +[[linters-settings.revive.rules]] +name = "function-length" +disabled = true + +[[linters-settings.revive.rules]] +name = "function-result-limit" +disabled = true + +[[linters-settings.revive.rules]] +name = "line-length-limit" +disabled = true + +[[linters-settings.revive.rules]] +name = "max-public-structs" +disabled = true + +[[linters-settings.revive.rules]] +name = "nested-structs" +disabled = true + +[[linters-settings.revive.rules]] +name = "unchecked-type-assertion" +disabled = true + +[[linters-settings.revive.rules]] +name = "unhandled-error" +disabled = true + +[linters-settings.tagliatelle.case.rules] +avro = "snake" +bson = "snake" +env = "upperSnake" +envconfig = "upperSnake" +json = "snake" +mapstructure = "snake" +xml = "snake" +yaml = "snake" [linters-settings.unparam] - check-exported = true +check-exported = true -[issues] -exclude-use-default = false [[issues.exclude-rules]] - linters = [ - "govet" - ] - path = "_test.go" - text = "^fieldalignment" +linters = [ + "govet", + "revive", +] +path = "_test.go" +text = "fieldalignment:" diff --git a/vendor/github.com/oschwald/maxminddb-golang/decoder.go b/vendor/github.com/oschwald/maxminddb-golang/decoder.go index 0b8708d65fb2..435591ebc5e1 100644 --- a/vendor/github.com/oschwald/maxminddb-golang/decoder.go +++ b/vendor/github.com/oschwald/maxminddb-golang/decoder.go @@ -2,6 +2,7 @@ package maxminddb import ( "encoding/binary" + "fmt" "math" "math/big" "reflect" @@ -418,7 +419,7 @@ func (d *decoder) unmarshalMap( result = indirect(result) switch result.Kind() { default: - return 0, newUnmarshalTypeError("map", result.Type()) + return 0, newUnmarshalTypeStrError("map", result.Type()) case reflect.Struct: return d.decodeStruct(size, offset, result, depth) case reflect.Map: @@ -430,7 +431,7 @@ func (d *decoder) unmarshalMap( result.Set(rv) return newOffset, err } - return 0, newUnmarshalTypeError("map", result.Type()) + return 0, newUnmarshalTypeStrError("map", result.Type()) } } @@ -465,7 +466,7 @@ func (d *decoder) unmarshalSlice( return newOffset, err } } - return 0, newUnmarshalTypeError("array", result.Type()) + return 0, newUnmarshalTypeStrError("array", result.Type()) } func (d *decoder) unmarshalString(size, offset uint, result reflect.Value) (uint, error) { @@ -596,24 +597,26 @@ func (d *decoder) decodeMap( mapType := result.Type() keyValue := reflect.New(mapType.Key()).Elem() elemType := mapType.Elem() - elemKind := elemType.Kind() var elemValue reflect.Value for i := uint(0); i < size; i++ { var key []byte var err error key, offset, err = d.decodeKey(offset) - if err != nil { return 0, err } - if !elemValue.IsValid() || elemKind == reflect.Interface { + if elemValue.IsValid() { + // After 1.20 is the minimum supported version, this can just be + // elemValue.SetZero() + reflectSetZero(elemValue) + } else { elemValue = reflect.New(elemType).Elem() } offset, err = d.decode(offset, elemValue, depth) if err != nil { - return 0, err + return 0, fmt.Errorf("decoding value for %s: %w", key, err) } keyValue.SetString(string(key)) @@ -770,7 +773,7 @@ func (d *decoder) decodeStruct( offset, err = d.decode(offset, result.Field(j), depth) if err != nil { - return 0, err + return 0, fmt.Errorf("decoding value for %s: %w", key, err) } } return offset, nil diff --git a/vendor/github.com/oschwald/maxminddb-golang/errors.go b/vendor/github.com/oschwald/maxminddb-golang/errors.go index aeba906b52aa..f141f618d842 100644 --- a/vendor/github.com/oschwald/maxminddb-golang/errors.go +++ b/vendor/github.com/oschwald/maxminddb-golang/errors.go @@ -30,13 +30,17 @@ type UnmarshalTypeError struct { Value string } -func newUnmarshalTypeError(value any, rType reflect.Type) UnmarshalTypeError { +func newUnmarshalTypeStrError(value string, rType reflect.Type) UnmarshalTypeError { return UnmarshalTypeError{ - Value: fmt.Sprintf("%v", value), Type: rType, + Value: value, } } +func newUnmarshalTypeError(value any, rType reflect.Type) UnmarshalTypeError { + return newUnmarshalTypeStrError(fmt.Sprintf("%v (%T)", value, value), rType) +} + func (e UnmarshalTypeError) Error() string { - return fmt.Sprintf("maxminddb: cannot unmarshal %s into type %s", e.Value, e.Type.String()) + return fmt.Sprintf("maxminddb: cannot unmarshal %s into type %s", e.Value, e.Type) } diff --git a/vendor/github.com/oschwald/maxminddb-golang/mmap_unix.go b/vendor/github.com/oschwald/maxminddb-golang/mmap_unix.go index 5f6d80f68b88..48b2e403ce2b 100644 --- a/vendor/github.com/oschwald/maxminddb-golang/mmap_unix.go +++ b/vendor/github.com/oschwald/maxminddb-golang/mmap_unix.go @@ -1,5 +1,5 @@ -//go:build !windows && !appengine && !plan9 && !js && !wasip1 -// +build !windows,!appengine,!plan9,!js,!wasip1 +//go:build !windows && !appengine && !plan9 && !js && !wasip1 && !wasi +// +build !windows,!appengine,!plan9,!js,!wasip1,!wasi package maxminddb diff --git a/vendor/github.com/oschwald/maxminddb-golang/reader.go b/vendor/github.com/oschwald/maxminddb-golang/reader.go index 470845b2b26b..2dc712fbc73a 100644 --- a/vendor/github.com/oschwald/maxminddb-golang/reader.go +++ b/vendor/github.com/oschwald/maxminddb-golang/reader.go @@ -65,8 +65,8 @@ func FromBytes(buffer []byte) (*Reader, error) { var metadata Metadata - rvMetdata := reflect.ValueOf(&metadata) - _, err := metadataDecoder.decode(0, rvMetdata, 0) + rvMetadata := reflect.ValueOf(&metadata) + _, err := metadataDecoder.decode(0, rvMetadata, 0) if err != nil { return nil, err } diff --git a/vendor/github.com/oschwald/maxminddb-golang/reader_memory.go b/vendor/github.com/oschwald/maxminddb-golang/reader_memory.go index 33f119298c56..4ebb3473d257 100644 --- a/vendor/github.com/oschwald/maxminddb-golang/reader_memory.go +++ b/vendor/github.com/oschwald/maxminddb-golang/reader_memory.go @@ -1,5 +1,5 @@ -//go:build appengine || plan9 || js || wasip1 -// +build appengine plan9 js wasip1 +//go:build appengine || plan9 || js || wasip1 || wasi +// +build appengine plan9 js wasip1 wasi package maxminddb diff --git a/vendor/github.com/oschwald/maxminddb-golang/reader_mmap.go b/vendor/github.com/oschwald/maxminddb-golang/reader_mmap.go index 320d1937e4da..1d083019ee6f 100644 --- a/vendor/github.com/oschwald/maxminddb-golang/reader_mmap.go +++ b/vendor/github.com/oschwald/maxminddb-golang/reader_mmap.go @@ -1,5 +1,5 @@ -//go:build !appengine && !plan9 && !js && !wasip1 -// +build !appengine,!plan9,!js,!wasip1 +//go:build !appengine && !plan9 && !js && !wasip1 && !wasi +// +build !appengine,!plan9,!js,!wasip1,!wasi package maxminddb diff --git a/vendor/github.com/oschwald/maxminddb-golang/set_zero_120.go b/vendor/github.com/oschwald/maxminddb-golang/set_zero_120.go new file mode 100644 index 000000000000..33b9dff9d959 --- /dev/null +++ b/vendor/github.com/oschwald/maxminddb-golang/set_zero_120.go @@ -0,0 +1,10 @@ +//go:build go1.20 +// +build go1.20 + +package maxminddb + +import "reflect" + +func reflectSetZero(v reflect.Value) { + v.SetZero() +} diff --git a/vendor/github.com/oschwald/maxminddb-golang/set_zero_pre120.go b/vendor/github.com/oschwald/maxminddb-golang/set_zero_pre120.go new file mode 100644 index 000000000000..6639de73e612 --- /dev/null +++ b/vendor/github.com/oschwald/maxminddb-golang/set_zero_pre120.go @@ -0,0 +1,10 @@ +//go:build !go1.20 +// +build !go1.20 + +package maxminddb + +import "reflect" + +func reflectSetZero(v reflect.Value) { + v.Set(reflect.Zero(v.Type())) +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 8e3c23db1be0..5a752986b28a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1342,11 +1342,11 @@ github.com/opentracing/opentracing-go github.com/opentracing/opentracing-go/ext github.com/opentracing/opentracing-go/log github.com/opentracing/opentracing-go/mocktracer -# github.com/oschwald/geoip2-golang v1.9.0 -## explicit; go 1.19 +# github.com/oschwald/geoip2-golang v1.11.0 +## explicit; go 1.21 github.com/oschwald/geoip2-golang -# github.com/oschwald/maxminddb-golang v1.11.0 -## explicit; go 1.19 +# github.com/oschwald/maxminddb-golang v1.13.0 +## explicit; go 1.21 github.com/oschwald/maxminddb-golang # github.com/pierrec/lz4/v4 v4.1.18 ## explicit; go 1.14