https record test for domains added
This commit is contained in:
@@ -2,6 +2,9 @@ package method
|
||||
|
||||
import (
|
||||
"edns_svcb/utils"
|
||||
"fmt"
|
||||
"log"
|
||||
"sync"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
@@ -38,16 +41,60 @@ func SVCBSupportTest(addr string) TestResult {
|
||||
return TestResult{Alive: true}
|
||||
}
|
||||
|
||||
func HTTPSRecordTest(addr, domain string) bool {
|
||||
func HTTPSRecordMeasurement(servers []string, domain_pool chan string, result_pool chan bool, routine_num int, wg *sync.WaitGroup, logger *log.Logger) {
|
||||
for i := 0; i < routine_num; i++ {
|
||||
wg.Add(1)
|
||||
go HTTPSRecordTestRoutine(servers, domain_pool, result_pool, wg, logger)
|
||||
}
|
||||
}
|
||||
|
||||
func HTTPSRecordTestRoutine(server_list []string, domain_pool chan string, result_pool chan bool, wg *sync.WaitGroup, logger *log.Logger) {
|
||||
server_index := 0
|
||||
for {
|
||||
if domain, ok := <-domain_pool; ok {
|
||||
server := server_list[server_index] + ":53"
|
||||
res, err := HTTPSRecordTest(server, domain)
|
||||
if err == nil {
|
||||
logger.Printf("%v : %v", domain, res)
|
||||
} else {
|
||||
logger.Printf("%v : failed (%v) server %v", domain, err, server)
|
||||
}
|
||||
result_pool <- res
|
||||
server_index = (server_index + 1) % len(server_list)
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
wg.Done()
|
||||
}
|
||||
|
||||
func HTTPSRecordTest(addr, domain string) (bool, error) {
|
||||
res, err := utils.DNSQuery(addr, utils.DNSOptions{Domain: domain, Qtype: dns.TypeHTTPS, RD: true})
|
||||
if err == nil {
|
||||
if len(res.Answer) > 0 {
|
||||
if _, ok := res.Answer[0].(*dns.HTTPS); ok {
|
||||
return true
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
return false, err
|
||||
}
|
||||
|
||||
func HTTPSRecordResultProcess(result_pool chan bool, wg *sync.WaitGroup) {
|
||||
total_cnt := 0
|
||||
valid_cnt := 0
|
||||
for {
|
||||
if res, ok := <-result_pool; ok {
|
||||
total_cnt++
|
||||
if res {
|
||||
valid_cnt++
|
||||
}
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
fmt.Printf("Domain HTTPS support Test: total %v https %v\n", total_cnt, valid_cnt)
|
||||
wg.Done()
|
||||
}
|
||||
|
||||
func SVCBRecordTest(addr, domain string) bool {
|
||||
|
||||
Reference in New Issue
Block a user