Documentation
¶
Overview ¶
Package iterator provides stateful network iteration for MaxMind databases.
Index ¶
- type IterationResult
- type ManagedIterator
- type Manager
- func (m *Manager) CreateIterator(reader *maxminddb.Reader, database string, network netip.Prefix, ...) (*ManagedIterator, error)
- func (m *Manager) GetIterator(id string) (*ManagedIterator, bool)
- func (m *Manager) Iterate(iterator *ManagedIterator, maxResults int) (*IterationResult, error)
- func (m *Manager) RemoveIterator(id string)
- func (m *Manager) ResumeIterator(reader *maxminddb.Reader, token string) (*ManagedIterator, error)
- func (m *Manager) StartCleanup()
- func (m *Manager) StopCleanup()
- type NetworkResult
- type ResumeToken
- type SimpleIterator
- type SimpleManager
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type IterationResult ¶
type IterationResult struct {
IteratorID string `json:"iterator_id"`
ResumeToken string `json:"resume_token"`
Results []NetworkResult `json:"results"`
TotalProcessed int64 `json:"total_processed"`
TotalMatched int64 `json:"total_matched"`
EstimatedRemaining int64 `json:"estimated_remaining,omitempty"`
HasMore bool `json:"has_more"`
}
IterationResult contains the results of an iteration batch.
type ManagedIterator ¶
type ManagedIterator struct {
Created time.Time
LastAccess time.Time
FilterEngine *filter.Engine
Reader *maxminddb.Reader
Network netip.Prefix
LastNetwork netip.Prefix
FilterMode string
Database string
ID string
Filters []filter.Filter
Processed int64
Matched int64
// contains filtered or unexported fields
}
ManagedIterator represents a stateful iterator with metadata.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages stateful network iterators.
func (*Manager) CreateIterator ¶
func (m *Manager) CreateIterator( reader *maxminddb.Reader, database string, network netip.Prefix, filters []filter.Filter, filterMode string, ) (*ManagedIterator, error)
CreateIterator creates a new iterator for a network range.
func (*Manager) GetIterator ¶
func (m *Manager) GetIterator(id string) (*ManagedIterator, bool)
GetIterator retrieves an existing iterator by ID.
func (*Manager) Iterate ¶
func (m *Manager) Iterate(iterator *ManagedIterator, maxResults int) (*IterationResult, error)
Iterate performs one iteration batch over the reader.
func (*Manager) RemoveIterator ¶
RemoveIterator removes an iterator.
func (*Manager) ResumeIterator ¶
ResumeIterator creates a new iterator from a resume token.
func (*Manager) StartCleanup ¶
func (m *Manager) StartCleanup()
StartCleanup starts the cleanup goroutine.
func (*Manager) StopCleanup ¶
func (m *Manager) StopCleanup()
StopCleanup stops the cleanup goroutine.
type NetworkResult ¶
type NetworkResult struct {
Data map[string]any `json:"data"`
Network netip.Prefix `json:"network"`
}
NetworkResult represents a single network result.
type ResumeToken ¶
type ResumeToken struct {
LastNetwork string `json:"last_network"`
Database string `json:"database"`
Network string `json:"network"`
FilterMode string `json:"filter_mode"`
Filters []filter.Filter `json:"filters"`
Processed int64 `json:"processed"`
Matched int64 `json:"matched"`
}
ResumeToken contains information needed to resume iteration.
type SimpleIterator ¶
type SimpleIterator struct {
Created time.Time
LastAccess time.Time
FilterEngine *filter.Engine
Network netip.Prefix
LastNetwork netip.Prefix
ID string
Database string
FilterMode string
Filters []filter.Filter
Processed int64
Matched int64
}
SimpleIterator is a basic iterator for network scanning.
type SimpleManager ¶
type SimpleManager struct {
// contains filtered or unexported fields
}
SimpleManager manages basic network iterators.
func NewSimple ¶
func NewSimple(ttl, cleanupInterval time.Duration) *SimpleManager
NewSimple creates a new simple iterator manager.
func (*SimpleManager) CreateSimpleIterator ¶
func (m *SimpleManager) CreateSimpleIterator( database string, network netip.Prefix, filters []filter.Filter, filterMode string, ) (*SimpleIterator, error)
CreateSimpleIterator creates a basic iterator.
func (*SimpleManager) IterateSimple ¶
func (m *SimpleManager) IterateSimple( reader *maxminddb.Reader, iterator *SimpleIterator, maxResults int, ) (*IterationResult, error)
IterateSimple performs basic network iteration.