Allow to override statics in hubtest. (#1495)

This commit is contained in:
blotus 2022-04-29 14:24:41 +02:00 committed by GitHub
parent 64369b5c2b
commit 8f111680bf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 7 deletions

View file

@ -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)
}

View file

@ -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 {