diff --git a/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go b/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go
index 4b2f1882..977a5262 100644
--- a/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go
+++ b/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go
@@ -4,7 +4,6 @@ package nodeutils
import (
"errors"
- teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
@@ -72,15 +71,7 @@ func InitNodeInfo(parentAction *actionutils.ParentAction, nodeId int64) (*pb.Nod
(node.MaxCacheMemoryCapacity != nil && node.MaxCacheMemoryCapacity.Count > 0),
},
}
- if teaconst.IsPlus {
- menuItems = append(menuItems, []maps.Map{
- {
- "name": "阈值设置",
- "url": prefix + "/settings/thresholds?" + query,
- "isActive": menuItem == "threshold",
- },
- }...)
- }
+ menuItems = filterMenuItems(menuItems, menuItem, prefix, query)
menuItems = append(menuItems, []maps.Map{
{
"name": "SSH设置",
diff --git a/internal/web/actions/default/clusters/cluster/node/nodeutils/utils_ext.go b/internal/web/actions/default/clusters/cluster/node/nodeutils/utils_ext.go
new file mode 100644
index 00000000..5e18eac7
--- /dev/null
+++ b/internal/web/actions/default/clusters/cluster/node/nodeutils/utils_ext.go
@@ -0,0 +1,13 @@
+// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
+//go:build !plus
+// +build !plus
+
+package nodeutils
+
+import (
+ "github.com/iwind/TeaGo/maps"
+)
+
+func filterMenuItems(menuItems []maps.Map, menuItem string, prefix string, query string) []maps.Map {
+ return menuItems
+}
diff --git a/internal/web/actions/default/clusters/cluster/node/settings/system/index.go b/internal/web/actions/default/clusters/cluster/node/settings/system/index.go
index f24f957f..ace8b612 100644
--- a/internal/web/actions/default/clusters/cluster/node/settings/system/index.go
+++ b/internal/web/actions/default/clusters/cluster/node/settings/system/index.go
@@ -3,8 +3,10 @@
package system
import (
+ "encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/cluster/node/nodeutils"
+ "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
@@ -32,6 +34,22 @@ func (this *IndexAction) RunGet(params struct {
var nodeMap = this.Data["node"].(maps.Map)
nodeMap["maxCPU"] = node.MaxCPU
+ // DNS
+ dnsResolverResp, err := this.RPC().NodeRPC().FindNodeDNSResolver(this.AdminContext(), &pb.FindNodeDNSResolverRequest{NodeId: params.NodeId})
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ var dnsResolverConfig = nodeconfigs.DefaultDNSResolverConfig()
+ if len(dnsResolverResp.DnsResolverJSON) > 0 {
+ err = json.Unmarshal(dnsResolverResp.DnsResolverJSON, dnsResolverConfig)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+ this.Data["dnsResolverConfig"] = dnsResolverConfig
+
this.Show()
}
@@ -39,6 +57,8 @@ func (this *IndexAction) RunPost(params struct {
NodeId int64
MaxCPU int32
+ DnsResolverJSON []byte
+
Must *actions.Must
CSRF *actionutils.CSRF
}) {
@@ -57,5 +77,26 @@ func (this *IndexAction) RunPost(params struct {
return
}
+ var dnsResolverConfig = nodeconfigs.DefaultDNSResolverConfig()
+ err = json.Unmarshal(params.DnsResolverJSON, dnsResolverConfig)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+
+ err = dnsResolverConfig.Init()
+ if err != nil {
+ this.Fail("校验DNS解析配置失败:" + err.Error())
+ }
+
+ _, err = this.RPC().NodeRPC().UpdateNodeDNSResolver(this.AdminContext(), &pb.UpdateNodeDNSResolverRequest{
+ NodeId: params.NodeId,
+ DnsResolverJSON: params.DnsResolverJSON,
+ })
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+
this.Success()
}
diff --git a/web/public/js/components.js b/web/public/js/components.js
index 145a14b1..686fa75e 100644
--- a/web/public/js/components.js
+++ b/web/public/js/components.js
@@ -3866,7 +3866,7 @@ Vue.component("traffic-map-box",{props:["v-stats","v-is-attack"],mounted:functio
-`}),Vue.component("label-on",{props:["v-is-on"],template:'已启用 已停用
'}),Vue.component("code-label",{methods:{click:function(e){this.$emit("click",e)}},template:' '}),Vue.component("code-label-plain",{template:' '}),Vue.component("tiny-label",{template:' '}),Vue.component("tiny-basic-label",{template:' '}),Vue.component("micro-basic-label",{template:' '}),Vue.component("grey-label",{props:["color"],data:function(){let e="grey";return{labelColor:e=null!=this.color&&0 '}),Vue.component("optional-label",{template:'(可选) '}),Vue.component("plus-label",{template:'Plus专属功能。 '}),Vue.component("first-menu",{props:[],template:' \t\t'}),Vue.component("more-options-indicator",{data:function(){return{visible:!1}},methods:{changeVisible:function(){this.visible=!this.visible,null!=Tea.Vue&&(Tea.Vue.moreOptionsVisible=this.visible),this.$emit("change",this.visible)}},template:'更多选项 收起选项 '}),Vue.component("page-size-selector",{data:function(){let t=window.location.search,i=10;if(0
+`}),Vue.component("label-on",{props:["v-is-on"],template:'已启用 已停用
'}),Vue.component("code-label",{methods:{click:function(e){this.$emit("click",e)}},template:' '}),Vue.component("code-label-plain",{template:' '}),Vue.component("tiny-label",{template:' '}),Vue.component("tiny-basic-label",{template:' '}),Vue.component("micro-basic-label",{template:' '}),Vue.component("grey-label",{props:["color"],data:function(){let e="grey";return{labelColor:e=null!=this.color&&0 '}),Vue.component("optional-label",{template:'(可选) '}),Vue.component("plus-label",{template:'Plus专属功能。 '}),Vue.component("pro-warning-label",{template:' 注意:通常不需要修改;如要修改,请在专家指导下进行。 '}),Vue.component("first-menu",{props:[],template:' \t\t'}),Vue.component("more-options-indicator",{data:function(){return{visible:!1}},methods:{changeVisible:function(){this.visible=!this.visible,null!=Tea.Vue&&(Tea.Vue.moreOptionsVisible=this.visible),this.$emit("change",this.visible)}},template:'更多选项 收起选项 '}),Vue.component("page-size-selector",{data:function(){let t=window.location.search,i=10;if(0
[每页] 10条 20条 30条 40条 50条 60条 70条 80条 90条 100条
`}),Vue.component("second-menu",{template:' \t\t'}),Vue.component("loading-message",{template:`
@@ -4456,6 +4456,20 @@ Vue.component("traffic-map-box",{props:["v-stats","v-is-attack"],mounted:functio
+
`}),Vue.component("dns-resolver-config-box",{props:["v-dns-resolver-config"],data:function(){let e=this.vDnsResolverConfig;return{config:e=null==e?{type:"default"}:e,types:[{name:"默认",code:"default"},{name:"CGO",code:"cgo"},{name:"Go原生",code:"goNative"}]}},template:`
+
+
+
+ 使用的DNS解析库
+
+
+ {{t.name}}
+
+
+
+
+
+
`}),Vue.component("grant-selector",{props:["v-grant","v-node-cluster-id","v-ns-cluster-id"],data:function(){return{grantId:null==this.vGrant?0:this.vGrant.id,grant:this.vGrant,nodeClusterId:null!=this.vNodeClusterId?this.vNodeClusterId:0,nsClusterId:null!=this.vNsClusterId?this.vNsClusterId:0}},methods:{select:function(){let t=this;teaweb.popup("/clusters/grants/selectPopup?nodeClusterId="+this.nodeClusterId+"&nsClusterId="+this.nsClusterId,{callback:e=>{t.grantId=e.data.grant.id,0{t.grantId=e.data.grant.id,0{t.grant=e.data.grant,t.notifyUpdate()}})}},remove:function(){this.grant=null,this.grantId=0,this.notifyUpdate()},notifyUpdate:function(){this.$emit("change",this.grant)}},template:`
{{grant.name}}
({{grant.methodName}}) ({{grant.username}})
diff --git a/web/public/js/components.src.js b/web/public/js/components.src.js
index 6919e908..82bb0115 100755
--- a/web/public/js/components.src.js
+++ b/web/public/js/components.src.js
@@ -11650,6 +11650,12 @@ Vue.component("plus-label", {
template: `
Plus专属功能。 `
})
+// 提醒设置项为专业设置
+Vue.component("pro-warning-label", {
+ template: `
注意:通常不需要修改;如要修改,请在专家指导下进行。`
+})
+
+
/**
* 一级菜单
*/
@@ -14242,6 +14248,50 @@ Vue.component("dns-domain-selector", {
`
})
+Vue.component("dns-resolver-config-box", {
+ props:["v-dns-resolver-config"],
+ data: function () {
+ let config = this.vDnsResolverConfig
+ if (config == null) {
+ config = {
+ type: "default"
+ }
+ }
+ return {
+ config: config,
+ types: [
+ {
+ name: "默认",
+ code: "default"
+ },
+ {
+ name: "CGO",
+ code: "cgo"
+ },
+ {
+ name: "Go原生",
+ code: "goNative"
+ },
+ ]
+ }
+ },
+ template: `
+
+
+
+ 使用的DNS解析库
+
+
+ {{t.name}}
+
+
+
+
+
+
+
`
+})
+
Vue.component("grant-selector", {
props: ["v-grant", "v-node-cluster-id", "v-ns-cluster-id"],
data: function () {
diff --git a/web/public/js/components/common/labels.js b/web/public/js/components/common/labels.js
index 297a50bf..39fed3a8 100644
--- a/web/public/js/components/common/labels.js
+++ b/web/public/js/components/common/labels.js
@@ -57,4 +57,9 @@ Vue.component("optional-label", {
// Plus专属
Vue.component("plus-label", {
template: `Plus专属功能。 `
-})
\ No newline at end of file
+})
+
+// 提醒设置项为专业设置
+Vue.component("pro-warning-label", {
+ template: ` 注意:通常不需要修改;如要修改,请在专家指导下进行。 `
+})
diff --git a/web/public/js/components/dns/dns-resolver-config-box.js b/web/public/js/components/dns/dns-resolver-config-box.js
new file mode 100644
index 00000000..b158cdd5
--- /dev/null
+++ b/web/public/js/components/dns/dns-resolver-config-box.js
@@ -0,0 +1,43 @@
+Vue.component("dns-resolver-config-box", {
+ props:["v-dns-resolver-config"],
+ data: function () {
+ let config = this.vDnsResolverConfig
+ if (config == null) {
+ config = {
+ type: "default"
+ }
+ }
+ return {
+ config: config,
+ types: [
+ {
+ name: "默认",
+ code: "default"
+ },
+ {
+ name: "CGO",
+ code: "cgo"
+ },
+ {
+ name: "Go原生",
+ code: "goNative"
+ },
+ ]
+ }
+ },
+ template: `
+
+
+
+ 使用的DNS解析库
+
+
+ {{t.name}}
+
+
+
+
+
+
+
`
+})
\ No newline at end of file
diff --git a/web/views/@default/clusters/cluster/node/settings/system/index.html b/web/views/@default/clusters/cluster/node/settings/system/index.html
index 405e800d..fc2b08a2 100644
--- a/web/views/@default/clusters/cluster/node/settings/system/index.html
+++ b/web/views/@default/clusters/cluster/node/settings/system/index.html
@@ -11,10 +11,14 @@
CPU线程数
-
+
+
+ DNS解析
+
+
\ No newline at end of file