Help us shape the future of Go! Take the 2026 Go Developer Survey

config

package
v2.2.8 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// TypePreferIPPreferIPv4 states that you prefer to use IPv4 addresses
	// but IPv6 is also possible.
	TypePreferIPPreferIPv4 = "prefer-ipv4"

	// TypePreferIPPreferIPv6 states that you prefer to use IPv6 addresses
	// but IPv4 is also possible.
	TypePreferIPPreferIPv6 = "prefer-ipv6"

	// TypePreferOnlyIPv4 states that you prefer to use IPv4 addresses
	// only.
	TypePreferOnlyIPv4 = "only-ipv4"

	// TypePreferOnlyIPv6 states that you prefer to use IPv6 addresses
	// only.
	TypePreferOnlyIPv6 = "only-ipv6"
)
View Source
const (
	// TypeStatsdTagFormatInfluxdb defines a tag format compatible with
	// InfluxDB.
	TypeStatsdTagFormatInfluxdb = "influxdb"

	// TypeStatsdTagFormatDatadog defines a tag format compatible with
	// DataDog.
	TypeStatsdTagFormatDatadog = "datadog"

	// TypeStatsdTagFormatGraphite defines a tag format compatible with
	// Graphite.
	TypeStatsdTagFormatGraphite = "graphite"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Debug                       TypeBool        `json:"debug"`
	AllowFallbackOnUnknownDC    TypeBool        `json:"allowFallbackOnUnknownDc"`
	Secret                      mtglib.Secret   `json:"secret"`
	BindTo                      TypeHostPort    `json:"bindTo"`
	ProxyProtocolListener       TypeBool        `json:"proxyProtocolListener"`
	PreferIP                    TypePreferIP    `json:"preferIp"`
	AutoUpdate                  TypeBool        `json:"autoUpdate"`
	DomainFrontingPort          TypePort        `json:"domainFrontingPort"`
	DomainFrontingIP            TypeIP          `json:"domainFrontingIp"`
	DomainFrontingProxyProtocol TypeBool        `json:"domainFrontingProxyProtocol"`
	TolerateTimeSkewness        TypeDuration    `json:"tolerateTimeSkewness"`
	Concurrency                 TypeConcurrency `json:"concurrency"`
	PublicIPv4                  TypeIP          `json:"publicIpv4"`
	PublicIPv6                  TypeIP          `json:"publicIpv6"`
	DomainFronting              struct {
		IP            TypeIP   `json:"ip"`
		Port          TypePort `json:"port"`
		ProxyProtocol TypeBool `json:"proxyProtocol"`
	} `json:"domainFronting"`
	Defense struct {
		AntiReplay struct {
			Optional

			MaxSize   TypeBytes     `json:"maxSize"`
			ErrorRate TypeErrorRate `json:"errorRate"`
		} `json:"antiReplay"`
		Blocklist    ListConfig `json:"blocklist"`
		Allowlist    ListConfig `json:"allowlist"`
		Doppelganger struct {
			URLs       []TypeHttpsURL  `json:"urls"`
			Repeats    TypeConcurrency `json:"repeats_per_raid"`
			UpdateEach TypeDuration    `json:"raid_each"`
			DRS        TypeBool        `json:"drs"`
		} `json:"doppelganger"`
	} `json:"defense"`
	Network struct {
		Timeout struct {
			TCP       TypeDuration `json:"tcp"`
			HTTP      TypeDuration `json:"http"`
			Idle      TypeDuration `json:"idle"`
			Handshake TypeDuration `json:"handshake"`
		} `json:"timeout"`
		KeepAlive struct {
			Disabled TypeBool        `json:"disabled"`
			Idle     TypeDuration    `json:"idle"`
			Interval TypeDuration    `json:"interval"`
			Count    TypeConcurrency `json:"count"`
		} `json:"keepAlive"`
		DOHIP   TypeIP         `json:"dohIp"`
		DNS     TypeDNSURI     `json:"dns"`
		Proxies []TypeProxyURL `json:"proxies"`
	} `json:"network"`
	Stats struct {
		StatsD struct {
			Optional

			Address      TypeHostPort        `json:"address"`
			MetricPrefix TypeMetricPrefix    `json:"metricPrefix"`
			TagFormat    TypeStatsdTagFormat `json:"tagFormat"`
		} `json:"statsd"`
		Prometheus struct {
			Optional

			BindTo       TypeHostPort     `json:"bindTo"`
			HTTPPath     TypeHTTPPath     `json:"httpPath"`
			MetricPrefix TypeMetricPrefix `json:"metricPrefix"`
		} `json:"prometheus"`
	} `json:"stats"`
}

func Parse

func Parse(rawData []byte) (*Config, error)

func (*Config) GetConcurrency added in v2.2.4

func (c *Config) GetConcurrency(defaultValue uint) uint

func (*Config) GetDNS added in v2.1.13

func (c *Config) GetDNS() *url.URL

func (*Config) GetDomainFrontingIP added in v2.1.11

func (c *Config) GetDomainFrontingIP(defaultValue net.IP) string

func (*Config) GetDomainFrontingPort added in v2.1.11

func (c *Config) GetDomainFrontingPort(defaultValue uint) uint

func (*Config) GetDomainFrontingProxyProtocol added in v2.1.11

func (c *Config) GetDomainFrontingProxyProtocol(defaultValue bool) bool

func (*Config) String

func (c *Config) String() string

func (*Config) Validate

func (c *Config) Validate() error

type ListConfig added in v2.1.3

type ListConfig struct {
	Optional

	DownloadConcurrency TypeConcurrency    `json:"downloadConcurrency"`
	URLs                []TypeBlocklistURI `json:"urls"`
	UpdateEach          TypeDuration       `json:"updateEach"`
}

type Optional added in v2.1.3

type Optional struct {
	Enabled TypeBool `json:"enabled"`
}

type TypeBlocklistURI

type TypeBlocklistURI struct {
	Value string
}

func (TypeBlocklistURI) Get added in v2.1.0

func (t TypeBlocklistURI) Get(defaultValue string) string

func (TypeBlocklistURI) IsRemote

func (t TypeBlocklistURI) IsRemote() bool

func (TypeBlocklistURI) MarshalText

func (t TypeBlocklistURI) MarshalText() ([]byte, error)

func (*TypeBlocklistURI) Set added in v2.1.0

func (t *TypeBlocklistURI) Set(value string) error

func (TypeBlocklistURI) String

func (t TypeBlocklistURI) String() string

func (*TypeBlocklistURI) UnmarshalText

func (t *TypeBlocklistURI) UnmarshalText(data []byte) error

type TypeBool added in v2.1.0

type TypeBool struct {
	Value bool
}

func (TypeBool) Get added in v2.1.0

func (t TypeBool) Get(defaultValue bool) bool

func (TypeBool) MarshalJSON added in v2.1.0

func (t TypeBool) MarshalJSON() ([]byte, error)

func (*TypeBool) Set added in v2.1.0

func (t *TypeBool) Set(data string) error

func (TypeBool) String added in v2.1.0

func (t TypeBool) String() string

func (*TypeBool) UnmarshalJSON added in v2.1.0

func (t *TypeBool) UnmarshalJSON(data []byte) error

type TypeBytes

type TypeBytes struct {
	Value units.Base2Bytes
}

func (TypeBytes) Get added in v2.1.0

func (t TypeBytes) Get(defaultValue uint) uint

func (TypeBytes) MarshalText

func (t TypeBytes) MarshalText() ([]byte, error)

func (*TypeBytes) Set added in v2.1.0

func (t *TypeBytes) Set(value string) error

func (TypeBytes) String

func (t TypeBytes) String() string

func (*TypeBytes) UnmarshalText

func (t *TypeBytes) UnmarshalText(data []byte) error

type TypeConcurrency added in v2.1.0

type TypeConcurrency struct {
	Value uint
}

func (TypeConcurrency) Get added in v2.1.0

func (t TypeConcurrency) Get(defaultValue uint) uint

func (TypeConcurrency) MarshalJSON added in v2.1.0

func (t TypeConcurrency) MarshalJSON() ([]byte, error)

func (*TypeConcurrency) Set added in v2.1.0

func (t *TypeConcurrency) Set(value string) error

func (TypeConcurrency) String added in v2.1.0

func (t TypeConcurrency) String() string

func (*TypeConcurrency) UnmarshalJSON added in v2.1.0

func (t *TypeConcurrency) UnmarshalJSON(data []byte) error

type TypeDC added in v2.1.9

type TypeDC struct {
	Value int
}

func (TypeDC) Get added in v2.1.9

func (t TypeDC) Get() int

func (TypeDC) MarshalJSON added in v2.1.9

func (t TypeDC) MarshalJSON() ([]byte, error)

func (*TypeDC) Set added in v2.1.9

func (t *TypeDC) Set(value string) error

func (TypeDC) String added in v2.1.9

func (t TypeDC) String() string

func (*TypeDC) UnmarshalJSON added in v2.1.9

func (t *TypeDC) UnmarshalJSON(data []byte) error

type TypeDNSURI added in v2.1.13

type TypeDNSURI struct {
	Value *url.URL
}

func (*TypeDNSURI) Get added in v2.1.13

func (t *TypeDNSURI) Get(defaultValue *url.URL) *url.URL

func (TypeDNSURI) MarshalText added in v2.1.13

func (t TypeDNSURI) MarshalText() ([]byte, error)

func (*TypeDNSURI) Set added in v2.1.13

func (t *TypeDNSURI) Set(value string) error

func (TypeDNSURI) String added in v2.1.13

func (t TypeDNSURI) String() string

func (*TypeDNSURI) UnmarshalText added in v2.1.13

func (t *TypeDNSURI) UnmarshalText(data []byte) error

type TypeDuration

type TypeDuration struct {
	Value time.Duration
}

func (TypeDuration) Get added in v2.1.0

func (t TypeDuration) Get(defaultValue time.Duration) time.Duration

func (TypeDuration) MarshalText

func (t TypeDuration) MarshalText() ([]byte, error)

func (*TypeDuration) Set added in v2.1.0

func (t *TypeDuration) Set(value string) error

func (TypeDuration) String

func (t TypeDuration) String() string

func (*TypeDuration) UnmarshalText

func (t *TypeDuration) UnmarshalText(data []byte) error

type TypeErrorRate

type TypeErrorRate struct {
	Value float64
}

func (TypeErrorRate) Get added in v2.1.0

func (t TypeErrorRate) Get(defaultValue float64) float64

func (TypeErrorRate) MarshalJSON added in v2.1.0

func (t TypeErrorRate) MarshalJSON() ([]byte, error)

func (*TypeErrorRate) Set added in v2.1.0

func (t *TypeErrorRate) Set(value string) error

func (TypeErrorRate) String

func (t TypeErrorRate) String() string

func (*TypeErrorRate) UnmarshalJSON

func (t *TypeErrorRate) UnmarshalJSON(data []byte) error

type TypeHTTPPath

type TypeHTTPPath struct {
	Value string
}

func (TypeHTTPPath) Get added in v2.1.0

func (t TypeHTTPPath) Get(defaultValue string) string

func (TypeHTTPPath) MarshalText

func (t TypeHTTPPath) MarshalText() ([]byte, error)

func (*TypeHTTPPath) Set added in v2.1.0

func (t *TypeHTTPPath) Set(value string) error

func (TypeHTTPPath) String

func (t TypeHTTPPath) String() string

func (*TypeHTTPPath) UnmarshalText

func (t *TypeHTTPPath) UnmarshalText(data []byte) error

type TypeHostPort

type TypeHostPort struct {
	Value string
	Host  string
	Port  uint
}

func (TypeHostPort) Get added in v2.1.0

func (t TypeHostPort) Get(defaultValue string) string

func (TypeHostPort) MarshalText

func (t TypeHostPort) MarshalText() ([]byte, error)

func (*TypeHostPort) Set added in v2.1.0

func (t *TypeHostPort) Set(value string) error

func (TypeHostPort) String

func (t TypeHostPort) String() string

func (*TypeHostPort) UnmarshalText

func (t *TypeHostPort) UnmarshalText(data []byte) error

type TypeHttpsURL added in v2.2.0

type TypeHttpsURL struct {
	Value *url.URL
}

func (*TypeHttpsURL) Get added in v2.2.0

func (t *TypeHttpsURL) Get(defaultValue *url.URL) *url.URL

func (TypeHttpsURL) MarshalText added in v2.2.0

func (t TypeHttpsURL) MarshalText() ([]byte, error)

func (*TypeHttpsURL) Set added in v2.2.0

func (t *TypeHttpsURL) Set(value string) error

func (TypeHttpsURL) String added in v2.2.0

func (t TypeHttpsURL) String() string

func (*TypeHttpsURL) UnmarshalText added in v2.2.0

func (t *TypeHttpsURL) UnmarshalText(data []byte) error

type TypeIP

type TypeIP struct {
	Value net.IP
}

func (*TypeIP) Get added in v2.1.0

func (t *TypeIP) Get(defaultValue net.IP) net.IP

func (TypeIP) MarshalText

func (t TypeIP) MarshalText() ([]byte, error)

func (*TypeIP) Set added in v2.1.0

func (t *TypeIP) Set(value string) error

func (TypeIP) String

func (t TypeIP) String() string

func (*TypeIP) UnmarshalText

func (t *TypeIP) UnmarshalText(data []byte) error

type TypeMetricPrefix

type TypeMetricPrefix struct {
	Value string
}

func (TypeMetricPrefix) Get added in v2.1.0

func (t TypeMetricPrefix) Get(defaultValue string) string

func (TypeMetricPrefix) MarshalText

func (t TypeMetricPrefix) MarshalText() ([]byte, error)

func (*TypeMetricPrefix) Set added in v2.1.0

func (t *TypeMetricPrefix) Set(value string) error

func (TypeMetricPrefix) String

func (t TypeMetricPrefix) String() string

func (*TypeMetricPrefix) UnmarshalText

func (t *TypeMetricPrefix) UnmarshalText(data []byte) error

type TypePort

type TypePort struct {
	Value uint
}

func (TypePort) Get added in v2.1.0

func (t TypePort) Get(defaultValue uint) uint

func (TypePort) MarshalJSON

func (t TypePort) MarshalJSON() ([]byte, error)

func (*TypePort) Set added in v2.1.0

func (t *TypePort) Set(value string) error

func (TypePort) String

func (t TypePort) String() string

func (*TypePort) UnmarshalJSON

func (t *TypePort) UnmarshalJSON(data []byte) error

type TypePreferIP

type TypePreferIP struct {
	Value string
}

func (*TypePreferIP) Get added in v2.1.0

func (t *TypePreferIP) Get(defaultValue string) string

func (TypePreferIP) MarshalText

func (t TypePreferIP) MarshalText() ([]byte, error)

func (*TypePreferIP) Set added in v2.1.0

func (t *TypePreferIP) Set(value string) error

func (TypePreferIP) String

func (t TypePreferIP) String() string

func (*TypePreferIP) UnmarshalText

func (t *TypePreferIP) UnmarshalText(data []byte) error

type TypeProxyURL added in v2.1.0

type TypeProxyURL struct {
	Value *url.URL
}

func (*TypeProxyURL) Get added in v2.1.0

func (t *TypeProxyURL) Get(defaultValue *url.URL) *url.URL

func (TypeProxyURL) MarshalText added in v2.1.0

func (t TypeProxyURL) MarshalText() ([]byte, error)

func (*TypeProxyURL) Set added in v2.1.0

func (t *TypeProxyURL) Set(value string) error

func (TypeProxyURL) String added in v2.1.0

func (t TypeProxyURL) String() string

func (*TypeProxyURL) UnmarshalText added in v2.1.0

func (t *TypeProxyURL) UnmarshalText(data []byte) error

type TypeStatsdTagFormat

type TypeStatsdTagFormat struct {
	Value string
}

func (TypeStatsdTagFormat) Get added in v2.1.0

func (t TypeStatsdTagFormat) Get(defaultValue string) string

func (*TypeStatsdTagFormat) MarshalText

func (t *TypeStatsdTagFormat) MarshalText() ([]byte, error)

func (*TypeStatsdTagFormat) Set added in v2.1.0

func (t *TypeStatsdTagFormat) Set(value string) error

func (*TypeStatsdTagFormat) String

func (t *TypeStatsdTagFormat) String() string

func (*TypeStatsdTagFormat) UnmarshalText

func (t *TypeStatsdTagFormat) UnmarshalText(data []byte) error

Jump to

Keyboard shortcuts

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