pfsense

package
v0.20.0 Latest Latest
Warning

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

Go to latest
Published: May 30, 2025 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultURL              = "https://192.168.1.1"
	DefaultUsername         = "admin"
	DefaultTLSSkipVerify    = false
	DefaultRetryMinWait     = time.Second
	DefaultRetryMaxWait     = 5 * time.Second
	DefaultMaxAttempts      = 3
	DefaultConcurrentWrites = false

	StaticMappingMaxWINSServers = 2
	StaticMappingMaxDNSServers  = 4
)
View Source
const (
	DefaultDNSPort    = 53
	DefaultTLSDNSPort = 853
)
View Source
const MAC48Length = 6

Variables

View Source
var (
	ErrFailedRequest         = errors.New("failed request")
	ErrHTTPStatus            = errors.New("http status")
	ErrLoginFailed           = errors.New("login failed")
	ErrNotFound              = errors.New("not found")
	ErrUnableToParse         = errors.New("unable to parse")
	ErrUnableToScrapeHTML    = errors.New("unable to scrape HTML")
	ErrClientValidation      = errors.New("client validation")
	ErrServerValidation      = errors.New("server validation")
	ErrApplyOperationFailed  = errors.New("failed to apply")
	ErrGetOperationFailed    = errors.New("failed to get")
	ErrCreateOperationFailed = errors.New("failed to create")
	ErrUpdateOperationFailed = errors.New("failed to update")
	ErrDeleteOperationFailed = errors.New("failed to delete")
)

Functions

func CompareMACAddresses added in v0.17.0

func CompareMACAddresses(macAddress1 net.HardwareAddr, macAddress2 net.HardwareAddr) bool

func ParseMACAddress added in v0.17.0

func ParseMACAddress(macAddress string) (net.HardwareAddr, error)

func ValidateAlias added in v0.10.0

func ValidateAlias(alias string) error

func ValidateConfigFileName added in v0.10.0

func ValidateConfigFileName(configFileName string) error

func ValidateDNSLabel added in v0.10.0

func ValidateDNSLabel(dnsLabel string) error

used for hostname and host override name.

func ValidateDomain added in v0.10.0

func ValidateDomain(domain string) error

used for FQDN, domain search list, domains, etc note: this validation is fairly loose to align with pfSense

func ValidateIPAddress added in v0.10.0

func ValidateIPAddress(addr string, addrFamily string) error

func ValidateIPAddressPort added in v0.10.0

func ValidateIPAddressPort(addrPort string) error

func ValidateInterface added in v0.10.0

func ValidateInterface(iface string) error

func ValidateMACAddress added in v0.10.0

func ValidateMACAddress(macAddress string) error

func ValidateNetwork added in v0.10.0

func ValidateNetwork(network string) error

func ValidatePort added in v0.10.0

func ValidatePort(port string) error

func ValidatePortRange added in v0.10.0

func ValidatePortRange(portRange string) error

Types

type Client

type Client struct {
	Options *Options
	// contains filtered or unexported fields
}

func NewClient

func NewClient(ctx context.Context, opts *Options) (*Client, error)

func (*Client) ApplyDHCPv4Changes added in v0.12.0

func (pf *Client) ApplyDHCPv4Changes(ctx context.Context, iface string) error

func (*Client) ApplyDNSResolverChanges

func (pf *Client) ApplyDNSResolverChanges(ctx context.Context) error

func (*Client) CreateDHCPv4StaticMapping added in v0.12.0

func (pf *Client) CreateDHCPv4StaticMapping(ctx context.Context, staticMappingReq DHCPv4StaticMapping) (*DHCPv4StaticMapping, error)

func (*Client) CreateDNSResolverConfigFile

func (pf *Client) CreateDNSResolverConfigFile(ctx context.Context, configFileReq ConfigFile) (*ConfigFile, error)

func (*Client) CreateDNSResolverDomainOverride

func (pf *Client) CreateDNSResolverDomainOverride(ctx context.Context, domainOverrideReq DomainOverride) (*DomainOverride, error)

func (*Client) CreateDNSResolverHostOverride

func (pf *Client) CreateDNSResolverHostOverride(ctx context.Context, hostOverrideReq HostOverride) (*HostOverride, error)

func (*Client) CreateFirewallIPAlias added in v0.6.0

func (pf *Client) CreateFirewallIPAlias(ctx context.Context, ipAliasReq FirewallIPAlias) (*FirewallIPAlias, error)

func (*Client) CreateFirewallPortAlias added in v0.8.0

func (pf *Client) CreateFirewallPortAlias(ctx context.Context, portAliasReq FirewallPortAlias) (*FirewallPortAlias, error)

func (*Client) DeleteDHCPv4StaticMapping added in v0.12.0

func (pf *Client) DeleteDHCPv4StaticMapping(ctx context.Context, iface string, macAddress net.HardwareAddr) error

func (*Client) DeleteDNSResolverConfigFile

func (pf *Client) DeleteDNSResolverConfigFile(ctx context.Context, name string) error

func (*Client) DeleteDNSResolverDomainOverride

func (pf *Client) DeleteDNSResolverDomainOverride(ctx context.Context, domain string) error

func (*Client) DeleteDNSResolverHostOverride

func (pf *Client) DeleteDNSResolverHostOverride(ctx context.Context, fqdn string) error

func (*Client) DeleteFirewallIPAlias added in v0.6.0

func (pf *Client) DeleteFirewallIPAlias(ctx context.Context, name string) error

func (*Client) DeleteFirewallPortAlias added in v0.8.0

func (pf *Client) DeleteFirewallPortAlias(ctx context.Context, name string) error

func (*Client) ExecutePHPCommand added in v0.14.0

func (pf *Client) ExecutePHPCommand(ctx context.Context, command string, crud string) (any, error)

func (*Client) GetDHCPv4StaticMapping added in v0.12.0

func (pf *Client) GetDHCPv4StaticMapping(ctx context.Context, iface string, macAddress net.HardwareAddr) (*DHCPv4StaticMapping, error)

func (*Client) GetDHCPv4StaticMappings added in v0.12.0

func (pf *Client) GetDHCPv4StaticMappings(ctx context.Context, iface string) (*DHCPv4StaticMappings, error)

func (*Client) GetDNSResolverConfigFile

func (pf *Client) GetDNSResolverConfigFile(ctx context.Context, name string) (*ConfigFile, error)

func (*Client) GetDNSResolverConfigFiles

func (pf *Client) GetDNSResolverConfigFiles(ctx context.Context) (*ConfigFiles, error)

func (*Client) GetDNSResolverDomainOverride

func (pf *Client) GetDNSResolverDomainOverride(ctx context.Context, domain string) (*DomainOverride, error)

func (*Client) GetDNSResolverDomainOverrides

func (pf *Client) GetDNSResolverDomainOverrides(ctx context.Context) (*DomainOverrides, error)

func (*Client) GetDNSResolverHostOverride

func (pf *Client) GetDNSResolverHostOverride(ctx context.Context, fqdn string) (*HostOverride, error)

func (*Client) GetDNSResolverHostOverrides

func (pf *Client) GetDNSResolverHostOverrides(ctx context.Context) (*HostOverrides, error)

func (*Client) GetFirewallIPAlias added in v0.6.0

func (pf *Client) GetFirewallIPAlias(ctx context.Context, name string) (*FirewallIPAlias, error)

func (*Client) GetFirewallIPAliases added in v0.6.0

func (pf *Client) GetFirewallIPAliases(ctx context.Context) (*FirewallIPAliases, error)

func (*Client) GetFirewallPortAlias added in v0.8.0

func (pf *Client) GetFirewallPortAlias(ctx context.Context, name string) (*FirewallPortAlias, error)

func (*Client) GetFirewallPortAliases added in v0.8.0

func (pf *Client) GetFirewallPortAliases(ctx context.Context) (*FirewallPortAliases, error)

func (*Client) GetSystemVersion

func (pf *Client) GetSystemVersion(ctx context.Context) (*SystemVersion, error)

func (*Client) ReloadFirewallFilter added in v0.6.0

func (pf *Client) ReloadFirewallFilter(ctx context.Context) error

func (*Client) UpdateDHCPv4StaticMapping added in v0.12.0

func (pf *Client) UpdateDHCPv4StaticMapping(ctx context.Context, staticMappingReq DHCPv4StaticMapping) (*DHCPv4StaticMapping, error)

func (*Client) UpdateDNSResolverConfigFile

func (pf *Client) UpdateDNSResolverConfigFile(ctx context.Context, configFileReq ConfigFile) (*ConfigFile, error)

func (*Client) UpdateDNSResolverDomainOverride

func (pf *Client) UpdateDNSResolverDomainOverride(ctx context.Context, domainOverrideReq DomainOverride) (*DomainOverride, error)

func (*Client) UpdateDNSResolverHostOverride

func (pf *Client) UpdateDNSResolverHostOverride(ctx context.Context, hostOverrideReq HostOverride) (*HostOverride, error)

func (*Client) UpdateFirewallIPAlias added in v0.6.0

func (pf *Client) UpdateFirewallIPAlias(ctx context.Context, ipAliasReq FirewallIPAlias) (*FirewallIPAlias, error)

func (*Client) UpdateFirewallPortAlias added in v0.8.0

func (pf *Client) UpdateFirewallPortAlias(ctx context.Context, portAliasReq FirewallPortAlias) (*FirewallPortAlias, error)

type ConfigFile

type ConfigFile struct {
	Name    string
	Content string
}

func (*ConfigFile) SetContent

func (cf *ConfigFile) SetContent(content string) error

func (*ConfigFile) SetName

func (cf *ConfigFile) SetName(name string) error

type ConfigFiles

type ConfigFiles []ConfigFile

func (ConfigFiles) GetByName

func (cfs ConfigFiles) GetByName(name string) (*ConfigFile, error)

type DHCPv4StaticMapping added in v0.12.0

type DHCPv4StaticMapping struct {
	Interface           string
	MACAddress          net.HardwareAddr
	ClientIdentifier    string
	IPAddress           netip.Addr
	ARPTableStaticEntry bool
	Hostname            string
	Description         string
	WINSServers         []netip.Addr
	DNSServers          []netip.Addr
	Gateway             netip.Addr
	DomainName          string
	DomainSearchList    []string
	DefaultLeaseTime    time.Duration
	MaximumLeaseTime    time.Duration
}

func (*DHCPv4StaticMapping) SetARPTableStaticEntry added in v0.12.0

func (sm *DHCPv4StaticMapping) SetARPTableStaticEntry(arpTableStaticEntry bool) error

func (*DHCPv4StaticMapping) SetClientIdentifier added in v0.12.0

func (sm *DHCPv4StaticMapping) SetClientIdentifier(clientIdentifier string) error

func (*DHCPv4StaticMapping) SetDNSServers added in v0.12.0

func (sm *DHCPv4StaticMapping) SetDNSServers(dnsServers []string) error

func (*DHCPv4StaticMapping) SetDefaultLeaseTime added in v0.12.0

func (sm *DHCPv4StaticMapping) SetDefaultLeaseTime(defaultLeaseTime string) error

func (*DHCPv4StaticMapping) SetDescription added in v0.12.0

func (sm *DHCPv4StaticMapping) SetDescription(description string) error

func (*DHCPv4StaticMapping) SetDomainName added in v0.12.0

func (sm *DHCPv4StaticMapping) SetDomainName(domainName string) error

func (*DHCPv4StaticMapping) SetDomainSearchList added in v0.12.0

func (sm *DHCPv4StaticMapping) SetDomainSearchList(domainSearchList []string) error

func (*DHCPv4StaticMapping) SetGateway added in v0.12.0

func (sm *DHCPv4StaticMapping) SetGateway(gateway string) error

func (*DHCPv4StaticMapping) SetHostname added in v0.12.0

func (sm *DHCPv4StaticMapping) SetHostname(hostname string) error

func (*DHCPv4StaticMapping) SetIPAddress added in v0.12.0

func (sm *DHCPv4StaticMapping) SetIPAddress(ipAddress string) error

func (*DHCPv4StaticMapping) SetInterface added in v0.12.0

func (sm *DHCPv4StaticMapping) SetInterface(iface string) error

func (*DHCPv4StaticMapping) SetMACAddress added in v0.12.0

func (sm *DHCPv4StaticMapping) SetMACAddress(macAddress string) error

func (*DHCPv4StaticMapping) SetMaximumLeaseTime added in v0.12.0

func (sm *DHCPv4StaticMapping) SetMaximumLeaseTime(maximumLeaseTime string) error

func (*DHCPv4StaticMapping) SetWINSServers added in v0.12.0

func (sm *DHCPv4StaticMapping) SetWINSServers(winsServers []string) error

func (DHCPv4StaticMapping) StringifyDNSServers added in v0.12.0

func (sm DHCPv4StaticMapping) StringifyDNSServers() []string

func (DHCPv4StaticMapping) StringifyGateway added in v0.12.0

func (sm DHCPv4StaticMapping) StringifyGateway() string

func (DHCPv4StaticMapping) StringifyIPAddress added in v0.12.0

func (sm DHCPv4StaticMapping) StringifyIPAddress() string

func (DHCPv4StaticMapping) StringifyWINSServers added in v0.12.0

func (sm DHCPv4StaticMapping) StringifyWINSServers() []string

type DHCPv4StaticMappings added in v0.12.0

type DHCPv4StaticMappings []DHCPv4StaticMapping

func (DHCPv4StaticMappings) GetByMACAddress added in v0.12.0

func (sms DHCPv4StaticMappings) GetByMACAddress(macAddress net.HardwareAddr) (*DHCPv4StaticMapping, error)

func (DHCPv4StaticMappings) GetControlIDByMACAddress added in v0.12.0

func (sms DHCPv4StaticMappings) GetControlIDByMACAddress(macAddress net.HardwareAddr) (*int, error)

type DomainOverride

type DomainOverride struct {
	Domain      string
	IPAddress   netip.AddrPort
	TLSQueries  bool
	TLSHostname string
	Description string
}

func (*DomainOverride) SetDescription

func (do *DomainOverride) SetDescription(description string) error

func (*DomainOverride) SetDomain

func (do *DomainOverride) SetDomain(domain string) error

func (*DomainOverride) SetIPAddress

func (do *DomainOverride) SetIPAddress(ipAddress string) error

TODO support address without port specified (default to 53/853).

func (*DomainOverride) SetTLSHostname

func (do *DomainOverride) SetTLSHostname(hostname string) error

func (*DomainOverride) SetTLSQueries

func (do *DomainOverride) SetTLSQueries(value bool) error

func (DomainOverride) StringifyIPAddress added in v0.9.0

func (do DomainOverride) StringifyIPAddress() string

type DomainOverrides

type DomainOverrides []DomainOverride

func (DomainOverrides) GetByDomain

func (dos DomainOverrides) GetByDomain(domain string) (*DomainOverride, error)

func (DomainOverrides) GetControlIDByDomain

func (dos DomainOverrides) GetControlIDByDomain(domain string) (*int, error)

type FirewallIPAlias added in v0.6.0

type FirewallIPAlias struct {
	Name        string
	Description string
	Type        string
	Entries     []FirewallIPAliasEntry
	// contains filtered or unexported fields
}

func (*FirewallIPAlias) SetDescription added in v0.6.0

func (ipAlias *FirewallIPAlias) SetDescription(description string) error

func (*FirewallIPAlias) SetName added in v0.6.0

func (ipAlias *FirewallIPAlias) SetName(name string) error

func (*FirewallIPAlias) SetType added in v0.6.0

func (ipAlias *FirewallIPAlias) SetType(t string) error

func (FirewallIPAlias) Types added in v0.10.0

func (FirewallIPAlias) Types() []string

type FirewallIPAliasEntry added in v0.6.0

type FirewallIPAliasEntry struct {
	IP          string
	Description string
}

func (*FirewallIPAliasEntry) SetDescription added in v0.6.0

func (entry *FirewallIPAliasEntry) SetDescription(description string) error

func (*FirewallIPAliasEntry) SetIP added in v0.12.0

func (entry *FirewallIPAliasEntry) SetIP(ip string) error

type FirewallIPAliases added in v0.6.0

type FirewallIPAliases []FirewallIPAlias

func (FirewallIPAliases) GetByName added in v0.6.0

func (ipAliases FirewallIPAliases) GetByName(name string) (*FirewallIPAlias, error)

func (FirewallIPAliases) GetControlIDByName added in v0.6.0

func (ipAliases FirewallIPAliases) GetControlIDByName(name string) (*int, error)

type FirewallPortAlias added in v0.8.0

type FirewallPortAlias struct {
	Name        string
	Description string
	Entries     []FirewallPortAliasEntry
	// contains filtered or unexported fields
}

func (*FirewallPortAlias) SetDescription added in v0.8.0

func (portAlias *FirewallPortAlias) SetDescription(description string) error

func (*FirewallPortAlias) SetName added in v0.8.0

func (portAlias *FirewallPortAlias) SetName(name string) error

type FirewallPortAliasEntry added in v0.8.0

type FirewallPortAliasEntry struct {
	Port        string
	Description string
}

func (*FirewallPortAliasEntry) SetDescription added in v0.8.0

func (entry *FirewallPortAliasEntry) SetDescription(description string) error

func (*FirewallPortAliasEntry) SetPort added in v0.8.0

func (entry *FirewallPortAliasEntry) SetPort(port string) error

type FirewallPortAliases added in v0.8.0

type FirewallPortAliases []FirewallPortAlias

func (FirewallPortAliases) GetByName added in v0.8.0

func (portAliases FirewallPortAliases) GetByName(name string) (*FirewallPortAlias, error)

func (FirewallPortAliases) GetControlIDByName added in v0.8.0

func (portAliases FirewallPortAliases) GetControlIDByName(name string) (*int, error)

type HostOverride

type HostOverride struct {
	Host        string
	Domain      string
	IPAddresses []netip.Addr
	Description string
	Aliases     []HostOverrideAlias
}

func (HostOverride) FQDN

func (ho HostOverride) FQDN() string

func (*HostOverride) SetDescription

func (ho *HostOverride) SetDescription(description string) error

func (*HostOverride) SetDomain

func (ho *HostOverride) SetDomain(domain string) error

func (*HostOverride) SetHost

func (ho *HostOverride) SetHost(host string) error

func (*HostOverride) SetIPAddresses

func (ho *HostOverride) SetIPAddresses(ipAddresses []string) error

func (HostOverride) StringifyIPAddresses added in v0.8.0

func (ho HostOverride) StringifyIPAddresses() []string

TODO replace with Terraform custom type for netip.Addr.

type HostOverrideAlias

type HostOverrideAlias struct {
	Host        string
	Domain      string
	Description string
}

func (HostOverrideAlias) FQDN

func (hoa HostOverrideAlias) FQDN() string

func (*HostOverrideAlias) SetDescription

func (hoa *HostOverrideAlias) SetDescription(description string) error

func (*HostOverrideAlias) SetDomain

func (hoa *HostOverrideAlias) SetDomain(domain string) error

func (*HostOverrideAlias) SetHost

func (hoa *HostOverrideAlias) SetHost(host string) error

type HostOverrides

type HostOverrides []HostOverride

func (HostOverrides) GetByFQDN

func (hos HostOverrides) GetByFQDN(fqdn string) (*HostOverride, error)

func (HostOverrides) GetControlIDByFQDN

func (hos HostOverrides) GetControlIDByFQDN(fqdn string) (*int, error)

type Options

type Options struct {
	URL              *url.URL
	Username         string
	Password         string
	TLSSkipVerify    *bool
	RetryMinWait     *time.Duration
	RetryMaxWait     *time.Duration
	MaxAttempts      *int
	ConcurrentWrites *bool // TODO atomic.Bool.
}

type SystemVersion

type SystemVersion struct {
	Current string `json:"installed_version"` //nolint:tagliatelle
	Latest  string `json:"version"`           //nolint:tagliatelle
}

type ValidAddrStringer added in v0.9.0

type ValidAddrStringer interface {
	String() string
	IsValid() bool
}

Jump to

Keyboard shortcuts

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