initial commit
This commit is contained in:
96
methods/test_methods.go
Normal file
96
methods/test_methods.go
Normal file
@@ -0,0 +1,96 @@
|
||||
package methods
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"fpdns_client/utils"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
func ProbeStart(addr string, sld string) (int, error) {
|
||||
time_now := strconv.FormatInt(time.Now().Unix(), 10)
|
||||
domain := dns.Fqdn("start-" + time_now + "." + sld)
|
||||
res, err := utils.DNSQuery(addr, domain, false, 1, 1, false)
|
||||
if err == nil {
|
||||
if len(res.Answer) == 1 {
|
||||
if a, ok := res.Answer[0].(*dns.A); ok {
|
||||
ip_str := a.A.String()
|
||||
ip_val, _ := utils.IPv4ToInt(ip_str)
|
||||
return int(ip_val), nil
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return 0, err
|
||||
}
|
||||
return 0, errors.New("wrong token response")
|
||||
}
|
||||
|
||||
func InitProbe(addr string, token int, sld string) error {
|
||||
time_now := strconv.FormatInt(time.Now().Unix(), 10)
|
||||
domain := dns.Fqdn("init-" + time_now + "-" + strconv.Itoa(token) + "." + sld)
|
||||
res, err := utils.DNSQuery(addr, domain, true, 1, 1, false)
|
||||
if err != nil {
|
||||
return err
|
||||
} else {
|
||||
if len(res.Answer) == 1 {
|
||||
if a, ok := res.Answer[0].(*dns.A); ok {
|
||||
ip_str := a.A.String()
|
||||
if ip_str == "200.200.200.200" {
|
||||
return nil
|
||||
}
|
||||
} else {
|
||||
return errors.New("invalid Reply Code")
|
||||
}
|
||||
}
|
||||
}
|
||||
return errors.New("init query failure")
|
||||
}
|
||||
|
||||
func ProbeTerminate(addr string, token int, sld string) error {
|
||||
time_now := strconv.FormatInt(time.Now().Unix(), 10)
|
||||
domain := dns.Fqdn("end-" + time_now + "-" + strconv.Itoa(token) + "." + sld)
|
||||
res, err := utils.DNSQuery(addr, domain, false, 1, 1, false)
|
||||
if err != nil {
|
||||
return err
|
||||
} else {
|
||||
if len(res.Answer) == 1 {
|
||||
if a, ok := res.Answer[0].(*dns.A); ok {
|
||||
ip_str := a.A.String()
|
||||
if ip_str == "200.200.200.200" {
|
||||
return nil
|
||||
}
|
||||
} else {
|
||||
return errors.New("invalid Reply Code")
|
||||
}
|
||||
}
|
||||
}
|
||||
return errors.New("terminate query failure")
|
||||
}
|
||||
|
||||
func BehaviorTest(target string, server string, api_port string, sld string) (string, error) {
|
||||
target_addr := target + ":53"
|
||||
server_addr := server + ":53"
|
||||
result_addr := server + ":" + api_port
|
||||
token, err := ProbeStart(server_addr, sld)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
err = InitProbe(target_addr, token, sld)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
err = ProbeTerminate(server_addr, token, sld)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
data, err := utils.GetResult(result_addr, token)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
json_str, _ := utils.OutputJson(data)
|
||||
fmt.Println(json_str)
|
||||
return "", nil
|
||||
}
|
||||
Reference in New Issue
Block a user