This commit is contained in:
alteredCoder 2022-04-08 15:15:23 +02:00
parent 1831a27600
commit 4f80e889d4
3 changed files with 45 additions and 34 deletions

View file

@ -39,6 +39,10 @@ func NewConsoleCmd() *cobra.Command {
}
log.Fatal("Local API is disabled, please run this command on the local API machine")
}
if err := csConfig.LoadCrowdsec(); err != nil {
log.Fatalf("Unable to load CrowdSec Agent: %s", err)
}
if csConfig.DisableAPI {
log.Fatal("Local API is disabled, please run this command on the local API machine")
}
@ -280,7 +284,7 @@ Disable given information push to the central API.`,
}
csConfig.API.Server.ConsoleConfig.LabelsToSend[key] = data
}
if err := csConfig.API.Server.DumpLabelConfigFile(); err != nil {
if err := csConfig.Crowdsec.DumpLabelConfigFile(); err != nil {
log.Fatalf(err.Error())
}
},

View file

@ -21,7 +21,6 @@ const (
var CONSOLE_CONFIGS = []string{SEND_CUSTOM_SCENARIOS, SEND_MANUAL_SCENARIOS, SEND_TAINTED_SCENARIOS, SEND_LABEL}
var DefaultConsoleConfigFilePath = DefaultConfigPath("console.yaml")
var DefaultLabelsConfigFilePath = DefaultConfigPath("console", "labels.yaml")
type ConsoleConfig struct {
ShareManualDecisions *bool `yaml:"share_manual_decisions"`
@ -52,15 +51,6 @@ func (c *LocalApiServerCfg) LoadConsoleConfig() error {
return fmt.Errorf("unmarshaling console config file '%s': %s", c.ConsoleConfigPath, err)
}
yamlFile, err = ioutil.ReadFile(DefaultLabelsConfigFilePath)
if err != nil {
return fmt.Errorf("reading console config file '%s': %s", DefaultLabelsConfigFilePath, err)
}
err = yaml.Unmarshal(yamlFile, c.ConsoleConfig.LabelsToSend)
if err != nil {
return fmt.Errorf("unmarshaling labels console config file '%s': %s", DefaultLabelsConfigFilePath, err)
}
if c.ConsoleConfig.ShareCustomScenarios == nil {
log.Debugf("no share_custom scenarios found, setting to true")
c.ConsoleConfig.ShareCustomScenarios = types.BoolPtr(true)
@ -103,18 +93,3 @@ func (c *LocalApiServerCfg) DumpConsoleConfig() error {
return nil
}
func (c *LocalApiServerCfg) DumpLabelConfigFile() error {
var out []byte
var err error
if out, err = yaml.Marshal(c.ConsoleConfig.LabelsToSend); err != nil {
return errors.Wrapf(err, "while marshaling ConsoleConfig (for %s)", DefaultLabelsConfigFilePath)
}
if err := os.WriteFile(DefaultLabelsConfigFilePath, out, 0600); err != nil {
return errors.Wrapf(err, "while dumping console config to %s", DefaultLabelsConfigFilePath)
}
return nil
}

View file

@ -2,18 +2,20 @@ package csconfig
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"github.com/pkg/errors"
log "github.com/sirupsen/logrus"
"gopkg.in/yaml.v2"
)
/*Configurations needed for crowdsec to load parser/scenarios/... + acquisition*/
type CrowdsecServiceCfg struct {
AcquisitionFilePath string `yaml:"acquisition_path,omitempty"`
AcquisitionDirPath string `yaml:"acquisition_dir,omitempty"`
AcquisitionFilePath string `yaml:"acquisition_path,omitempty"`
AcquisitionDirPath string `yaml:"acquisition_dir,omitempty"`
ConsoleLabelsPath string `yaml:"console_labels_path"`
AcquisitionFiles []string `yaml:"-"`
ParserRoutinesCount int `yaml:"parser_routines"`
BucketsRoutinesCount int `yaml:"buckets_routines"`
@ -24,13 +26,16 @@ type CrowdsecServiceCfg struct {
BucketStateDumpDir string `yaml:"state_output_dir,omitempty"` //if we need to unserialize buckets on shutdown
BucketsGCEnabled bool `yaml:"-"` //we need to garbage collect buckets when in forensic mode
HubDir string `yaml:"-"`
DataDir string `yaml:"-"`
ConfigDir string `yaml:"-"`
HubIndexFile string `yaml:"-"`
SimulationFilePath string `yaml:"-"`
HubDir string `yaml:"-"`
DataDir string `yaml:"-"`
ConfigDir string `yaml:"-"`
HubIndexFile string `yaml:"-"`
SimulationFilePath string `yaml:"-"`
LabelsToSend map[string][]string `yaml:"-"`
}
var DefaultLabelsConfigFilePath = DefaultConfigPath("console", "labels.yaml")
func (c *Config) LoadCrowdsec() error {
var err error
// Configuration paths are dependency to load crowdsec configuration
@ -89,6 +94,18 @@ func (c *Config) LoadCrowdsec() error {
if c.Crowdsec.OutputRoutinesCount <= 0 {
c.Crowdsec.OutputRoutinesCount = 1
}
if c.Crowdsec.ConsoleLabelsPath == "" {
c.Crowdsec.ConsoleLabelsPath = DefaultLabelsConfigFilePath
}
yamlFile, err := ioutil.ReadFile(c.Crowdsec.ConsoleLabelsPath)
if err != nil {
return fmt.Errorf("reading console label file '%s': %s", c.Crowdsec.ConsoleLabelsPath, err)
}
c.Crowdsec.LabelsToSend = make(map[string][]string, 0)
err = yaml.Unmarshal(yamlFile, c.Crowdsec.LabelsToSend)
if err != nil {
return fmt.Errorf("unmarshaling labels console config file '%s': %s", DefaultLabelsConfigFilePath, err)
}
var crowdsecCleanup = []*string{
&c.Crowdsec.AcquisitionFilePath,
@ -118,3 +135,18 @@ func (c *Config) LoadCrowdsec() error {
}
return nil
}
func (c *CrowdsecServiceCfg) DumpLabelConfigFile() error {
var out []byte
var err error
if out, err = yaml.Marshal(c.LabelsToSend); err != nil {
return errors.Wrapf(err, "while marshaling ConsoleConfig (for %s)", DefaultLabelsConfigFilePath)
}
if err := os.WriteFile(DefaultLabelsConfigFilePath, out, 0600); err != nil {
return errors.Wrapf(err, "while dumping console config to %s", DefaultLabelsConfigFilePath)
}
return nil
}