golangci-lint 1.49 and related fixes (#1736)

This commit is contained in:
mmetc 2022-09-06 13:55:03 +02:00 committed by GitHub
parent faf3670e7f
commit 414282a2c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
42 changed files with 140 additions and 158 deletions

View file

@ -28,7 +28,7 @@ jobs:
uses: golangci/golangci-lint-action@v3
with:
# Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
version: v1.48
version: v1.49
# Optional: golangci-lint command line arguments.
args: --issues-exit-code=1 --timeout 10m
# Optional: show only new issues if it's a pull request. The default value is `false`.

View file

@ -38,21 +38,28 @@ linters:
#
# DEPRECATED by golangi-lint
#
- deadcode # The owner seems to have abandoned the linter. Replaced by unused.
- exhaustivestruct # The owner seems to have abandoned the linter. Replaced by exhaustruct.
- golint # Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes
- ifshort # Checks that your code uses short syntax for if-statements whenever possible
- interfacer # Linter that suggests narrower interface types
- maligned # Tool to detect Go structs that would take less memory if their fields were sorted
- nosnakecase # nosnakecase is a linter that detects snake case of variable naming and function name.
- scopelint # Scopelint checks for unpinned variables in go programs
- structcheck # The owner seems to have abandoned the linter. Replaced by unused.
- varcheck # The owner seems to have abandoned the linter. Replaced by unused.
#
# Enabled
#
# - asasalint # check for pass []any as any in variadic func(...any)
# - asciicheck # Simple linter to check that your code does not contain non-ASCII identifiers
# - bidichk # Checks for dangerous unicode character sequences
# - decorder # check declaration order and count of types, constants, variables and functions
# - depguard # Go linter that checks if package imports are in a list of acceptable packages
# - durationcheck # check for two durations multiplied together
# - errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases
# - exportloopref # checks for pointers to enclosing loop variables
# - funlen # Tool for detection of long functions
# - gochecknoinits # Checks that no init functions are present in Go code
@ -60,60 +67,53 @@ linters:
# - gomoddirectives # Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod.
# - gomodguard # Allow and block list linter for direct Go module dependencies. This is different from depguard where there are different block types for example version constraints and module recommendations.
# - goprintffuncname # Checks that printf-like functions are named with `f` at the end
# - gosimple # (megacheck): Linter for Go source code that specializes in simplifying a code
# - govet # (vet, vetshadow): Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string
# - grouper # An analyzer to analyze expression groups.
# - importas # Enforces consistent import aliases
# - ineffassign # Detects when assignments to existing variables are not used
# - interfacebloat # A linter that checks the number of methods inside an interface.
# - logrlint # Check logr arguments.
# - makezero # Finds slice declarations with non-zero initial length
# - misspell # Finds commonly misspelled English words in comments
# - nolintlint # Reports ill-formed or insufficient nolint directives
# - predeclared # find code that shadows one of Go's predeclared identifiers
# - reassign # Checks that package variables are not reassigned
# - rowserrcheck # checks whether Err of rows is checked successfully
# - sqlclosecheck # Checks that sql.Rows and sql.Stmt are closed.
# - staticcheck # (megacheck): Staticcheck is a go vet on steroids, applying a ton of static analysis checks
# - tenv # tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17
# - tparallel # tparallel detects inappropriate usage of t.Parallel() method in your Go test codes
# - typecheck # Like the front-end of a Go compiler, parses and type-checks Go code
# - unconvert # Remove unnecessary type conversions
# - unused # (megacheck): Checks Go code for unused constants, variables, functions and types
# - usestdlibvars # A linter that detect the possibility to use variables/constants from the Go standard library.
# - varcheck # Finds unused global variables and constants
#
# Enabled by default by golangci (but requires fixing current issues, see at the end of this file) There
# is some redundancy, but never 1 to 1 (staticcheck seems to find more
# cases than ineffassign, deadcore more than unused..).
#
# - deadcode # Finds unused code
# - errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases
# - gosimple # (megacheck): Linter for Go source code that specializes in simplifying a code
# - govet # (vet, vetshadow): Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string
# - ineffassign # Detects when assignments to existing variables are not used
# - staticcheck # (megacheck): Staticcheck is a go vet on steroids, applying a ton of static analysis checks
# - structcheck # Finds unused struct fields
# - unused # (megacheck): Checks Go code for unused constants, variables, functions and types
#
# Recommended? (easy)
#
- dogsled # Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f())
- errchkjson # Checks types passed to the json encoding functions. Reports unsupported types and optionally reports occations, where the check for the returned error can be omitted.
- errorlint # errorlint is a linter for that can be used to find code that will cause problems with the error wrapping scheme introduced in Go 1.13.
- exhaustive # check exhaustiveness of enum switch statements
- forcetypeassert # finds forced type assertions
- gci # Gci control golang package import order and make it always deterministic.
- gocritic # Provides diagnostics that check for bugs, performance and style issues.
- godot # Check if comments end in a period
- gofmt # Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification
- goimports # In addition to fixing imports, goimports also formats your code in the same style as gofmt.
- gosec # (gas): Inspects source code for security problems
- lll # Reports long lines
- nakedret # Finds naked returns in functions greater than a specified function length
- nilerr # Finds the code that returns nil even if it checks that the error is not nil.
- nonamedreturns # Reports all named returns
- nosprintfhostport # Checks for misuse of Sprintf to construct a host with port in a URL.
- promlinter # Check Prometheus metrics naming via promlint
- revive # Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint.
- wastedassign # wastedassign finds wasted assignment statements.
- gocritic # Provides diagnostics that check for bugs, performance and style issues.
- exhaustive # check exhaustiveness of enum switch statements
- thelper # thelper detects golang test helpers without t.Helper() call and checks the consistency of test helpers
- dogsled # Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f())
- wastedassign # wastedassign finds wasted assignment statements.
- wrapcheck # Checks that errors returned from external packages are wrapped
- lll # Reports long lines
- ifshort # Checks that your code uses short syntax for if-statements whenever possible
- godot # Check if comments end in a period
#
# Recommended? (requires some work)
@ -122,12 +122,12 @@ linters:
- bodyclose # checks whether HTTP response body is closed successfully
- containedctx # containedctx is a linter that detects struct contained context.Context field
- contextcheck # check the function whether use a non-inherited context
- nilnil # Checks that there is no simultaneous return of `nil` error and an invalid value.
- noctx # noctx finds sending http request without context.Context
- unparam # Reports unused function parameters
- errname # Checks that sentinel errors are prefixed with the `Err` and error types are suffixed with the `Error`.
- gomnd # An analyzer to detect magic numbers.
- ireturn # Accept Interfaces, Return Concrete Types
- nilnil # Checks that there is no simultaneous return of `nil` error and an invalid value.
- noctx # noctx finds sending http request without context.Context
- unparam # Reports unused function parameters
#
# Formatting only, useful in IDE but should not be forced on CI?
@ -141,29 +141,28 @@ linters:
#
# Well intended, but not ready for this
#
- paralleltest # paralleltest detects missing usage of t.Parallel() method in your Go test
- cyclop # checks function and package cyclomatic complexity
- dupl # Tool for code clone detection
- gocognit # Computes and checks the cognitive complexity of functions
- maintidx # maintidx measures the maintainability index of each function.
- goerr113 # Golang linter to check the errors handling expressions
- nestif # Reports deeply nested if statements
- gocyclo # Computes and checks the cyclomatic complexity of functions
- godox # Tool for detection of FIXME, TODO and other comment keywords
- dupl # Tool for code clone detection
- goerr113 # Golang linter to check the errors handling expressions
- maintidx # maintidx measures the maintainability index of each function.
- nestif # Reports deeply nested if statements
- paralleltest # paralleltest detects missing usage of t.Parallel() method in your Go test
- testpackage # linter that makes you use a separate _test package
#
# Too strict / too many false positives (for now?)
#
- execinquery # execinquery is a linter about query string checker in Query function which reads your Go src files and warning it finds
- forbidigo # Forbids identifiers
- tagliatelle # Checks the struct tags.
- varnamelen # checks that the length of a variable's name matches its scope
- gochecknoglobals # check that no global variables exist
- exhaustruct # Checks if all structure fields are initialized
- forbidigo # Forbids identifiers
- gochecknoglobals # check that no global variables exist
- goconst # Finds repeated strings that could be replaced by a constant
- stylecheck # Stylecheck is a replacement for golint
- nosnakecase # nosnakecase is a linter that detects snake case of variable naming and function name.
- tagliatelle # Checks the struct tags.
- varnamelen # checks that the length of a variable's name matches its scope
#
# Under evaluation

View file

@ -3,8 +3,8 @@ package main
import (
"context"
"fmt"
"io/ioutil"
"net/url"
"os"
"github.com/crowdsecurity/crowdsec/pkg/apiclient"
"github.com/crowdsecurity/crowdsec/pkg/csconfig"
@ -89,7 +89,7 @@ func NewCapiCmd() *cobra.Command {
log.Fatalf("unable to marshal api credentials: %s", err)
}
if dumpFile != "" {
err = ioutil.WriteFile(dumpFile, apiConfigDump, 0600)
err = os.WriteFile(dumpFile, apiConfigDump, 0600)
if err != nil {
log.Fatalf("write api credentials in '%s' failed: %s", dumpFile, err)
}

View file

@ -3,7 +3,7 @@ package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"io"
"os"
"path/filepath"
@ -181,7 +181,7 @@ func restoreConfigFromDirectory(dirPath string) error {
if err != nil {
log.Warningf("failed to open %s : %s", backupOldAPICfg, err)
} else {
byteValue, _ := ioutil.ReadAll(jsonFile)
byteValue, _ := io.ReadAll(jsonFile)
err = json.Unmarshal(byteValue, &oldAPICfg)
if err != nil {
return fmt.Errorf("failed to load json file %s : %s", backupOldAPICfg, err)
@ -200,7 +200,7 @@ func restoreConfigFromDirectory(dirPath string) error {
if csConfig.API.Server.OnlineClient != nil && csConfig.API.Server.OnlineClient.CredentialsFilePath != "" {
apiConfigDumpFile = csConfig.API.Server.OnlineClient.CredentialsFilePath
}
err = ioutil.WriteFile(apiConfigDumpFile, apiConfigDump, 0644)
err = os.WriteFile(apiConfigDumpFile, apiConfigDump, 0644)
if err != nil {
return fmt.Errorf("write api credentials in '%s' failed: %s", apiConfigDumpFile, err)
}

View file

@ -3,8 +3,8 @@ package main
import (
"context"
"fmt"
"io/ioutil"
"net/url"
"os"
"strings"
"github.com/crowdsecurity/crowdsec/pkg/apiclient"
@ -103,7 +103,7 @@ Keep in mind the machine needs to be validated by an administrator on LAPI side
log.Fatalf("unable to marshal api credentials: %s", err)
}
if dumpFile != "" {
err = ioutil.WriteFile(dumpFile, apiConfigDump, 0644)
err = os.WriteFile(dumpFile, apiConfigDump, 0644)
if err != nil {
log.Fatalf("write api credentials in '%s' failed: %s", dumpFile, err)
}

View file

@ -6,8 +6,8 @@ import (
"encoding/csv"
"encoding/json"
"fmt"
"io/ioutil"
"math/big"
"os"
"strings"
"time"
@ -294,7 +294,7 @@ cscli machines add MyTestMachine --password MyPassword
log.Fatalf("unable to marshal api credentials: %s", err)
}
if dumpFile != "" && dumpFile != "-" {
err = ioutil.WriteFile(dumpFile, apiConfigDump, 0644)
err = os.WriteFile(dumpFile, apiConfigDump, 0644)
if err != nil {
log.Fatalf("write api credentials in '%s' failed: %s", dumpFile, err)
}

View file

@ -2,7 +2,7 @@ package main
import (
"fmt"
"io/ioutil"
"os"
"github.com/crowdsecurity/crowdsec/pkg/cwhub"
log "github.com/sirupsen/logrus"
@ -45,7 +45,7 @@ func dumpSimulationFile() error {
if err != nil {
return fmt.Errorf("unable to marshal simulation configuration: %s", err)
}
err = ioutil.WriteFile(csConfig.ConfigPaths.SimulationFilePath, newConfigSim, 0644)
err = os.WriteFile(csConfig.ConfigPaths.SimulationFilePath, newConfigSim, 0644)
if err != nil {
return fmt.Errorf("write simulation config in '%s' failed: %s", csConfig.ConfigPaths.SimulationFilePath, err)
}
@ -63,7 +63,7 @@ func disableGlobalSimulation() error {
if err != nil {
return fmt.Errorf("unable to marshal new simulation configuration: %s", err)
}
err = ioutil.WriteFile(csConfig.ConfigPaths.SimulationFilePath, newConfigSim, 0644)
err = os.WriteFile(csConfig.ConfigPaths.SimulationFilePath, newConfigSim, 0644)
if err != nil {
return fmt.Errorf("unable to write new simulation config in '%s' : %s", csConfig.ConfigPaths.SimulationFilePath, err)
}

View file

@ -5,9 +5,10 @@ import (
"bytes"
"context"
"fmt"
"io/ioutil"
"io"
"net/http"
"net/url"
"os"
"path/filepath"
"regexp"
"strings"
@ -73,7 +74,7 @@ func collectMetrics() ([]byte, []byte, error) {
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, nil, fmt.Errorf("could not read metrics from prometheus endpoint: %s", err)
}
@ -176,7 +177,7 @@ func collectAPIStatus(login string, password string, endpoint string, prefix str
func collectCrowdsecConfig() []byte {
log.Info("Collecting crowdsec config")
config, err := ioutil.ReadFile(*csConfig.FilePath)
config, err := os.ReadFile(*csConfig.FilePath)
if err != nil {
return []byte(fmt.Sprintf("could not read config file: %s", err))
}
@ -188,7 +189,7 @@ func collectCrowdsecConfig() []byte {
func collectCrowdsecProfile() []byte {
log.Info("Collecting crowdsec profile")
config, err := ioutil.ReadFile(csConfig.API.Server.ProfilesPath)
config, err := os.ReadFile(csConfig.API.Server.ProfilesPath)
if err != nil {
return []byte(fmt.Sprintf("could not read profile file: %s", err))
}
@ -200,7 +201,7 @@ func collectAcquisitionConfig() map[string][]byte {
ret := make(map[string][]byte)
for _, filename := range csConfig.Crowdsec.AcquisitionFiles {
fileContent, err := ioutil.ReadFile(filename)
fileContent, err := os.ReadFile(filename)
if err != nil {
ret[filename] = []byte(fmt.Sprintf("could not read file: %s", err))
} else {
@ -379,7 +380,7 @@ cscli support dump -f /tmp/crowdsec-support.zip
if err != nil {
log.Fatalf("could not finalize zip file: %s", err)
}
err = ioutil.WriteFile(outFile, w.Bytes(), 0600)
err = os.WriteFile(outFile, w.Bytes(), 0600)
if err != nil {
log.Fatalf("could not write zip file to %s: %s", outFile, err)
}

View file

@ -5,7 +5,6 @@ import (
"encoding/csv"
"encoding/json"
"fmt"
"io/ioutil"
"math"
"net"
"net/http"
@ -593,7 +592,7 @@ func RestoreHub(dirPath string) error {
}
/*restore the upstream items*/
upstreamListFN := fmt.Sprintf("%s/upstream-%s.json", itemDirectory, itype)
file, err := ioutil.ReadFile(upstreamListFN)
file, err := os.ReadFile(upstreamListFN)
if err != nil {
return fmt.Errorf("error while opening %s : %s", upstreamListFN, err)
}
@ -614,7 +613,7 @@ func RestoreHub(dirPath string) error {
}
/*restore the local and tainted items*/
files, err := ioutil.ReadDir(itemDirectory)
files, err := os.ReadDir(itemDirectory)
if err != nil {
return fmt.Errorf("failed enumerating files of %s : %s", itemDirectory, err)
}
@ -635,7 +634,7 @@ func RestoreHub(dirPath string) error {
return fmt.Errorf("error while creating stage directory %s : %s", stagedir, err)
}
/*find items*/
ifiles, err := ioutil.ReadDir(itemDirectory + "/" + stage + "/")
ifiles, err := os.ReadDir(itemDirectory + "/" + stage + "/")
if err != nil {
return fmt.Errorf("failed enumerating files of %s : %s", itemDirectory+"/"+stage, err)
}
@ -719,7 +718,7 @@ func BackupHub(dirPath string) error {
if err != nil {
return fmt.Errorf("failed marshaling upstream parsers : %s", err)
}
err = ioutil.WriteFile(upstreamParsersFname, upstreamParsersContent, 0644)
err = os.WriteFile(upstreamParsersFname, upstreamParsersContent, 0644)
if err != nil {
return fmt.Errorf("unable to write to %s %s : %s", itemType, upstreamParsersFname, err)
}

View file

@ -6,7 +6,7 @@ import (
"crypto/x509"
"fmt"
"io"
"io/ioutil"
"os"
"strconv"
"time"
@ -188,7 +188,7 @@ func (kc *KafkaConfiguration) NewTLSConfig() (*tls.Config, error) {
}
tlsConfig.Certificates = []tls.Certificate{cert}
caCert, err := ioutil.ReadFile(kc.TLS.CaCert)
caCert, err := os.ReadFile(kc.TLS.CaCert)
if err != nil {
return &tlsConfig, err
}

View file

@ -5,7 +5,7 @@ import (
"compress/gzip"
"encoding/json"
"fmt"
"io/ioutil"
"io"
"strings"
"time"
@ -171,7 +171,7 @@ func (k *KinesisSource) decodeFromSubscription(record []byte) ([]CloudwatchSubsc
k.logger.Error(err)
return nil, err
}
decompressed, err := ioutil.ReadAll(r)
decompressed, err := io.ReadAll(r)
if err != nil {
k.logger.Error(err)
return nil, err

View file

@ -6,7 +6,7 @@ import (
"crypto/x509"
"encoding/json"
"fmt"
"io/ioutil"
"io"
"net/http"
"net/url"
@ -152,7 +152,7 @@ func CheckResponse(r *http.Response) error {
return nil
}
errorResponse := &ErrorResponse{}
data, err := ioutil.ReadAll(r.Body)
data, err := io.ReadAll(r.Body)
if err == nil && data != nil {
err := json.Unmarshal(data, errorResponse)
if err != nil {

View file

@ -105,9 +105,8 @@ func TestDecisionsStream(t *testing.T) {
mux.HandleFunc("/decisions/stream", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, r.Header.Get("X-Api-Key"), "ixu")
testMethod(t, r, "GET")
if r.Method == "GET" {
testMethod(t, r, http.MethodGet)
if r.Method == http.MethodGet {
if r.URL.RawQuery == "startup=true" {
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"deleted":null,"new":[{"duration":"3h59m55.756182786s","id":4,"origin":"cscli","scenario":"manual 'ban' from '82929df7ee394b73b81252fe3b4e50203yaT2u6nXiaN7Ix9'","scope":"Ip","type":"ban","value":"1.2.3.4"}]}`))
@ -119,8 +118,8 @@ func TestDecisionsStream(t *testing.T) {
})
mux.HandleFunc("/decisions", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, r.Header.Get("X-Api-Key"), "ixu")
testMethod(t, r, "DELETE")
if r.Method == "DELETE" {
testMethod(t, r, http.MethodDelete)
if r.Method == http.MethodDelete {
w.WriteHeader(http.StatusOK)
}
})

View file

@ -26,7 +26,7 @@ func (s *SignalService) Add(ctx context.Context, signals *models.AddSignalsReque
if err != nil {
return nil, resp, errors.Wrap(err, "while performing request")
}
if resp.Response.StatusCode != 200 {
if resp.Response.StatusCode != http.StatusOK {
log.Warnf("Signal push response : http %s", resp.Response.Status)
} else {
log.Debugf("Signal push response : http %s", resp.Response.Status)

View file

@ -6,7 +6,6 @@ import (
"crypto/x509"
"fmt"
"io"
"io/ioutil"
"net"
"net/http"
"os"
@ -267,7 +266,7 @@ func (s *APIServer) GetTLSConfig() (*tls.Config, error) {
if s.TLS.CACertPath != "" {
if clientAuthType > tls.RequestClientCert {
log.Infof("(tls) Client Auth Type set to %s", clientAuthType.String())
caCert, err = ioutil.ReadFile(s.TLS.CACertPath)
caCert, err = os.ReadFile(s.TLS.CACertPath)
if err != nil {
return nil, errors.Wrap(err, "Error opening cert file")
}

View file

@ -210,7 +210,7 @@ func (c *Controller) FindAlerts(gctx *gin.Context) {
data := FormatAlerts(result)
if gctx.Request.Method == "HEAD" {
if gctx.Request.Method == http.MethodHead {
gctx.String(http.StatusOK, "")
return
}
@ -232,7 +232,7 @@ func (c *Controller) FindAlertByID(gctx *gin.Context) {
}
data := FormatOneAlert(result)
if gctx.Request.Method == "HEAD" {
if gctx.Request.Method == http.MethodHead {
gctx.String(http.StatusOK, "")
return
}

View file

@ -70,7 +70,7 @@ func (c *Controller) GetDecision(gctx *gin.Context) {
PrometheusBouncersHasEmptyDecision(gctx)
}
if gctx.Request.Method == "HEAD" {
if gctx.Request.Method == http.MethodHead {
gctx.String(http.StatusOK, "")
return
}
@ -181,7 +181,7 @@ func (c *Controller) StreamDecision(gctx *gin.Context) {
gctx.JSON(http.StatusInternalServerError, gin.H{"message": err.Error()})
return
}
if gctx.Request.Method == "HEAD" {
if gctx.Request.Method == http.MethodHead {
gctx.String(http.StatusOK, "")
return
}

View file

@ -5,9 +5,10 @@ import (
"crypto"
"crypto/x509"
"fmt"
"io/ioutil"
"io"
"net/http"
"net/url"
"os"
"time"
"github.com/gin-gonic/gin"
@ -56,7 +57,7 @@ func (ta *TLSAuth) ocspQuery(server string, cert *x509.Certificate, issuer *x509
return nil, err
}
defer httpResponse.Body.Close()
output, err := ioutil.ReadAll(httpResponse.Body)
output, err := io.ReadAll(httpResponse.Body)
if err != nil {
ta.logger.Error("TLSAuth: cannot read HTTP response from OCSP")
return nil, err
@ -109,7 +110,7 @@ func (ta *TLSAuth) isCRLRevoked(cert *x509.Certificate) (bool, error) {
ta.logger.Warn("no crl_path, skipping CRL check")
return false, nil
}
crlContent, err := ioutil.ReadFile(ta.CrlPath)
crlContent, err := os.ReadFile(ta.CrlPath)
if err != nil {
ta.logger.Warnf("could not read CRL file, skipping check: %s", err)
return false, nil

View file

@ -4,8 +4,8 @@ import (
"crypto/tls"
"crypto/x509"
"fmt"
"io/ioutil"
"net"
"os"
"strings"
"time"
@ -45,7 +45,7 @@ type LocalApiClientCfg struct {
func (o *OnlineApiClientCfg) Load() error {
o.Credentials = new(ApiCredentialsCfg)
fcontent, err := ioutil.ReadFile(o.CredentialsFilePath)
fcontent, err := os.ReadFile(o.CredentialsFilePath)
if err != nil {
return errors.Wrapf(err, "failed to read api server credentials configuration file '%s'", o.CredentialsFilePath)
}
@ -96,7 +96,7 @@ func (l *LocalApiClientCfg) Load() error {
return errors.Wrapf(err, "failed to load api client certificate")
}
caCert, err := ioutil.ReadFile(l.Credentials.CACertPath)
caCert, err := os.ReadFile(l.Credentials.CACertPath)
if err != nil {
return errors.Wrapf(err, "failed to load cacert")
}

View file

@ -2,7 +2,6 @@ package csconfig
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
@ -162,7 +161,7 @@ func TestLoadAPIServer(t *testing.T) {
}
config := &Config{}
fcontent, err := ioutil.ReadFile("./tests/config.yaml")
fcontent, err := os.ReadFile("./tests/config.yaml")
if err != nil {
t.Fatalf(err.Error())
}

View file

@ -2,7 +2,6 @@ package csconfig
import (
"fmt"
"io/ioutil"
"os"
"github.com/crowdsecurity/crowdsec/pkg/types"
@ -37,7 +36,7 @@ func (c *LocalApiServerCfg) LoadConsoleConfig() error {
return nil
}
yamlFile, err := ioutil.ReadFile(c.ConsoleConfigPath)
yamlFile, err := os.ReadFile(c.ConsoleConfigPath)
if err != nil {
return fmt.Errorf("reading console config file '%s': %s", c.ConsoleConfigPath, err)
}

View file

@ -4,7 +4,6 @@ package csplugin
import (
"encoding/json"
"io/ioutil"
"os"
"os/exec"
"path"
@ -264,7 +263,7 @@ func TestBrokerInit(t *testing.T) {
func readconfig(t *testing.T, path string) ([]byte, PluginConfig) {
var config PluginConfig
orig, err := ioutil.ReadFile("tests/notifications/dummy.yaml")
orig, err := os.ReadFile("tests/notifications/dummy.yaml")
if err != nil {
t.Fatalf("unable to read config file %s : %s", path, err)
}
@ -279,7 +278,7 @@ func writeconfig(t *testing.T, config PluginConfig, path string) {
if err != nil {
t.Fatalf("unable to marshal config file : %s", err)
}
if err := ioutil.WriteFile(path, data, 0644); err != nil {
if err := os.WriteFile(path, data, 0644); err != nil {
t.Fatalf("unable to write config file %s : %s", path, err)
}
}
@ -311,7 +310,7 @@ func TestBrokerNoThreshold(t *testing.T) {
pb.PluginChannel <- ProfileAlert{ProfileID: uint(0), Alert: &models.Alert{}}
time.Sleep(200 * time.Millisecond)
//we expect one now
content, err := ioutil.ReadFile("./out")
content, err := os.ReadFile("./out")
if err != nil {
log.Errorf("Error reading file: %s", err)
}
@ -325,7 +324,7 @@ func TestBrokerNoThreshold(t *testing.T) {
pb.PluginChannel <- ProfileAlert{ProfileID: uint(0), Alert: &models.Alert{}}
time.Sleep(200 * time.Millisecond)
//we expect one again, as we cleaned the file
content, err = ioutil.ReadFile("./out")
content, err = os.ReadFile("./out")
if err != nil {
log.Errorf("Error reading file: %s", err)
}
@ -371,14 +370,14 @@ func TestBrokerRunGroupAndTimeThreshold_TimeFirst(t *testing.T) {
assert.NoFileExists(t, "./out")
time.Sleep(1 * time.Second)
//after 1 seconds, we should have data
content, err := ioutil.ReadFile("./out")
content, err := os.ReadFile("./out")
assert.NoError(t, err)
var alerts []models.Alert
err = json.Unmarshal(content, &alerts)
assert.NoError(t, err)
assert.Equal(t, 3, len(alerts))
//restore config
if err := ioutil.WriteFile("tests/notifications/dummy.yaml", raw, 0644); err != nil {
if err := os.WriteFile("tests/notifications/dummy.yaml", raw, 0644); err != nil {
t.Fatalf("unable to write config file %s", err)
}
}
@ -418,7 +417,7 @@ func TestBrokerRunGroupAndTimeThreshold_CountFirst(t *testing.T) {
pb.PluginChannel <- ProfileAlert{ProfileID: uint(0), Alert: &models.Alert{}}
time.Sleep(100 * time.Millisecond)
//and now we should
content, err := ioutil.ReadFile("./out")
content, err := os.ReadFile("./out")
if err != nil {
log.Errorf("Error reading file: %s", err)
}
@ -427,7 +426,7 @@ func TestBrokerRunGroupAndTimeThreshold_CountFirst(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, 4, len(alerts))
//restore config
if err := ioutil.WriteFile("tests/notifications/dummy.yaml", raw, 0644); err != nil {
if err := os.WriteFile("tests/notifications/dummy.yaml", raw, 0644); err != nil {
t.Fatalf("unable to write config file %s", err)
}
}
@ -467,7 +466,7 @@ func TestBrokerRunGroupThreshold(t *testing.T) {
pb.PluginChannel <- ProfileAlert{ProfileID: uint(0), Alert: &models.Alert{}}
time.Sleep(100 * time.Millisecond)
//and now we should
content, err := ioutil.ReadFile("./out")
content, err := os.ReadFile("./out")
if err != nil {
log.Errorf("Error reading file: %s", err)
}
@ -476,7 +475,7 @@ func TestBrokerRunGroupThreshold(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, 4, len(alerts))
//restore config
if err := ioutil.WriteFile("tests/notifications/dummy.yaml", raw, 0644); err != nil {
if err := os.WriteFile("tests/notifications/dummy.yaml", raw, 0644); err != nil {
t.Fatalf("unable to write config file %s", err)
}
}
@ -512,7 +511,7 @@ func TestBrokerRunTimeThreshold(t *testing.T) {
assert.NoFileExists(t, "./out")
time.Sleep(1 * time.Second)
//and now we should
content, err := ioutil.ReadFile("./out")
content, err := os.ReadFile("./out")
if err != nil {
log.Errorf("Error reading file: %s", err)
}
@ -521,7 +520,7 @@ func TestBrokerRunTimeThreshold(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, 1, len(alerts))
//restore config
if err := ioutil.WriteFile("tests/notifications/dummy.yaml", raw, 0644); err != nil {
if err := os.WriteFile("tests/notifications/dummy.yaml", raw, 0644); err != nil {
t.Fatalf("unable to write config file %s", err)
}
}
@ -553,7 +552,7 @@ func TestBrokerRunSimple(t *testing.T) {
pb.PluginChannel <- ProfileAlert{ProfileID: uint(0), Alert: &models.Alert{}}
time.Sleep(time.Millisecond * 200)
content, err := ioutil.ReadFile("./out")
content, err := os.ReadFile("./out")
if err != nil {
log.Errorf("Error reading file: %s", err)
}

View file

@ -2,7 +2,6 @@ package cstest
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
@ -58,7 +57,7 @@ func NewHubTest(hubPath string, crowdsecPath string, cscliPath string) (HubTest,
}
hubIndexFile := filepath.Join(hubPath, ".index.json")
bidx, err := ioutil.ReadFile(hubIndexFile)
bidx, err := os.ReadFile(hubIndexFile)
if err != nil {
return HubTest{}, fmt.Errorf("unable to read index file: %s", err)
}
@ -98,7 +97,7 @@ func (h *HubTest) LoadTestItem(name string) (*HubTestItem, error) {
}
func (h *HubTest) LoadAllTests() error {
testsFolder, err := ioutil.ReadDir(h.HubTestPath)
testsFolder, err := os.ReadDir(h.HubTestPath)
if err != nil {
return err
}

View file

@ -2,7 +2,6 @@ package cstest
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
@ -93,7 +92,7 @@ func NewTest(name string, hubTest *HubTest) (*HubTestItem, error) {
// read test configuration file
configFileData := &HubTestItemConfig{}
yamlFile, err := ioutil.ReadFile(configFilePath)
yamlFile, err := os.ReadFile(configFilePath)
if err != nil {
log.Printf("no config file found in '%s': %v", testPath, err)
}

View file

@ -3,7 +3,7 @@ package cstest
import (
"bufio"
"fmt"
"io/ioutil"
"io"
"os"
"regexp"
"sort"
@ -260,7 +260,7 @@ func LoadParserDump(filepath string) (*ParserResults, error) {
}
defer dumpData.Close()
results, err := ioutil.ReadAll(dumpData)
results, err := io.ReadAll(dumpData)
if err != nil {
return nil, err
}

View file

@ -3,7 +3,7 @@ package cstest
import (
"bufio"
"fmt"
"io/ioutil"
"io"
"os"
"regexp"
"sort"
@ -237,7 +237,7 @@ func LoadBucketPourDump(filepath string) (*BucketPourInfo, error) {
}
defer dumpData.Close()
results, err := ioutil.ReadAll(dumpData)
results, err := io.ReadAll(dumpData)
if err != nil {
return nil, err
}
@ -258,7 +258,7 @@ func LoadScenarioDump(filepath string) (*BucketResults, error) {
}
defer dumpData.Close()
results, err := ioutil.ReadAll(dumpData)
results, err := io.ReadAll(dumpData)
if err != nil {
return nil, err
}

View file

@ -2,7 +2,6 @@ package cstest
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
@ -11,12 +10,12 @@ import (
)
func Copy(sourceFile string, destinationFile string) error {
input, err := ioutil.ReadFile(sourceFile)
input, err := os.ReadFile(sourceFile)
if err != nil {
return err
}
err = ioutil.WriteFile(destinationFile, input, 0644)
err = os.WriteFile(destinationFile, input, 0644)
if err != nil {
return err
}
@ -73,7 +72,7 @@ func CopyDir(src string, dest string) error {
return err
}
files, err := ioutil.ReadDir(src)
files, err := os.ReadDir(src)
if err != nil {
return err
}
@ -91,13 +90,13 @@ func CopyDir(src string, dest string) error {
if !f.IsDir() {
content, err := ioutil.ReadFile(src + "/" + f.Name())
content, err := os.ReadFile(src + "/" + f.Name())
if err != nil {
return err
}
err = ioutil.WriteFile(dest+"/"+f.Name(), content, 0755)
err = os.WriteFile(dest+"/"+f.Name(), content, 0755)
if err != nil {
return err

View file

@ -3,7 +3,6 @@ package cwhub
import (
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
"path/filepath"
@ -391,7 +390,7 @@ func (t *mockTransport) RoundTrip(req *http.Request) (*http.Response, error) {
log.Fatalf("unexpected url :/ %s", req.URL.Path)
}
response.Body = ioutil.NopCloser(strings.NewReader(responseBody))
response.Body = io.NopCloser(strings.NewReader(responseBody))
return response, nil
}

View file

@ -5,7 +5,6 @@ import (
"crypto/sha256"
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
"path"
@ -48,11 +47,11 @@ func DownloadHubIdx(hub *csconfig.Hub) ([]byte, error) {
if err != nil {
return nil, errors.Wrap(err, "failed http request for hub index")
}
if resp.StatusCode != 200 {
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("bad http code %d while requesting %s", resp.StatusCode, req.URL.String())
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, errors.Wrap(err, "failed to read request answer for hub index")
}
@ -152,11 +151,11 @@ func DownloadItem(hub *csconfig.Hub, target Item, overwrite bool) (Item, error)
if err != nil {
return target, errors.Wrap(err, fmt.Sprintf("while downloading %s", req.URL.String()))
}
if resp.StatusCode != 200 {
if resp.StatusCode != http.StatusOK {
return target, fmt.Errorf("bad http code %d for %s", resp.StatusCode, req.URL.String())
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
body, err := io.ReadAll(resp.Body)
if err != nil {
return target, errors.Wrap(err, fmt.Sprintf("while reading %s", req.URL.String()))
}

View file

@ -3,7 +3,6 @@ package cwhub
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"sort"
@ -357,7 +356,7 @@ func GetHubIdx(hub *csconfig.Hub) error {
return fmt.Errorf("no configuration found for hub")
}
log.Debugf("loading hub idx %s", hub.HubIndexFile)
bidx, err := ioutil.ReadFile(hub.HubIndexFile)
bidx, err := os.ReadFile(hub.HubIndexFile)
if err != nil {
return errors.Wrap(err, "unable to read index file")
}

View file

@ -6,7 +6,6 @@ import (
"fmt"
"html/template"
"io"
"io/ioutil"
"os"
"reflect"
"sync"
@ -44,7 +43,7 @@ func TestBucket(t *testing.T) {
}
} else {
wg := new(sync.WaitGroup)
fds, err := ioutil.ReadDir("./tests/")
fds, err := os.ReadDir("./tests/")
if err != nil {
t.Fatalf("Unable to read test directory : %s", err)
}
@ -91,7 +90,7 @@ func testOneBucket(t *testing.T, dir string, tomb *tomb.Tomb) error {
/*load the scenarios*/
stagecfg = dir + "/scenarios.yaml"
if stagefiles, err = ioutil.ReadFile(stagecfg); err != nil {
if stagefiles, err = os.ReadFile(stagecfg); err != nil {
t.Fatalf("Failed to load stage file %s : %s", stagecfg, err)
}

View file

@ -4,7 +4,6 @@ import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
@ -355,7 +354,7 @@ func LoadBucket(bucketFactory *BucketFactory, tomb *tomb.Tomb) error {
func LoadBucketsState(file string, buckets *Buckets, bucketFactories []BucketFactory) error {
var state map[string]Leaky
body, err := ioutil.ReadFile(file)
body, err := os.ReadFile(file)
if err != nil {
return fmt.Errorf("can't state file %s : %s", file, err)
}

View file

@ -3,7 +3,6 @@ package leakybucket
import (
"encoding/json"
"fmt"
"io/ioutil"
"math"
"os"
"time"
@ -87,7 +86,7 @@ func DumpBucketsStateAt(deadline time.Time, outputdir string, buckets *Buckets)
if outputdir == "" {
return "", fmt.Errorf("empty output dir for dump bucket state")
}
tmpFd, err := ioutil.TempFile(os.TempDir(), "crowdsec-buckets-dump-")
tmpFd, err := os.CreateTemp(os.TempDir(), "crowdsec-buckets-dump-")
if err != nil {
return "", fmt.Errorf("failed to create temp file : %s", err)
}

View file

@ -6,7 +6,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
"path"
@ -109,7 +108,7 @@ func NewMetabase(configPath string, containerName string) (*Metabase, error) {
}
func (m *Metabase) LoadConfig(configPath string) error {
yamlFile, err := ioutil.ReadFile(configPath)
yamlFile, err := os.ReadFile(configPath)
if err != nil {
return err
}
@ -303,7 +302,7 @@ func (m *Metabase) DumpConfig(path string) error {
if err != nil {
return err
}
return ioutil.WriteFile(path, data, 0600)
return os.WriteFile(path, data, 0600)
}
func (m *Metabase) DownloadDatabase(force bool) error {
@ -329,11 +328,11 @@ func (m *Metabase) DownloadDatabase(force bool) error {
if err != nil {
return fmt.Errorf("failed request to fetch metabase db : %s", err)
}
if resp.StatusCode != 200 {
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("got http %d while requesting metabase db %s, stop", resp.StatusCode, m.InternalDBURL)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
body, err := io.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("failed request read while fetching metabase db : %s", err)
}

View file

@ -5,7 +5,6 @@ import (
"fmt"
"html/template"
"io"
"io/ioutil"
"os"
"sort"
"strings"
@ -39,7 +38,7 @@ func TestParser(t *testing.T) {
t.Fatalf("Test '%s' failed : %s", envSetting, err)
}
} else {
fds, err := ioutil.ReadDir("./tests/")
fds, err := os.ReadDir("./tests/")
if err != nil {
t.Fatalf("Unable to read test directory : %s", err)
}
@ -72,7 +71,7 @@ func BenchmarkParser(t *testing.B) {
t.Fatalf("Test '%s' failed : %s", envSetting, err)
}
} else {
fds, err := ioutil.ReadDir("./tests/")
fds, err := os.ReadDir("./tests/")
if err != nil {
t.Fatalf("Unable to read test directory : %s", err)
}
@ -99,7 +98,7 @@ func testOneParser(pctx *UnixParserCtx, ectx EnricherCtx, dir string, b *testing
)
log.Warningf("testing %s", dir)
parser_cfg_file := fmt.Sprintf("%s/parsers.yaml", dir)
cfg, err := ioutil.ReadFile(parser_cfg_file)
cfg, err := os.ReadFile(parser_cfg_file)
if err != nil {
return fmt.Errorf("failed opening %s : %s", parser_cfg_file, err)
}

View file

@ -2,7 +2,7 @@ package parser
import (
"fmt"
"io/ioutil"
"os"
"path"
"github.com/crowdsecurity/crowdsec/pkg/csconfig"
@ -31,7 +31,7 @@ type Parsers struct {
func Init(c map[string]interface{}) (*UnixParserCtx, error) {
r := UnixParserCtx{}
r.Grok = grokky.NewBase()
files, err := ioutil.ReadDir(c["patterns"].(string))
files, err := os.ReadDir(c["patterns"].(string))
if err != nil {
return nil, err
}

View file

@ -2,7 +2,7 @@ package types
import (
"fmt"
"io/ioutil"
"io"
"net/http"
"os"
"path"
@ -33,12 +33,12 @@ func downloadFile(url string, destPath string) error {
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
body, err := io.ReadAll(resp.Body)
if err != nil {
return err
}
if resp.StatusCode != 200 {
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("download response 'HTTP %d' : %s", resp.StatusCode, string(body))
}

View file

@ -1,7 +1,6 @@
package types
import (
"io/ioutil"
"os"
"testing"
@ -29,7 +28,7 @@ func TestDownladFile(t *testing.T) {
)
err := downloadFile("https://example.com/xx", examplePath)
assert.NoError(t, err)
content, err := ioutil.ReadFile(examplePath)
content, err := os.ReadFile(examplePath)
assert.Equal(t, "example content oneoneone", string(content))
assert.NoError(t, err)
//bad uri

View file

@ -6,7 +6,6 @@ import (
"encoding/gob"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"runtime/debug"
@ -100,7 +99,7 @@ func Clone(a, b interface{}) error {
}
func WriteStackTrace(iErr interface{}) string {
tmpfile, err := ioutil.TempFile("", "crowdsec-crash.*.txt")
tmpfile, err := os.CreateTemp("", "crowdsec-crash.*.txt")
if err != nil {
log.Fatal(err)
}

View file

@ -22,7 +22,7 @@ package yamlpatch
import (
"bytes"
"io/ioutil"
"os"
"strings"
"testing"
@ -36,7 +36,7 @@ func trimcr(s string) string {
}
func mustRead(t testing.TB, fname string) []byte {
contents, err := ioutil.ReadFile(fname)
contents, err := os.ReadFile(fname)
require.NoError(t, err, "failed to read file: %s", fname)
return contents
}

View file

@ -5,7 +5,7 @@ import (
"context"
"crypto/tls"
"fmt"
"io/ioutil"
"io"
"net/http"
"os"
@ -71,7 +71,7 @@ func (s *HTTPPlugin) Notify(ctx context.Context, notification *protobufs.Notific
}
defer resp.Body.Close()
respData, err := ioutil.ReadAll(resp.Body)
respData, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("failed to read response body got error %s", err)
}

View file

@ -5,7 +5,7 @@ import (
"crypto/tls"
"encoding/json"
"fmt"
"io/ioutil"
"io"
"net/http"
"os"
"strings"
@ -71,13 +71,13 @@ func (s *Splunk) Notify(ctx context.Context, notification *protobufs.Notificatio
}
if resp.StatusCode != 200 {
content, err := ioutil.ReadAll(resp.Body)
content, err := io.ReadAll(resp.Body)
if err != nil {
return &protobufs.Empty{}, fmt.Errorf("got non 200 response and failed to read error %s", err)
}
return &protobufs.Empty{}, fmt.Errorf("got non 200 response %s", string(content))
}
respData, err := ioutil.ReadAll(resp.Body)
respData, err := io.ReadAll(resp.Body)
if err != nil {
return &protobufs.Empty{}, fmt.Errorf("failed to read response body got error %s", err)
}