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

常用时间:  1天  |  3天  |  一周  |  30天 

-`}),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
\t\t\t \t\t\t
\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
\t\t\t \t\t\t
\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("second-menu",{template:' \t\t
\t\t\t \t\t\t
\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解析库 + +

修改此项配置后,需要重启节点进程才会生效。

+
+
`}),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解析库 + +

修改此项配置后,需要重启节点进程才会生效。

+
+
+
` +}) + 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解析库 + +

修改此项配置后,需要重启节点进程才会生效。

+
+
+
` +}) \ 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线程数 -

当前节点可以使用的最多的CPU线程数,如果为0则默认为4倍的CPU线程数。

+

当前节点可以使用的最多的CPU线程数,如果为0则默认为4倍的CPU线程数。

+ +

DNS解析

+ + \ No newline at end of file