Skip to content

Instantly share code, notes, and snippets.

@aeharvlee
Created August 19, 2020 23:07
Show Gist options
  • Save aeharvlee/4da4f1859c82e4632e5528d011a557bb to your computer and use it in GitHub Desktop.
Save aeharvlee/4da4f1859c82e4632e5528d011a557bb to your computer and use it in GitHub Desktop.
// Do reverse dns lookup for list of ipv4 concurrently.
func (bs *BotSpecifier) ReverseDNSLookup(ctx context.Context, ipv4s []string) error {
bs.Logger.WithFields(logrus.Fields{
"package": "specifier",
"function": "ReverseDNSLookup",
}).Debugf("Start Reverse DNS Lookup about %d ipv4s.", len(ipv4s))
for _, ipv4 := range ipv4s {
bs.WaitGroup.Add(1)
go func(ipv4 string) {
defer bs.WaitGroup.Done()
addrs, err := bs.Resolver.LookupAddr(ctx, ipv4)
if err != nil {
// Most of error is "not found: 3 (NXDOMAIN)"
// We don't care because what we want is to find well-known bot(spider) or crawler domains.
} else {
host := addrs[0]
bs.Mutex.Lock()
bs.DnsBook = append(bs.DnsBook, domain.DNS{IPv4: ipv4, Domain: host})
bs.Mutex.Unlock()
}
}(ipv4)
}
bs.WaitGroup.Wait()
bs.Logger.WithFields(logrus.Fields{
"package": "specifier",
"function": "ReverseDNSLookup",
}).Debugf("ReverseDNSLookup is Finished. We Looked up %d addresses.", len(bs.DnsBook))
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment