Documentation
¶
Overview ¶
Package restrict provides connection-level access control based on IP CIDR ranges and geolocation (country codes).
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Filter ¶
type Filter struct {
AllowedCIDRs []netip.Prefix
BlockedCIDRs []netip.Prefix
AllowedCountries []string
BlockedCountries []string
}
Filter evaluates IP restrictions. CIDR checks are performed first (cheap), followed by country lookups (more expensive) only when needed.
func ParseFilter ¶
ParseFilter builds a Filter from the raw string slices. Returns nil if all slices are empty.
func (*Filter) Check ¶
func (f *Filter) Check(addr netip.Addr, geo GeoResolver) Verdict
Check evaluates whether addr is permitted. CIDR rules are evaluated first because they are O(n) prefix comparisons. Country rules run only when CIDR checks pass and require a geo lookup.
func (*Filter) HasRestrictions ¶
HasRestrictions returns true if any restriction rules are configured.
type GeoResolver ¶
type GeoResolver interface {
LookupAddr(addr netip.Addr) geolocation.Result
Available() bool
}
GeoResolver resolves an IP address to geographic information.