config

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package config defines runtime configuration structures and helpers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Parse

func Parse(ctx context.Context, dst *Config, path string, args map[string]any) error

Parse reads configuration from file and applies defaults from runtime args.

Types

type Config

type Config struct {
	Listen         string        `mapstructure:"listen" default:"{{ .args.listen }}" validate:"required,hostport"`
	UpdateInterval time.Duration `mapstructure:"interval" default:"{{ .args.interval }}" validate:"gt=0"`
	MaxWorkers     int           `mapstructure:"max_workers" default:"{{ .args.max_workers }}" validate:"gt=0"`
	HTTPListen     string        `mapstructure:"http_listen" default:"{{ .args.http_listen }}" validate:"omitempty,hostport"`
	Domains        []*ScanConfig `mapstructure:"domains" validate:"required,min=1"`
}

Config represents application-level settings.

func (*Config) Validate added in v0.1.0

func (cfg *Config) Validate() error

Validate checks whether the parsed configuration is usable.

type ScanConfig

type ScanConfig struct {
	Domain     string   `mapstructure:"domain" validate:"required,fqdn"`
	CIDRs      []string `mapstructure:"cidr" validate:"required,min=1,dive,cidr"`
	SNI        string   `mapstructure:"sni" default:"{{ .args.sni }}"`
	Timeout    int      `mapstructure:"timeout" default:"{{ .args.timeout }}" validate:"gt=0"`
	Port       int      `mapstructure:"port" default:"{{ .args.port }}" validate:"gte=1,lte=65535"`
	Path       string   `mapstructure:"path" default:"{{ .args.path }}" validate:"required,path"`
	StatusCode int      `mapstructure:"status_code" default:"{{ .args.status_code }}" validate:"gte=0,lte=599"`

	SamplesMinimum int     `mapstructure:"sample_min" default:"{{ .args.sample_min }}" validate:"gte=0"`
	SamplesMaximum int     `mapstructure:"sample_max" default:"{{ .args.sample_max }}" validate:"gte=0"`
	SamplesChance  float64 `mapstructure:"sample_chance" default:"{{ .args.sample_chance }}" validate:"gte=0,lte=1"`

	HTTPOnly bool   `mapstructure:"http_only" default:"{{ .args.http_only }}"`
	Program  string `mapstructure:"program"`

	Limit int `mapstructure:"result_limit" default:"4" validate:"gt=0"`
	// contains filtered or unexported fields
}

ScanConfig defines scan settings for a single domain.

func (*ScanConfig) BuildVM

func (sc *ScanConfig) BuildVM() (*vm.VM, error)

BuildVM creates and caches the execution VM for this scan configuration.

func (*ScanConfig) ReadCIDRs

func (sc *ScanConfig) ReadCIDRs() ([]*cidr.Iterator, error)

ReadCIDRs parses CIDR strings into iterators.

func (*ScanConfig) ReadCIDRsSamples

func (sc *ScanConfig) ReadCIDRsSamples() ([]iter.Seq[net.IP], error)

ReadCIDRsSamples builds sampled IP sequences from configured CIDRs.

func (*ScanConfig) Validate added in v0.1.0

func (sc *ScanConfig) Validate() error

Validate checks whether the per-domain scan configuration is usable.

Jump to

Keyboard shortcuts

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