mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-10 20:05:55 +02:00
Some checks are pending
Tests / sqlite (push) Waiting to run
Tests / mariadb (push) Waiting to run
Tests / mysql (push) Waiting to run
Tests / postgres (push) Waiting to run
Tests / hub (push) Waiting to run
Release Drafter / update_release_draft (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Test Docker images / test_flavor (debian) (push) Waiting to run
Test Docker images / test_flavor (slim) (push) Waiting to run
Go tests (windows) / Build + tests (push) Waiting to run
Build / Build + tests (push) Waiting to run
(push-master) Publish latest Docker images / dev-alpine (push) Waiting to run
(push-master) Publish latest Docker images / dev-debian (push) Waiting to run
73 lines
1.9 KiB
Go
73 lines
1.9 KiB
Go
package csconfig
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"path/filepath"
|
|
)
|
|
|
|
type ConfigurationPaths struct {
|
|
ConfigDir string `yaml:"config_dir"`
|
|
DataDir string `yaml:"data_dir,omitempty"`
|
|
SimulationFilePath string `yaml:"simulation_path,omitempty"`
|
|
HubIndexFile string `yaml:"index_path,omitempty"` // path of the .index.json
|
|
HubDir string `yaml:"hub_dir,omitempty"`
|
|
PluginDir string `yaml:"plugin_dir,omitempty"`
|
|
NotificationDir string `yaml:"notification_dir,omitempty"`
|
|
PatternDir string `yaml:"pattern_dir,omitempty"`
|
|
}
|
|
|
|
func (c *Config) loadConfigurationPaths() error {
|
|
var err error
|
|
|
|
if c.ConfigPaths == nil {
|
|
return errors.New("no configuration paths provided")
|
|
}
|
|
|
|
if c.ConfigPaths.ConfigDir == "" {
|
|
c.ConfigPaths.ConfigDir = filepath.Dir(c.FilePath)
|
|
}
|
|
|
|
if c.ConfigPaths.DataDir == "" {
|
|
return errors.New("please provide a data directory with the 'data_dir' directive in the 'config_paths' section")
|
|
}
|
|
|
|
if c.ConfigPaths.HubDir == "" {
|
|
c.ConfigPaths.HubDir = filepath.Join(c.ConfigPaths.ConfigDir, "hub")
|
|
}
|
|
|
|
if c.ConfigPaths.HubIndexFile == "" {
|
|
c.ConfigPaths.HubIndexFile = filepath.Join(c.ConfigPaths.HubDir, ".index.json")
|
|
}
|
|
|
|
if c.ConfigPaths.NotificationDir == "" {
|
|
c.ConfigPaths.NotificationDir = filepath.Join(c.ConfigPaths.ConfigDir, "notifications")
|
|
}
|
|
|
|
if c.ConfigPaths.PatternDir == "" {
|
|
c.ConfigPaths.PatternDir = filepath.Join(c.ConfigPaths.ConfigDir, "patterns")
|
|
}
|
|
|
|
configPathsCleanup := []*string{
|
|
&c.ConfigPaths.HubDir,
|
|
&c.ConfigPaths.HubIndexFile,
|
|
&c.ConfigPaths.ConfigDir,
|
|
&c.ConfigPaths.DataDir,
|
|
&c.ConfigPaths.SimulationFilePath,
|
|
&c.ConfigPaths.PluginDir,
|
|
&c.ConfigPaths.NotificationDir,
|
|
&c.ConfigPaths.PatternDir,
|
|
}
|
|
for _, k := range configPathsCleanup {
|
|
if *k == "" {
|
|
continue
|
|
}
|
|
|
|
*k, err = filepath.Abs(*k)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to get absolute path of '%s': %w", *k, err)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|