优化CNAME查询程序

This commit is contained in:
刘祥超
2023-03-21 11:41:40 +08:00
parent ac6fcefffd
commit 3dc983871f
5 changed files with 56 additions and 10 deletions

View File

@@ -2,6 +2,11 @@
package teaconst package teaconst
import (
"os"
"strings"
)
var ( var (
IsRecoverMode = false IsRecoverMode = false
@@ -10,4 +15,18 @@ var (
NewVersionCode = "" // 有新的版本 NewVersionCode = "" // 有新的版本
NewVersionDownloadURL = "" // 新版本下载地址 NewVersionDownloadURL = "" // 新版本下载地址
IsMain = checkMain()
) )
// 检查是否为主程序
func checkMain() bool {
if len(os.Args) == 1 ||
(len(os.Args) >= 2 && os.Args[1] == "pprof") {
return true
}
exe, _ := os.Executable()
return strings.HasSuffix(exe, ".test") ||
strings.HasSuffix(exe, ".test.exe") ||
strings.Contains(exe, "___")
}

View File

@@ -1,26 +1,40 @@
package utils package utils
import ( import (
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeCommon/pkg/configutils" "github.com/TeaOSLab/EdgeCommon/pkg/configutils"
"github.com/iwind/TeaGo/logs"
"github.com/miekg/dns" "github.com/miekg/dns"
) )
// LookupCNAME 获取CNAME var sharedDNSClient *dns.Client
func LookupCNAME(host string) (string, error) { var sharedDNSConfig *dns.ClientConfig
config, err := dns.ClientConfigFromFile("/etc/resolv.conf")
if err != nil { func init() {
return "", err if !teaconst.IsMain {
return
} }
c := new(dns.Client) config, err := dns.ClientConfigFromFile("/etc/resolv.conf")
m := new(dns.Msg) if err != nil {
logs.Println("ERROR: configure dns client failed: " + err.Error())
return
}
sharedDNSConfig = config
sharedDNSClient = &dns.Client{}
}
// LookupCNAME 获取CNAME
func LookupCNAME(host string) (string, error) {
var m = new(dns.Msg)
m.SetQuestion(host+".", dns.TypeCNAME) m.SetQuestion(host+".", dns.TypeCNAME)
m.RecursionDesired = true m.RecursionDesired = true
var lastErr error var lastErr error
for _, serverAddr := range config.Servers { for _, serverAddr := range sharedDNSConfig.Servers {
r, _, err := c.Exchange(m, configutils.QuoteIP(serverAddr)+":"+config.Port) r, _, err := sharedDNSClient.Exchange(m, configutils.QuoteIP(serverAddr)+":"+sharedDNSConfig.Port)
if err != nil { if err != nil {
lastErr = err lastErr = err
continue continue

View File

@@ -0,0 +1,12 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package utils_test
import (
"github.com/TeaOSLab/EdgeAdmin/internal/utils"
"testing"
)
func TestLookupCNAME(t *testing.T) {
t.Log(utils.LookupCNAME("www.yun4s.cn"))
}

View File

@@ -9,7 +9,7 @@ import (
) )
func TestNewUpgradeManager(t *testing.T) { func TestNewUpgradeManager(t *testing.T) {
var manager = utils.NewUpgradeManager("admin") var manager = utils.NewUpgradeManager("admin", "")
var ticker = time.NewTicker(2 * time.Second) var ticker = time.NewTicker(2 * time.Second)
go func() { go func() {

View File

@@ -28,6 +28,7 @@ Tea.context(function () {
.params({ .params({
serverIds: serverIds serverIds: serverIds
}) })
.timeout(300)
.success(function (resp) { .success(function (resp) {
let status = resp.data.status let status = resp.data.status
this.servers.forEach(function (server) { this.servers.forEach(function (server) {