mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-09 00:20:26 +08:00
优化CNAME查询程序
This commit is contained in:
@@ -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, "___")
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
12
internal/utils/lookup_test.go
Normal file
12
internal/utils/lookup_test.go
Normal 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"))
|
||||||
|
}
|
||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user