This commit is contained in:
1 parent
6cdf2b579d
commit
172730eab0
1 file changed
+72
-4
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/go-git/go-git/v5"
|
||||
@@ -94,6 +95,71 @@ func updateRunner() {
|
||||
}
|
||||
}
|
||||
|
||||
func resolver(addr string) net.Resolver {
|
||||
var (
|
||||
dnsResolverProto = "udp" // Protocol to use for the DNS resolver
|
||||
dnsResolverTimeoutMs = 5000 // Timeout (ms) for the DNS resolver (optional)
|
||||
)
|
||||
|
||||
return net.Resolver{
|
||||
Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
|
||||
d := net.Dialer{
|
||||
Timeout: time.Duration(dnsResolverTimeoutMs) * time.Millisecond,
|
||||
}
|
||||
return d.DialContext(ctx, dnsResolverProto, addr)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func reverseDNS(ip net.IP) ([]string, error) {
|
||||
results := make([]string, 0)
|
||||
|
||||
// resolve using system resolver
|
||||
names, err := net.LookupAddr(ip.String())
|
||||
if err == nil {
|
||||
results = append(results, names...)
|
||||
}
|
||||
|
||||
// resolve using 1.1.1.1
|
||||
cloudflare := resolver("1.1.1.1")
|
||||
names, err = cloudflare.LookupAddr(context.Background(), ip.String())
|
||||
if err == nil {
|
||||
results = append(results, names...)
|
||||
} else {
|
||||
log.Tracef("Failed to resolve reverse DNS using Cloduflare for %s: %s", ip.String(), err.Error())
|
||||
}
|
||||
|
||||
// resolve using 8.8.8.8
|
||||
google := resolver("8.8.8.8")
|
||||
names, err = google.LookupAddr(context.Background(), ip.String())
|
||||
if err == nil {
|
||||
results = append(results, names...)
|
||||
} else {
|
||||
log.Tracef("Failed to resolve reverse DNS using Google for %s: %s", ip.String(), err.Error())
|
||||
}
|
||||
|
||||
// resolve using 77.88.8.8
|
||||
yandex := resolver("77.88.8.8")
|
||||
names, err = yandex.LookupAddr(context.Background(), ip.String())
|
||||
if err == nil {
|
||||
results = append(results, names...)
|
||||
} else {
|
||||
log.Tracef("Failed to resolve reverse DNS using Yandex for %s: %s", ip.String(), err.Error())
|
||||
}
|
||||
|
||||
// remove duplicates
|
||||
unique := make(map[string]struct{})
|
||||
for _, v := range results {
|
||||
unique[v] = struct{}{}
|
||||
}
|
||||
|
||||
results = make([]string, 0, len(unique))
|
||||
for k := range unique {
|
||||
results = append(results, k)
|
||||
}
|
||||
return results, nil
|
||||
}
|
||||
|
||||
func update(repository *git.Repository, branch string, auth transport.AuthMethod, fileName string) {
|
||||
type structuredBlacklist []string
|
||||
|
||||
@@ -269,11 +335,13 @@ func update(repository *git.Repository, branch string, auth transport.AuthMethod
|
||||
logMessages.WriteString(fmt.Sprintf("server='%s' addr='%s'", v.Server, v.IP.String()))
|
||||
|
||||
commitMessage.WriteString(v.IP.String())
|
||||
reverseDNSNames, err := net.LookupAddr(v.IP.String())
|
||||
reverseDNSNames, err := reverseDNS(v.IP)
|
||||
if err == nil {
|
||||
line := fmt.Sprintf(" hostname='%s'", reverseDNSNames[0])
|
||||
commitMessage.WriteString(line)
|
||||
logMessages.WriteString(line)
|
||||
for _, name := range reverseDNSNames {
|
||||
line := fmt.Sprintf(" hostname='%s'", name)
|
||||
commitMessage.WriteString(line)
|
||||
logMessages.WriteString(line)
|
||||
}
|
||||
} else {
|
||||
log.Warnf("Failed to lookup reverse DNS for %s: %s", v.IP.String(), err.Error())
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user