parserconfig

package
v0.1.0-alpha.9 Latest Latest
Warning

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

Go to latest
Published: Dec 30, 2025 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Overview

Package parserconfig provides canonical configuration types for HAProxy parsing.

This package defines StructuredConfig - the single source of truth for parsed HAProxy configurations. Both CE and EE parsers return this type.

Index

Constants

View Source
const (
	FilterTypeWAF     = "waf"
	FilterTypeBotMgmt = "botmgmt"
)

EE filter type constants.

View Source
const (
	ActionWAFEvaluate     = "waf-evaluate"
	ActionBotMgmtEvaluate = "botmgmt-evaluate"
)

EE http-request action type constants.

View Source
const (
	DirectiveMaxmindLoad      = "maxmind-load"
	DirectiveMaxmindCacheSize = "maxmind-cache-size"
	DirectiveWAFLoad          = "waf-load"
)

EE global directive type constants.

View Source
const (
	KeywordProfile  = "profile"
	KeywordLearning = "learning"
	KeywordIf       = "if"
	KeywordUnless   = "unless"
)

Common keyword constants.

Variables

This section is empty.

Functions

This section is empty.

Types

type EEBackendData

type EEBackendData struct {
	Filters      []*EEFilter
	HTTPRequests []*EEHTTPRequestAction
}

EEBackendData holds EE-specific directives parsed from a backend section.

type EEFilter

type EEFilter struct {
	// Type is the filter type: "waf" or "botmgmt"
	Type string

	// Name is the filter instance name (for WAF filters)
	Name string

	// Profile is the profile reference (for botmgmt filters)
	Profile string

	// RulesFile is the path to rules file (for WAF filters)
	RulesFile string

	// Learning enables learning mode for WAF filters
	Learning bool

	// LogEnabled enables logging for the filter
	LogEnabled bool

	// Comment is the inline comment
	Comment string
}

EEFilter represents an Enterprise Edition filter directive.

type EEFrontendData

type EEFrontendData struct {
	Filters      []*EEFilter
	HTTPRequests []*EEHTTPRequestAction
}

EEFrontendData holds EE-specific directives parsed from a frontend section.

type EEGlobalData

type EEGlobalData struct {
	Directives []*EEGlobalDirective
}

EEGlobalData holds EE-specific directives parsed from the global section.

type EEGlobalDirective

type EEGlobalDirective struct {
	// Type is the directive type: "maxmind-load", "maxmind-cache-size", etc.
	Type string

	// Parts contains the directive arguments
	Parts []string

	// Comment is the inline comment
	Comment string
}

EEGlobalDirective represents an Enterprise Edition global directive.

type EEHTTPRequestAction

type EEHTTPRequestAction struct {
	// Type is the action type: "waf-evaluate" or "botmgmt-evaluate"
	Type string

	// Profile is the profile name for the action
	Profile string

	// Cond is the condition type: "if" or "unless"
	Cond string

	// CondTest is the ACL condition expression
	CondTest string

	// Comment is the inline comment
	Comment string
}

EEHTTPRequestAction represents an Enterprise Edition http-request action.

type StructuredConfig

type StructuredConfig struct {
	Global      *models.Global
	Defaults    []*models.Defaults
	Frontends   []*models.Frontend
	Backends    []*models.Backend
	Peers       []*models.PeerSection
	Resolvers   []*models.Resolver
	Mailers     []*models.MailersSection
	Caches      []*models.Cache
	Rings       []*models.Ring
	HTTPErrors  []*models.HTTPErrorsSection
	Userlists   []*models.Userlist
	Programs    []*models.Program
	LogForwards []*models.LogForward
	FCGIApps    []*models.FCGIApp
	CrtStores   []*models.CrtStore

	// Observability sections (v3.1+ features)
	LogProfiles []*models.LogProfile // log-profile sections
	Traces      *models.Traces       // traces section (singleton)

	// Certificate automation (v3.2+ features)
	AcmeProviders []*models.AcmeProvider // acme sections for Let's Encrypt/ACME automation

	UDPLBs          []*v32ee.UdpLbBase      // udp-lb sections
	WAFGlobal       *v32ee.WafGlobal        // waf-global section (singleton)
	WAFProfiles     []*v32ee.WafProfile     // waf-profile sections
	BotMgmtProfiles []*v32ee.BotmgmtProfile // botmgmt-profile sections
	Captchas        []*v32ee.Captcha        // captcha sections

	// EEFrontends maps frontend name to EE-specific directive data.
	// Contains filter waf/botmgmt, http-request waf-evaluate/botmgmt-evaluate, etc.
	EEFrontends map[string]*EEFrontendData

	// EEBackends maps backend name to EE-specific directive data.
	EEBackends map[string]*EEBackendData

	// EEGlobal holds EE-specific directives from the global section.
	// Contains maxmind-load, maxmind-cache-size, etc.
	EEGlobal *EEGlobalData
}

StructuredConfig holds all parsed configuration sections.

This is the canonical configuration type used by both CE and EE parsers. CE parser populates standard fields, leaving EE fields nil. EE parser populates all fields including enterprise-specific ones.

Usage:

// CE parsing
ceParser, _ := parser.New()
config, _ := ceParser.ParseFromString(configStr)
// config.WAFProfiles is nil, config.EEFrontends is nil

// EE parsing
eeParser := enterprise.NewParser()
config, _ := eeParser.ParseFromString(configStr)
// config.WAFProfiles and config.EEFrontends are populated

Jump to

Keyboard shortcuts

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