frontend: resolve asn in dns/whois/fail order & fix tests

This commit is contained in:
Lan Tian
2021-07-31 16:56:39 +08:00
committed by Yuhui Xu
parent 2e0cb131ca
commit bee26f421c
4 changed files with 60 additions and 18 deletions

View File

@@ -11,30 +11,35 @@ func getASNRepresentation(asn string) string {
if setting.dnsInterface != "" {
// get ASN representation using DNS
records, err := net.LookupTXT(fmt.Sprintf("AS%s.%s", asn, setting.dnsInterface))
if err != nil {
// DNS query failed, only use ASN as output
return fmt.Sprintf("AS%s", asn)
if err == nil {
result := strings.Join(records, " ")
if resultSplit := strings.Split(result, " | "); len(resultSplit) > 1 {
result = strings.Join(resultSplit[1:], "\\n")
}
return fmt.Sprintf("AS%s\\n%s", asn, result)
}
}
result := strings.Join(records, " ")
if resultSplit := strings.Split(result, " | "); len(resultSplit) > 1 {
result = strings.Join(resultSplit[1:], "\\n")
}
return fmt.Sprintf("AS%s\\n%s", asn, result)
} else {
if setting.whoisServer != "" {
// get ASN representation using WHOIS
records := whois(fmt.Sprintf("AS%s", asn))
recordsSplit := strings.Split(records, "\n")
result := "\\n"
for _, line := range recordsSplit {
if strings.Contains(line, "as-name:") || strings.Contains(line, "ASName:") {
result = result + strings.TrimSpace(strings.SplitN(line, ":", 2)[1])
} else if strings.Contains(line, "descr:") {
result = result + "\\n" + strings.TrimSpace(strings.SplitN(line, ":", 2)[1])
if records != "" {
recordsSplit := strings.Split(records, "\n")
result := ""
for _, line := range recordsSplit {
if strings.Contains(line, "as-name:") || strings.Contains(line, "ASName:") {
result = result + strings.TrimSpace(strings.SplitN(line, ":", 2)[1])
} else if strings.Contains(line, "descr:") {
result = result + "\\n" + strings.TrimSpace(strings.SplitN(line, ":", 2)[1])
}
}
if result != "" {
return fmt.Sprintf("AS%s\\n%s", asn, result)
}
}
return fmt.Sprintf("AS%s%s", asn, result)
}
return fmt.Sprintf("AS%s", asn)
}
func birdRouteToGraphviz(servers []string, responses []string, target string) string {