config

package
v0.0.0-...-ec844c3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2026 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CurrentConfigurationVersion = 2

	BHAPIEnvironmentVariablePrefix = "bhe"
)

Variables

View Source
var ErrInvalidConfigurationPath = errors.New("unable to find a configuration element by path")

Functions

func GenerateRandomBase64String

func GenerateRandomBase64String(n int) (string, error)

GenerateRandomBase64String returns a URL-safe, base64 encoded securely generated random string. It will return an error if the system's secure random number generator fails to function correctly, in which case the caller should not continue.

func GenerateSecureRandomString

func GenerateSecureRandomString(n int) (string, error)

func GetTextLoggerEnabled

func GetTextLoggerEnabled() bool

func HasConfigurationFile

func HasConfigurationFile(path string) (bool, error)

func SetValue

func SetValue(target any, path, value string) error

func SetValuesFromEnv

func SetValuesFromEnv(varPrefix string, target any, env []string) error

func WriteConfigurationFile

func WriteConfigurationFile(path string, config Configuration) error

Types

type Argon2Configuration

type Argon2Configuration struct {
	MemoryKibibytes uint32 `json:"memory_kibibytes"`
	NumIterations   uint32 `json:"num_iterations"`
	NumThreads      uint8  `json:"num_threads"`
}

func (Argon2Configuration) NewDigester

func (s Argon2Configuration) NewDigester() crypto.SecretDigester

type CollectorManifest

type CollectorManifest struct {
	Latest   string             `json:"latest"`
	Versions []CollectorVersion `json:"versions"`
}

type CollectorManifests

type CollectorManifests map[string]CollectorManifest

type CollectorVersion

type CollectorVersion struct {
	Version    string `json:"version"`
	SHA256Sum  string `json:"sha256sum"`
	Deprecated bool   `json:"deprecated"`
}

type Configuration

type Configuration struct {
	Version                         int                       `json:"version"`
	BindAddress                     string                    `json:"bind_addr"`
	SlowQueryThreshold              int64                     `json:"slow_query_threshold"`
	MaxGraphQueryCacheSize          int                       `json:"max_graphdb_cache_size"`
	MaxAPICacheSize                 int                       `json:"max_api_cache_size"`
	MetricsPort                     string                    `json:"metrics_port"`
	RootURL                         serde.URL                 `json:"root_url"`
	WorkDir                         string                    `json:"work_dir"`
	LogLevel                        string                    `json:"log_level"`
	LogPath                         string                    `json:"log_path"`
	TLS                             TLSConfiguration          `json:"tls"`
	GraphDriver                     string                    `json:"graph_driver"`
	Database                        DatabaseConfiguration     `json:"database"`
	Neo4J                           DatabaseConfiguration     `json:"neo4j"`
	Crypto                          CryptoConfiguration       `json:"crypto"`
	SAML                            SAMLConfiguration         `json:"saml"`
	DefaultAdmin                    DefaultAdminConfiguration `json:"default_admin"`
	CollectorsBucketURL             serde.URL                 `json:"collectors_bucket_url"`
	CollectorsBasePath              string                    `json:"collectors_base_path"`
	DatapipeInterval                int                       `json:"datapipe_interval"`
	EnableStartupWaitPeriod         bool                      `json:"enable_startup_wait_period"`
	EnableAPILogging                bool                      `json:"enable_api_logging"`
	EnableCypherMutations           bool                      `json:"enable_cypher_mutations"`
	DisableAnalysis                 bool                      `json:"disable_analysis"`
	DisableCypherComplexityLimit    bool                      `json:"disable_cypher_complexity_limit"`
	DisableIngest                   bool                      `json:"disable_ingest"`
	DisableMigrations               bool                      `json:"disable_migrations"`
	GraphQueryMemoryLimit           uint16                    `json:"graph_query_memory_limit"`
	EnableTextLogger                bool                      `json:"enable_text_logger"`
	RecreateDefaultAdmin            bool                      `json:"recreate_default_admin"`
	EnableUserAnalytics             bool                      `json:"enable_user_analytics"`
	ForceDownloadEmbeddedCollectors bool                      `json:"force_download_embedded_collectors"`
}

func GetConfiguration

func GetConfiguration(path string, defaultConfigFunc func() (Configuration, error)) (Configuration, error)

func NewDefaultConfiguration

func NewDefaultConfiguration() (Configuration, error)

NewDefaultConfiguration returns a new Configuration struct containing all documented configuration defaults.

func ParseConfiguration

func ParseConfiguration(content []byte) (Configuration, error)

func ReadConfigurationFile

func ReadConfigurationFile(path string) (Configuration, error)

func (Configuration) ClientLogDirectory

func (s Configuration) ClientLogDirectory() string

func (Configuration) CollectorsDirectory

func (s Configuration) CollectorsDirectory() string

func (Configuration) GetRootURLHost

func (s Configuration) GetRootURLHost() string

func (Configuration) RetainedFilesDirectory

func (s Configuration) RetainedFilesDirectory() string

func (Configuration) SaveCollectorManifests

func (s Configuration) SaveCollectorManifests() (CollectorManifests, error)

func (Configuration) TempDirectory

func (s Configuration) TempDirectory() string

type CryptoConfiguration

type CryptoConfiguration struct {
	JWT    JWTConfiguration    `json:"jwt"`
	Argon2 Argon2Configuration `json:"argon2"`
}

type DatabaseConfiguration

type DatabaseConfiguration struct {
	Connection            string `json:"connection"`
	Address               string `json:"addr"`
	Database              string `json:"database"`
	Username              string `json:"username"`
	Secret                string `json:"secret"`
	MaxConcurrentSessions int    `json:"max_concurrent_sessions"`
}

func (DatabaseConfiguration) Neo4jConnectionString

func (s DatabaseConfiguration) Neo4jConnectionString() string

func (DatabaseConfiguration) PostgreSQLConnectionString

func (s DatabaseConfiguration) PostgreSQLConnectionString() string

type DefaultAdminConfiguration

type DefaultAdminConfiguration struct {
	PrincipalName string `json:"principal_name"`
	Password      string `json:"password"`
	EmailAddress  string `json:"email_address"`
	FirstName     string `json:"first_name"`
	LastName      string `json:"last_name"`
	ExpireNow     bool   `json:"expire_now"`
}

func NewDefaultAdminConfiguration

func NewDefaultAdminConfiguration() (DefaultAdminConfiguration, error)

type JWTConfiguration

type JWTConfiguration struct {
	SigningKey string `json:"signing_key"`
}

func (*JWTConfiguration) SetSigningKeyBytes

func (s *JWTConfiguration) SetSigningKeyBytes(signingKeyBytes []byte)

func (JWTConfiguration) SigningKeyBytes

func (s JWTConfiguration) SigningKeyBytes() ([]byte, error)

type SAMLConfiguration

type SAMLConfiguration struct {
	ServiceProviderCertificate        string `json:"sp_cert"`
	ServiceProviderKey                string `json:"sp_key"`
	ServiceProviderCertificateCAChain string `json:"sp_ca_chain"`
}

type TLSConfiguration

type TLSConfiguration struct {
	CertFile string `json:"cert_file"`
	KeyFile  string `json:"key_file"`
}

func (TLSConfiguration) Enabled

func (s TLSConfiguration) Enabled() bool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL