pfsense

package
v0.0.0-...-fc475d0 Latest Latest
Warning

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

Go to latest
Published: May 2, 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

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

func ParseMACAddress

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

func ValidateAlias

func ValidateAlias(alias string) error

func ValidateConfigFileName

func ValidateConfigFileName(configFileName string) error

func ValidateDNSLabel

func ValidateDNSLabel(dnsLabel string) error

used for hostname and host override name.

func ValidateDomain

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

func ValidateIPAddress(addr string, addrFamily string) error

func ValidateIPAddressPort

func ValidateIPAddressPort(addrPort string) error

func ValidateInterface

func ValidateInterface(iface string) error

func ValidateMACAddress

func ValidateMACAddress(macAddress string) error

func ValidateNetwork

func ValidateNetwork(network string) error

func ValidatePort

func ValidatePort(port string) error

func ValidatePortRange

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

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

func (*Client) ApplyDNSResolverChanges

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

func (*Client) CreateDHCPv4StaticMapping

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

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

func (*Client) CreateFirewallPortAlias

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

func (*Client) DeleteDHCPv4StaticMapping

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

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

func (*Client) DeleteFirewallPortAlias

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

func (*Client) ExecutePHPCommand

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

func (*Client) GetDHCPv4StaticMapping

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

func (*Client) GetDHCPv4StaticMappings

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

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

func (*Client) GetFirewallIPAliases

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

func (*Client) GetFirewallPortAlias

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

func (*Client) GetFirewallPortAliases

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

func (*Client) GetSystemVersion

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

func (*Client) ReloadFirewallFilter

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

func (*Client) UpdateDHCPv4StaticMapping

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

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

func (*Client) UpdateFirewallPortAlias

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

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

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

func (*DHCPv4StaticMapping) SetClientIdentifier

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

func (*DHCPv4StaticMapping) SetDNSServers

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

func (*DHCPv4StaticMapping) SetDefaultLeaseTime

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

func (*DHCPv4StaticMapping) SetDescription

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

func (*DHCPv4StaticMapping) SetDomainName

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

func (*DHCPv4StaticMapping) SetDomainSearchList

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

func (*DHCPv4StaticMapping) SetGateway

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

func (*DHCPv4StaticMapping) SetHostname

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

func (*DHCPv4StaticMapping) SetIPAddress

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

func (*DHCPv4StaticMapping) SetInterface

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

func (*DHCPv4StaticMapping) SetMACAddress

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

func (*DHCPv4StaticMapping) SetMaximumLeaseTime

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

func (*DHCPv4StaticMapping) SetWINSServers

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

func (DHCPv4StaticMapping) StringifyDNSServers

func (sm DHCPv4StaticMapping) StringifyDNSServers() []string

func (DHCPv4StaticMapping) StringifyGateway

func (sm DHCPv4StaticMapping) StringifyGateway() string

func (DHCPv4StaticMapping) StringifyIPAddress

func (sm DHCPv4StaticMapping) StringifyIPAddress() string

func (DHCPv4StaticMapping) StringifyWINSServers

func (sm DHCPv4StaticMapping) StringifyWINSServers() []string

type DHCPv4StaticMappings

type DHCPv4StaticMappings []DHCPv4StaticMapping

func (DHCPv4StaticMappings) GetByMACAddress

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

func (DHCPv4StaticMappings) GetControlIDByMACAddress

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

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

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

func (*FirewallIPAlias) SetDescription

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

func (*FirewallIPAlias) SetName

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

func (*FirewallIPAlias) SetType

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

func (FirewallIPAlias) Types

func (FirewallIPAlias) Types() []string

type FirewallIPAliasEntry

type FirewallIPAliasEntry struct {
	IP          string
	Description string
}

func (*FirewallIPAliasEntry) SetDescription

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

func (*FirewallIPAliasEntry) SetIP

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

type FirewallIPAliases

type FirewallIPAliases []FirewallIPAlias

func (FirewallIPAliases) GetByName

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

func (FirewallIPAliases) GetControlIDByName

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

type FirewallPortAlias

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

func (*FirewallPortAlias) SetDescription

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

func (*FirewallPortAlias) SetName

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

type FirewallPortAliasEntry

type FirewallPortAliasEntry struct {
	Port        string
	Description string
}

func (*FirewallPortAliasEntry) SetDescription

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

func (*FirewallPortAliasEntry) SetPort

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

type FirewallPortAliases

type FirewallPortAliases []FirewallPortAlias

func (FirewallPortAliases) GetByName

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

func (FirewallPortAliases) GetControlIDByName

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

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

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