From 2d711408c6cc7b731ab19ff26484c2d8cb438c1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Mon, 29 Apr 2024 15:07:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=B9=B3=E5=8F=B0=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E8=AE=BE=E7=BD=AE=E4=B8=AD=E5=A2=9E=E5=8A=A0=E2=80=9C?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84DNS=E8=A7=A3=E6=9E=90=E5=BA=93?= =?UTF-8?q?=E2=80=9D=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/configloaders/admin_ui_config.go | 5 ++- internal/nodes/admin_node.go | 31 +++++++++++++++++++ .../web/actions/default/settings/ui/index.go | 10 +++--- web/views/@default/settings/ui/index.html | 13 +++++++- 4 files changed, 53 insertions(+), 6 deletions(-) diff --git a/internal/configloaders/admin_ui_config.go b/internal/configloaders/admin_ui_config.go index 5be04dab..559af3e5 100644 --- a/internal/configloaders/admin_ui_config.go +++ b/internal/configloaders/admin_ui_config.go @@ -93,6 +93,7 @@ func loadAdminUIConfig() (*systemconfigs.AdminUIConfig, error) { } var config = &systemconfigs.AdminUIConfig{} + config.DNSResolver.Type = nodeconfigs.DNSResolverTypeDefault // 默认值 err = json.Unmarshal(resp.ValueJSON, config) if err != nil { logs.Println("[UI_MANAGER]" + err.Error()) @@ -108,7 +109,7 @@ func loadAdminUIConfig() (*systemconfigs.AdminUIConfig, error) { } func defaultAdminUIConfig() *systemconfigs.AdminUIConfig { - return &systemconfigs.AdminUIConfig{ + var config = &systemconfigs.AdminUIConfig{ ProductName: langs.DefaultMessage(codes.AdminUI_DefaultProductName), AdminSystemName: langs.DefaultMessage(codes.AdminUI_DefaultSystemName), ShowOpenSourceInfo: true, @@ -117,6 +118,8 @@ func defaultAdminUIConfig() *systemconfigs.AdminUIConfig { DefaultPageSize: 10, TimeZone: nodeconfigs.DefaultTimeZoneLocation, } + config.DNSResolver.Type = nodeconfigs.DNSResolverTypeDefault + return config } // 修改时区 diff --git a/internal/nodes/admin_node.go b/internal/nodes/admin_node.go index 14569e9d..7d6100e8 100644 --- a/internal/nodes/admin_node.go +++ b/internal/nodes/admin_node.go @@ -8,6 +8,7 @@ import ( teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const" "github.com/TeaOSLab/EdgeAdmin/internal/events" "github.com/TeaOSLab/EdgeAdmin/internal/utils" + "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/iwind/TeaGo" "github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/lists" @@ -87,6 +88,9 @@ func (this *AdminNode) Run() { // 启动API节点 this.startAPINode() + // 设置DNS相关 + this.setupDNS() + // 启动IP库 this.startIPLibrary() @@ -254,6 +258,33 @@ func (this *AdminNode) addPortsToFirewall() { utils.AddPortsToFirewall(ports) } +// 设置DNS相关 +func (this *AdminNode) setupDNS() { + config, loadErr := configloaders.LoadAdminUIConfig() + if loadErr != nil { + // 默认使用go原生 + err := os.Setenv("GODEBUG", "netdns=go") + if err != nil { + logs.Println("[DNS_RESOLVER]set env failed: " + err.Error()) + } + return + } + + var err error + switch config.DNSResolver.Type { + case nodeconfigs.DNSResolverTypeGoNative: + err = os.Setenv("GODEBUG", "netdns=go") + case nodeconfigs.DNSResolverTypeCGO: + err = os.Setenv("GODEBUG", "netdns=cgo") + default: + // 默认使用go原生 + err = os.Setenv("GODEBUG", "netdns=go") + } + if err != nil { + logs.Println("[DNS_RESOLVER]set env failed: " + err.Error()) + } +} + // 启动API节点 func (this *AdminNode) startAPINode() { var configPath = Tea.Root + "/edge-api/configs/api.yaml" diff --git a/internal/web/actions/default/settings/ui/index.go b/internal/web/actions/default/settings/ui/index.go index 84c93443..14e631e4 100644 --- a/internal/web/actions/default/settings/ui/index.go +++ b/internal/web/actions/default/settings/ui/index.go @@ -55,6 +55,7 @@ func (this *IndexAction) RunPost(params struct { LogoFile *actions.File DefaultPageSize int TimeZone string + DnsResolverType string SupportModuleCDN bool SupportModuleNS bool @@ -85,6 +86,7 @@ func (this *IndexAction) RunPost(params struct { config.ShowVersion = params.ShowVersion config.Version = params.Version config.TimeZone = params.TimeZone + config.DNSResolver.Type = params.DnsResolverType if params.DefaultPageSize > 0 { config.DefaultPageSize = params.DefaultPageSize @@ -111,10 +113,10 @@ func (this *IndexAction) RunPost(params struct { this.ErrorPage(err) return } - fileId := createResp.FileId + var fileId = createResp.FileId // 上传内容 - buf := make([]byte, 512*1024) + var buf = make([]byte, 512*1024) reader, err := params.FaviconFile.OriginFile.Open() if err != nil { this.ErrorPage(err) @@ -158,10 +160,10 @@ func (this *IndexAction) RunPost(params struct { this.ErrorPage(err) return } - fileId := createResp.FileId + var fileId = createResp.FileId // 上传内容 - buf := make([]byte, 512*1024) + var buf = make([]byte, 512*1024) reader, err := params.LogoFile.OriginFile.Open() if err != nil { this.ErrorPage(err) diff --git a/web/views/@default/settings/ui/index.html b/web/views/@default/settings/ui/index.html index 622b1043..9a9a6f8f 100644 --- a/web/views/@default/settings/ui/index.html +++ b/web/views/@default/settings/ui/index.html @@ -109,7 +109,18 @@ -

显示时间使用的时区。

+

当前管理系统显示时间使用的时区。

+ + + + 使用的DNS解析库 + + +

当前管理系统使用的DNS解析库;修改此项配置后,需要重启管理系统进程才会生效;通常不需要修改;如要修改,请在专家指导下进行。