diff --git a/cmd/http-reflect-server/.golangci.yaml b/cmd/http-reflect-server/.golangci.yaml new file mode 100644 index 0000000..7883e1d --- /dev/null +++ b/cmd/http-reflect-server/.golangci.yaml @@ -0,0 +1,138 @@ +## 更新到 golangci-lint@v1.52.2 +run: + timeout: 1m + build-tags: [ ] + skip-dirs: [ ] + skip-files: [ ] +linters: + disable-all: true + enable: + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - typecheck + - unused + - asasalint + - asciicheck + - bidichk + - bodyclose + - containedctx + - cyclop + - dupl + - durationcheck + - errname + - errorlint + - exhaustive + - exportloopref + - funlen + - gocheckcompilerdirectives + - gochecknoinits + - goconst + - gocritic + - gocyclo + - goimports + - gomnd + - goprintffuncname + - gosec + - lll + - loggercheck + - makezero + - nakedret + - nestif + - nilnil + - noctx + - nolintlint + - nosprintfhostport + - prealloc + - predeclared + - promlinter + - reassign + - revive + - stylecheck + - tenv + - testableexamples + - testpackage + - tparallel + - unconvert + - unparam + - usestdlibvars + - wastedassign + - whitespace +linters-settings: + errcheck: + check-type-assertions: true + exclude-functions: [ ] + govet: + enable-all: true + disable: [ ] + cyclop: + max-complexity: 10 + package-average: 0.0 + dupl: + threshold: 150 + exhaustive: + check: + - switch + - map + funlen: + lines: 100 + statements: 60 + gocritic: + disabled-checks: + - commentFormatting + settings: + captLocal: + paramsOnly: false + underef: + skipRecvDeref: false + gocyclo: + min-complexity: 20 + gomnd: + ignored-functions: + - os.Chmod + - os.Mkdir + - os.MkdirAll + - os.OpenFile + - os.WriteFile + - prometheus.ExponentialBuckets + - prometheus.ExponentialBucketsRange + - prometheus.LinearBuckets + lll: + line-length: 240 + nakedret: + max-func-lines: 10 + nestif: + min-complexity: 5 + predeclared: + ignore: "" + q: false + reassign: + patterns: + - ".*" + tenv: + all: true + usestdlibvars: + time-month: true + time-layout: true + crypto-hash: true + default-rpc-path: true + os-dev-null: true + sql-isolation-level: true + tls-signature-scheme: true + constant-kind: true + syslog-priority: true +issues: + max-same-issues: 10 + exclude-rules: + - source: "//noinspection" + linters: [ gocritic ] + - path: "_test\\.go" + linters: + - bodyclose + - dupl + - funlen + - goconst + - gosec + - noctx diff --git a/cmd/http-reflect-server/go.mod b/cmd/http-reflect-server/go.mod index d172a7b..a82f1d5 100644 --- a/cmd/http-reflect-server/go.mod +++ b/cmd/http-reflect-server/go.mod @@ -3,6 +3,6 @@ module git.blauwelle.com/go/crate/cmd/http-reflect-server go 1.20 require ( - git.blauwelle.com/go/crate/exegroup v0.3.0 - git.blauwelle.com/go/crate/log v0.6.0 + git.blauwelle.com/go/crate/exegroup v0.4.0 + git.blauwelle.com/go/crate/log v0.9.0 ) diff --git a/cmd/http-reflect-server/go.sum b/cmd/http-reflect-server/go.sum index e538182..2b9b6b5 100644 --- a/cmd/http-reflect-server/go.sum +++ b/cmd/http-reflect-server/go.sum @@ -1,4 +1,4 @@ -git.blauwelle.com/go/crate/exegroup v0.3.0 h1:TBLygDztECKc67NeIIBsFDxlA4KcJpbOmafqqRuKRcM= -git.blauwelle.com/go/crate/exegroup v0.3.0/go.mod h1:DJoID54YI5WFHGHoTCjBao8oS3HFRzwbWMZW6P57AIQ= -git.blauwelle.com/go/crate/log v0.6.0 h1:s/TeJUaV/Y8hHaz/3FumdbwQWCbRMmOx8prrNmByJHs= -git.blauwelle.com/go/crate/log v0.6.0/go.mod h1:jfVfpRODZTA70A8IkApVeGsS1zfLk1D77sLWZM/w+L0= +git.blauwelle.com/go/crate/exegroup v0.4.0 h1:hr9vhYDL+LidvoEBCabdUZ22oekUq0s2NK69tklb42g= +git.blauwelle.com/go/crate/exegroup v0.4.0/go.mod h1:DJoID54YI5WFHGHoTCjBao8oS3HFRzwbWMZW6P57AIQ= +git.blauwelle.com/go/crate/log v0.9.0 h1:H01AQIKcYybeCZGdReBzMoWhkXPQJAoY1t+K0J1asEk= +git.blauwelle.com/go/crate/log v0.9.0/go.mod h1:jfVfpRODZTA70A8IkApVeGsS1zfLk1D77sLWZM/w+L0= diff --git a/cmd/http-reflect-server/handler.go b/cmd/http-reflect-server/handler.go index 093ec8d..5687217 100644 --- a/cmd/http-reflect-server/handler.go +++ b/cmd/http-reflect-server/handler.go @@ -12,6 +12,10 @@ import ( "git.blauwelle.com/go/crate/log" ) +const ( + maxParseMemory = 16 * 1024 * 1024 +) + func newHandler() http.HandlerFunc { return func(rw http.ResponseWriter, r *http.Request) { start := time.Now() @@ -59,7 +63,6 @@ func newHandler() http.HandlerFunc { log.Field("code", code), log.Field("duration", duration.String()), ).Info(ctx, message) - } } @@ -93,6 +96,7 @@ type ResponseRequest struct { ContentLength int64 `json:"contentLength"` } +//nolint:cyclop func readBody(ctx context.Context, r *http.Request) (any, error) { contentType := r.Header.Get("Content-Type") switch { @@ -122,7 +126,7 @@ func readBody(ctx context.Context, r *http.Request) (any, error) { return string(b), nil //case : case strings.HasPrefix(contentType, "multipart/form-data"): - if err := r.ParseMultipartForm(16 * 1024 * 1024); err != nil { + if err := r.ParseMultipartForm(maxParseMemory); err != nil { log.Error(ctx, err.Error()) return nil, err } @@ -148,8 +152,9 @@ func readBody(ctx context.Context, r *http.Request) (any, error) { log.Error(ctx, err.Error()) return nil, err } - if len(b) > 96 { - b = b[:96] + const maxBodyByteSizeToReturn = 96 + if len(b) > maxBodyByteSizeToReturn { + b = b[:maxBodyByteSizeToReturn] } return b, nil } diff --git a/cmd/http-reflect-server/main.go b/cmd/http-reflect-server/main.go index 3c541b4..1f34a23 100644 --- a/cmd/http-reflect-server/main.go +++ b/cmd/http-reflect-server/main.go @@ -11,7 +11,7 @@ import ( "git.blauwelle.com/go/crate/log/logsdk/logjson" ) -var port = flag.Int("port", 8080, "HTTP Port") +var port = flag.Int("port", 8080, "HTTP Port") //nolint:gomnd func main() { flag.Parse() @@ -20,7 +20,7 @@ func main() { mux := http.NewServeMux() var handler http.Handler = mux mux.HandleFunc("/", newHandler()) - g.New().WithGoStop(exegroup.HttpListenAndServe(*port, handler)) + g.New().WithGoStop(exegroup.HTTPListenAndServe(*port, handler)) log.Infof(context.Background(), "listening %d", *port) log.Error(context.Background(), "exit: ", g.Run(context.Background())) }