mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-11 12:25:53 +02:00
CTI API Helpers in expr (#1851)
* Add CTI API helpers in expr * Allow profiles to have an `on_error` option to profiles Co-authored-by: Sebastien Blot <sebastien@crowdsec.net>
This commit is contained in:
parent
0c35d9d43c
commit
4f29ce2ee7
20 changed files with 2301 additions and 9 deletions
|
@ -21,6 +21,7 @@ import (
|
|||
type APICfg struct {
|
||||
Client *LocalApiClientCfg `yaml:"client"`
|
||||
Server *LocalApiServerCfg `yaml:"server"`
|
||||
CTI *CTICfg `yaml:"cti"`
|
||||
}
|
||||
|
||||
type ApiCredentialsCfg struct {
|
||||
|
@ -45,6 +46,37 @@ type LocalApiClientCfg struct {
|
|||
InsecureSkipVerify *bool `yaml:"insecure_skip_verify"` // check if api certificate is bad or not
|
||||
}
|
||||
|
||||
type CTICfg struct {
|
||||
Key *string `yaml:"key,omitempty"`
|
||||
CacheTimeout *time.Duration `yaml:"cache_timeout,omitempty"`
|
||||
CacheSize *int `yaml:"cache_size,omitempty"`
|
||||
Enabled *bool `yaml:"enabled,omitempty"`
|
||||
LogLevel *log.Level `yaml:"log_level,omitempty"`
|
||||
}
|
||||
|
||||
func (a *CTICfg) Load() error {
|
||||
|
||||
if a.Key == nil {
|
||||
*a.Enabled = false
|
||||
}
|
||||
if a.Key != nil && *a.Key == "" {
|
||||
return fmt.Errorf("empty cti key")
|
||||
}
|
||||
if a.Enabled == nil {
|
||||
a.Enabled = new(bool)
|
||||
*a.Enabled = true
|
||||
}
|
||||
if a.CacheTimeout == nil {
|
||||
a.CacheTimeout = new(time.Duration)
|
||||
*a.CacheTimeout = 10 * time.Minute
|
||||
}
|
||||
if a.CacheSize == nil {
|
||||
a.CacheSize = new(int)
|
||||
*a.CacheSize = 100
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *OnlineApiClientCfg) Load() error {
|
||||
o.Credentials = new(ApiCredentialsCfg)
|
||||
fcontent, err := os.ReadFile(o.CredentialsFilePath)
|
||||
|
@ -92,7 +124,7 @@ func (l *LocalApiClientCfg) Load() error {
|
|||
apiclient.InsecureSkipVerify = *l.InsecureSkipVerify
|
||||
}
|
||||
|
||||
if l.Credentials.CACertPath != "" {
|
||||
if l.Credentials.CACertPath != "" {
|
||||
caCert, err := os.ReadFile(l.Credentials.CACertPath)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to load cacert")
|
||||
|
@ -230,6 +262,15 @@ func (c *Config) LoadAPIServer() error {
|
|||
return errors.Wrap(err, "loading online client credentials")
|
||||
}
|
||||
}
|
||||
if c.API.Server.OnlineClient == nil || c.API.Server.OnlineClient.Credentials == nil {
|
||||
log.Printf("push and pull to Central API disabled")
|
||||
}
|
||||
|
||||
if c.API.CTI != nil {
|
||||
if err := c.API.CTI.Load(); err != nil {
|
||||
return errors.Wrap(err, "loading CTI configuration")
|
||||
}
|
||||
}
|
||||
|
||||
if err := c.LoadDBConfig(); err != nil {
|
||||
return err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue