runner

package
v0.0.0-...-9e1ed11 Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2026 License: BSD-2-Clause Imports: 58 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrDnstapMinimiserRunning is returned when Run is called concurrently.
	ErrDnstapMinimiserRunning = errors.New("dnstap minimiser is already running")
	// ErrDnstapMinimiserAlreadyRun is returned when Run is called after a prior run.
	ErrDnstapMinimiserAlreadyRun = errors.New("dnstap minimiser has already run")
	// ErrNilConfigProvider is returned when a nil ConfigProvider is supplied.
	ErrNilConfigProvider = errors.New("nil config provider")
	// ErrNilLogger is returned when a nil logger is supplied.
	ErrNilLogger = errors.New("nil logger")
	// ErrNilRunContext is returned when Run is called with a nil context.
	ErrNilRunContext = errors.New("nil run context")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	ConfigFile                    string `mapstructure:"config-file" validate:"required"`
	DisableSessionFiles           bool   `mapstructure:"disable-session-files"`
	DisableHistogramSender        bool   `mapstructure:"disable-histogram-sender" reload:"true"`
	DisableMQTT                   bool   `mapstructure:"disable-mqtt"`
	DisableMQTTFilequeue          bool   `mapstructure:"disable-mqtt-filequeue"`
	EnableManualParquetRotation   bool   `mapstructure:"enable-manual-parquet-rotation"`
	PebbleSync                    bool   `mapstructure:"pebble-sync" reload:"true"`
	InputUnix                     string `mapstructure:"input-unix" validate:"required_without_all=InputTCP InputTLS,excluded_with=InputTCP InputTLS"`
	InputTCP                      string `mapstructure:"input-tcp" validate:"required_without_all=InputUnix InputTLS,excluded_with=InputUnix InputTLS"`
	InputTLS                      string `mapstructure:"input-tls" validate:"required_without_all=InputUnix InputTCP,excluded_with=InputUnix InputTCP"`
	InputTLSCertFile              string `mapstructure:"input-tls-cert-file" validate:"required_with=InputTLS"`
	InputTLSKeyFile               string `mapstructure:"input-tls-key-file" validate:"required_with=InputTLS"`
	InputTLSClientCAFile          string `mapstructure:"input-tls-client-ca-file"`
	CryptopanKey                  string `mapstructure:"cryptopan-key" validate:"required" reload:"true"`
	CryptopanKeySalt              string `mapstructure:"cryptopan-key-salt" validate:"required" reload:"true"`
	WellKnownDomainsFile          string `mapstructure:"well-known-domains-file" validate:"required"`
	HistogramHLLExplicitThreshold int    `mapstructure:"histogram-hll-explicit-threshold" validate:"required,gte=0"`
	IgnoredClientIPsFile          string `mapstructure:"ignored-client-ips-file" reload:"true"`
	IgnoredQuestionNamesFile      string `mapstructure:"ignored-question-names-file" reload:"true"`
	DataDir                       string `mapstructure:"data-dir" validate:"required"`
	MinimiserWorkers              int    `mapstructure:"minimiser-workers"`
	MQTTSigningKeyFile            string `mapstructure:"mqtt-signing-key-file" validate:"required_without=DisableMQTT"`
	MQTTClientKeyFile             string `mapstructure:"mqtt-client-key-file" validate:"required_without=DisableMQTT" reload:"true"`
	MQTTClientCertFile            string `mapstructure:"mqtt-client-cert-file" validate:"required_without=DisableMQTT" reload:"true"`
	MQTTServer                    string `mapstructure:"mqtt-server" validate:"required_without=DisableMQTT"`
	MQTTCAFile                    string `mapstructure:"mqtt-ca-file"`
	MQTTKeepalive                 uint16 `mapstructure:"mqtt-keepalive" validate:"required_without=DisableMQTT"`
	MQTTSignWorkers               int    `mapstructure:"mqtt-sign-workers"`
	QnameSeenEntries              int    `mapstructure:"qname-seen-entries"`
	CryptopanAddressEntries       int    `mapstructure:"cryptopan-address-entries" validate:"gte=0"`
	NewQnameBuffer                int    `mapstructure:"newqname-buffer"`
	HTTPCAFile                    string `mapstructure:"http-ca-file"`
	HTTPSigningKeyFile            string `mapstructure:"http-signing-key-file" validate:"required_without=DisableHistogramSender"`
	HTTPClientKeyFile             string `mapstructure:"http-client-key-file" validate:"required_without=DisableHistogramSender" reload:"true"`
	HTTPClientCertFile            string `mapstructure:"http-client-cert-file" validate:"required_without=DisableHistogramSender" reload:"true"`
	HTTPURL                       string `mapstructure:"http-url" validate:"required_without=DisableHistogramSender"`
	Debug                         bool   `mapstructure:"debug"`
	DebugDnstapFilename           string `mapstructure:"debug-dnstap-filename"`
	DebugEnableBlockProfiling     bool   `mapstructure:"debug-enable-blockprofiling"`
	DebugEnableMutexProfiling     bool   `mapstructure:"debug-enable-mutexprofiling"`
}

Config contains all runtime configuration for DnstapMinimiser.

The struct tags are part of the Viper-backed CLI contract and stay in sync with the flags in pkg/cmd.

type ConfigProvider

type ConfigProvider interface {
	GetConfig() (Config, error)
}

ConfigProvider supplies the current runner configuration.

Implementations must be safe to call from the runner's config reload goroutine while DnstapMinimiser.Run is active.

type DnstapMinimiser

type DnstapMinimiser struct {
	// contains filtered or unexported fields
}

DnstapMinimiser runs the Edge DNSTAP Minimiser service.

Construct instances with NewDnstapMinimiser. A DnstapMinimiser is single-use: one instance supports exactly one DnstapMinimiser.Run lifecycle. Concurrent Run calls return ErrDnstapMinimiserRunning; calls after a prior Run has started return ErrDnstapMinimiserAlreadyRun.

func NewDnstapMinimiser

func NewDnstapMinimiser(provider ConfigProvider, logger *slog.Logger, opts ...DnstapMinimiserOption) (*DnstapMinimiser, error)

NewDnstapMinimiser constructs a DnstapMinimiser.

The returned service is ready to run but has no active run context until DnstapMinimiser.Run is called.

func (*DnstapMinimiser) Run

func (edm *DnstapMinimiser) Run(ctx context.Context) error

Run starts the minimiser and blocks until it stops.

Run is not reentrant. It returns startup and runtime errors directly. When ctx is cancelled after startup, workers drain in shutdown order and Run returns nil.

type DnstapMinimiserOption

type DnstapMinimiserOption func(*dnstapMinimiserOptions)

DnstapMinimiserOption customizes a DnstapMinimiser at construction time.

func WithLoggerLevel

func WithLoggerLevel(loggerLevel *slog.LevelVar) DnstapMinimiserOption

WithLoggerLevel sets the mutable log level used by DnstapMinimiser.Run.

type ViperConfigProvider

type ViperConfigProvider struct{}

ViperConfigProvider reads Config from the package-level Viper instance.

func (ViperConfigProvider) GetConfig

func (vc ViperConfigProvider) GetConfig() (Config, error)

GetConfig reads and validates Config from Viper.

Jump to

Keyboard shortcuts

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