checker: Ensure DNS is also accessible over TCP

This commit is contained in:
nemunaire 2023-03-18 10:54:50 +01:00
commit f70743d659
2 changed files with 27 additions and 5 deletions

View file

@ -237,8 +237,8 @@ func get_GLUE(student *adlin.Student) (aaaa net.IP, err error) {
return
}
func check_dns(domain, ip string) (aaaa net.IP, err error) {
client := dns.Client{Timeout: time.Second * 5}
func check_dns(proto, domain, ip string) (aaaa net.IP, err error) {
client := dns.Client{Net: proto, Timeout: time.Second * 5}
m := new(dns.Msg)
m.SetQuestion(domain, dns.TypeAAAA)
@ -267,6 +267,28 @@ func check_dns(domain, ip string) (aaaa net.IP, err error) {
return
}
func check_dns_both(domain, ip string) (aaaa net.IP, err error) {
if aaaa, err = check_dns_udp(domain, ip); err != nil {
err = fmt.Errorf("dig @%s %s: %w", ip, domain, err)
return
}
if aaaa, err = check_dns_tcp(domain, ip); err != nil {
err = fmt.Errorf("Test over TCP: dig +tcp @%s %s: %w", ip, domain, err)
return
}
return
}
func check_dns_udp(domain, ip string) (net.IP, error) {
return check_dns("", domain, ip)
}
func check_dns_tcp(domain, ip string) (net.IP, error) {
return check_dns("tcp", domain, ip)
}
func check_dnssec(domain, ip string) (err error) {
client := dns.Client{Net: "tcp", Timeout: time.Second * 10}