diff --git a/cmd/crowdsec-cli/explain.go b/cmd/crowdsec-cli/explain.go index 900a75104..5c7d24e3f 100644 --- a/cmd/crowdsec-cli/explain.go +++ b/cmd/crowdsec-cli/explain.go @@ -41,6 +41,7 @@ cscli explain --dsn "file://myfile.log" --type nginx fmt.Printf("Please provide --type flag\n") os.Exit(1) } + var f *os.File // we create a temporary log file if a log line has been provided if logLine != "" { @@ -83,6 +84,7 @@ cscli explain --dsn "file://myfile.log" --type nginx // rm the temporary log file if only a log line was provided if logLine != "" { + f.Close() if err := os.Remove(logFile); err != nil { log.Fatalf("unable to remove tmp log file '%s': %+v", logFile, err) } diff --git a/pkg/cstest/hubtest_item.go b/pkg/cstest/hubtest_item.go index daedde733..8f4b3a3c5 100644 --- a/pkg/cstest/hubtest_item.go +++ b/pkg/cstest/hubtest_item.go @@ -10,18 +10,21 @@ import ( "github.com/crowdsecurity/crowdsec/pkg/csconfig" "github.com/crowdsecurity/crowdsec/pkg/cwhub" + "github.com/crowdsecurity/crowdsec/pkg/parser" + "github.com/crowdsecurity/crowdsec/pkg/types" log "github.com/sirupsen/logrus" "gopkg.in/yaml.v2" ) type HubTestItemConfig struct { - Parsers []string `yaml:"parsers"` - Scenarios []string `yaml:"scenarios"` - PostOVerflows []string `yaml:"postoverflows"` - LogFile string `yaml:"log_file"` - LogType string `yaml:"log_type"` - Labels map[string]string `yaml:"labels"` - IgnoreParsers bool `yaml:"ignore_parsers"` // if we test a scenario, we don't want to assert on Parser + Parsers []string `yaml:"parsers"` + Scenarios []string `yaml:"scenarios"` + PostOVerflows []string `yaml:"postoverflows"` + LogFile string `yaml:"log_file"` + LogType string `yaml:"log_type"` + Labels map[string]string `yaml:"labels"` + IgnoreParsers bool `yaml:"ignore_parsers"` // if we test a scenario, we don't want to assert on Parser + OverrideStatics []types.ExtraField `yaml:"override_statics"` //Allow to override statics. Executed before s00 } type HubIndex struct { @@ -377,6 +380,22 @@ func (t *HubTestItem) InstallHub() error { } } + if len(t.Config.OverrideStatics) > 0 { + n := parser.Node{ + Name: "overrides", + Filter: "1==1", + Statics: t.Config.OverrideStatics, + } + b, err := yaml.Marshal(n) + if err != nil { + return fmt.Errorf("unable to marshal overrides: %s", err) + } + tgtFilename := fmt.Sprintf("%s/parsers/s00-raw/00_overrides.yaml", t.RuntimePath) + if err := os.WriteFile(tgtFilename, b, os.ModePerm); err != nil { + return fmt.Errorf("unable to write overrides to '%s': %s", tgtFilename, err) + } + } + // load installed hub err := cwhub.GetHubIdx(t.RuntimeHubConfig) if err != nil {