diff options
Diffstat (limited to 'method/svcb.go')
| -rw-r--r-- | method/svcb.go | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/method/svcb.go b/method/svcb.go index d208e00..4a192b6 100644 --- a/method/svcb.go +++ b/method/svcb.go @@ -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 { |
