zones: WithLookuper()/WithResolver()
Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
+37
-6
@@ -14,7 +14,41 @@ type ScanOption func(*Zones, *ScanOptions) error
|
|||||||
// ScanOptions contains flags used by the initial scan
|
// ScanOptions contains flags used by the initial scan
|
||||||
type ScanOptions struct{}
|
type ScanOptions struct{}
|
||||||
|
|
||||||
func (*Zones) setDefaults(_ *ScanOptions) error {
|
// WithLookuper specifies what resolver.Lookuper to use to
|
||||||
|
// find public addresses
|
||||||
|
func WithLookuper(h resolver.Lookuper) ScanOption {
|
||||||
|
return func(m *Zones, opt *ScanOptions) error {
|
||||||
|
if h == nil {
|
||||||
|
return fs.ErrInvalid
|
||||||
|
}
|
||||||
|
m.resolver = resolver.NewResolver(h)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithResolver specifies what resolver to use to find
|
||||||
|
// public addresses. if nil is passed, the [net.Resolver] will be used.
|
||||||
|
// The default is using Cloudflare's 1.1.1.1.
|
||||||
|
func WithResolver(h resolver.Resolver) ScanOption {
|
||||||
|
return func(m *Zones, opt *ScanOptions) error {
|
||||||
|
if h == nil {
|
||||||
|
h = resolver.SystemResolver(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
m.resolver = h
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Zones) setDefaults(opt *ScanOptions) error {
|
||||||
|
if m.resolver == nil {
|
||||||
|
h := resolver.NewCloudflareLookuper()
|
||||||
|
|
||||||
|
if err := WithLookuper(h)(m, opt); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,12 +56,9 @@ func (*Zones) setDefaults(_ *ScanOptions) error {
|
|||||||
func NewFS(dir fs.FS, domain string, opts ...ScanOption) (*Zones, error) {
|
func NewFS(dir fs.FS, domain string, opts ...ScanOption) (*Zones, error) {
|
||||||
var scanOptions ScanOptions
|
var scanOptions ScanOptions
|
||||||
|
|
||||||
lockuper := resolver.NewCloudflareLookuper()
|
|
||||||
|
|
||||||
z := &Zones{
|
z := &Zones{
|
||||||
dir: dir,
|
dir: dir,
|
||||||
resolver: resolver.NewResolver(lockuper),
|
domain: domain,
|
||||||
domain: domain,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
|
|||||||
Reference in New Issue
Block a user