resolver.go 685 B

123456789101112131415161718192021222324252627282930313233343536
  1. package resolver
  2. import (
  3. "encoding/json"
  4. "io"
  5. "net/http"
  6. "rinne.dev/doh-resolver/app/model"
  7. "rinne.dev/doh-resolver/pkg/config"
  8. )
  9. // Resolve 查找域名对应的 IP
  10. func Resolve(domain string) (string, error) {
  11. // 请求 DOH 服务器
  12. resp, err := http.Get(config.GetString("resolver") + "?name=" + domain)
  13. if err != nil {
  14. return "", err
  15. }
  16. resBody, err := io.ReadAll(resp.Body)
  17. if err != nil {
  18. return "", err
  19. }
  20. // 解析响应
  21. var response model.DOHResponse
  22. err = json.Unmarshal(resBody, &response)
  23. if err != nil {
  24. return "", err
  25. }
  26. // 结果取到最后一个
  27. ans := ""
  28. for _, answer := range response.Answer {
  29. ans = answer.Data
  30. }
  31. return ans, nil
  32. }