From cbdbe6b9c9e0832d4cb959226d5fd74329c3887b Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sat, 14 Aug 2021 21:33:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E9=80=89=E6=8B=A9=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E6=97=B6=E5=A2=9E=E5=8A=A0=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../default/clusters/cluster/createNode.go | 1 + .../default/clusters/cluster/node/detail.go | 1 + .../default/clusters/cluster/node/update.go | 1 + .../default/clusters/cluster/updateNodeSSH.go | 5 +++ .../default/clusters/grants/selectPopup.go | 27 +++++++++++- .../default/ns/clusters/cluster/node/index.go | 43 +++++++++++++++++++ .../ns/clusters/cluster/node/update.go | 1 + .../ns/clusters/cluster/updateNodeSSH.go | 6 +++ .../js/components/grant/grant-selector.js | 13 +++--- .../node/node-login-suggest-ports.js | 2 +- .../@default/clusters/cluster/createNode.html | 6 ++- .../clusters/cluster/node/detail.html | 2 +- .../clusters/cluster/node/update.html | 2 +- .../@default/clusters/cluster/node/update.js | 3 +- .../clusters/cluster/updateNodeSSH.html | 2 +- .../@default/clusters/grants/selectPopup.css | 29 +++++++++++++ .../clusters/grants/selectPopup.css.map | 1 + .../@default/clusters/grants/selectPopup.html | 39 ++++++++++++----- .../@default/clusters/grants/selectPopup.less | 33 ++++++++++++++ .../ns/clusters/cluster/node/index.html | 40 +++++++++++++++++ .../ns/clusters/cluster/node/update.html | 2 +- .../ns/clusters/cluster/node/update.js | 3 +- .../ns/clusters/cluster/updateNodeSSH.html | 2 +- 23 files changed, 238 insertions(+), 26 deletions(-) create mode 100644 web/views/@default/clusters/grants/selectPopup.css create mode 100644 web/views/@default/clusters/grants/selectPopup.css.map create mode 100644 web/views/@default/clusters/grants/selectPopup.less diff --git a/internal/web/actions/default/clusters/cluster/createNode.go b/internal/web/actions/default/clusters/cluster/createNode.go index ebe84ed9..d8773a2b 100644 --- a/internal/web/actions/default/clusters/cluster/createNode.go +++ b/internal/web/actions/default/clusters/cluster/createNode.go @@ -219,6 +219,7 @@ func (this *CreateNodeAction) RunPost(params struct { "name": grantResp.NodeGrant.Name, "method": grantResp.NodeGrant.Method, "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), + "username": grantResp.NodeGrant.Username, } } } diff --git a/internal/web/actions/default/clusters/cluster/node/detail.go b/internal/web/actions/default/clusters/cluster/node/detail.go index 8dc78dcd..858c1ad1 100644 --- a/internal/web/actions/default/clusters/cluster/node/detail.go +++ b/internal/web/actions/default/clusters/cluster/node/detail.go @@ -165,6 +165,7 @@ func (this *DetailAction) RunGet(params struct { "name": grantResp.NodeGrant.Name, "method": grantResp.NodeGrant.Method, "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), + "username": grantResp.NodeGrant.Username, } } } diff --git a/internal/web/actions/default/clusters/cluster/node/update.go b/internal/web/actions/default/clusters/cluster/node/update.go index 093608de..dc9e3f7b 100644 --- a/internal/web/actions/default/clusters/cluster/node/update.go +++ b/internal/web/actions/default/clusters/cluster/node/update.go @@ -150,6 +150,7 @@ func (this *UpdateAction) RunGet(params struct { "name": grantResp.NodeGrant.Name, "method": grantResp.NodeGrant.Method, "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), + "username": grantResp.NodeGrant.Username, } } } diff --git a/internal/web/actions/default/clusters/cluster/updateNodeSSH.go b/internal/web/actions/default/clusters/cluster/updateNodeSSH.go index ecc0061b..8537dfd0 100644 --- a/internal/web/actions/default/clusters/cluster/updateNodeSSH.go +++ b/internal/web/actions/default/clusters/cluster/updateNodeSSH.go @@ -36,6 +36,11 @@ func (this *UpdateNodeSSHAction) RunGet(params struct { "id": node.Id, "name": node.Name, } + if nodeResp.Node.NodeCluster != nil { + this.Data["clusterId"] = nodeResp.Node.NodeCluster.Id + } else { + this.Data["clusterId"] = 0 + } // SSH loginParams := maps.Map{ diff --git a/internal/web/actions/default/clusters/grants/selectPopup.go b/internal/web/actions/default/clusters/grants/selectPopup.go index a7950b7c..71ae96d7 100644 --- a/internal/web/actions/default/clusters/grants/selectPopup.go +++ b/internal/web/actions/default/clusters/grants/selectPopup.go @@ -16,7 +16,10 @@ func (this *SelectPopupAction) Init() { this.Nav("", "", "") } -func (this *SelectPopupAction) RunGet(params struct{}) { +func (this *SelectPopupAction) RunGet(params struct { + NodeClusterId int64 + NsClusterId int64 +}) { // 所有的认证 grantsResp, err := this.RPC().NodeGrantRPC().FindAllEnabledNodeGrants(this.AdminContext(), &pb.FindAllEnabledNodeGrantsRequest{}) if err != nil { @@ -37,6 +40,28 @@ func (this *SelectPopupAction) RunGet(params struct{}) { } this.Data["grants"] = grantMaps + // 推荐的认证 + suggestGrantsResp, err := this.RPC().NodeGrantRPC().FindSuggestNodeGrants(this.AdminContext(), &pb.FindSuggestNodeGrantsRequest{ + NodeClusterId: params.NodeClusterId, + NsClusterId: params.NsClusterId, + }) + if err != nil { + this.ErrorPage(err) + return + } + var suggestGrantMaps = []maps.Map{} + for _, grant := range suggestGrantsResp.NodeGrants { + suggestGrantMaps = append(suggestGrantMaps, maps.Map{ + "id": grant.Id, + "name": grant.Name, + "method": grant.Method, + "methodName": grantutils.FindGrantMethodName(grant.Method), + "username": grant.Username, + "description": grant.Description, + }) + } + this.Data["suggestGrants"] = suggestGrantMaps + this.Show() } diff --git a/internal/web/actions/default/ns/clusters/cluster/node/index.go b/internal/web/actions/default/ns/clusters/cluster/node/index.go index fce62036..632a719a 100644 --- a/internal/web/actions/default/ns/clusters/cluster/node/index.go +++ b/internal/web/actions/default/ns/clusters/cluster/node/index.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/maps" @@ -102,6 +103,46 @@ func (this *IndexAction) RunGet(params struct { this.Data["newVersion"] = "" } + // 登录信息 + var loginMap maps.Map = nil + if node.NodeLogin != nil { + loginParams := maps.Map{} + if len(node.NodeLogin.Params) > 0 { + err = json.Unmarshal(node.NodeLogin.Params, &loginParams) + if err != nil { + this.ErrorPage(err) + return + } + } + + grantMap := maps.Map{} + grantId := loginParams.GetInt64("grantId") + if grantId > 0 { + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: grantId}) + if err != nil { + this.ErrorPage(err) + return + } + if grantResp.NodeGrant != nil { + grantMap = maps.Map{ + "id": grantResp.NodeGrant.Id, + "name": grantResp.NodeGrant.Name, + "method": grantResp.NodeGrant.Method, + "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), + "username": grantResp.NodeGrant.Username, + } + } + } + + loginMap = maps.Map{ + "id": node.NodeLogin.Id, + "name": node.NodeLogin.Name, + "type": node.NodeLogin.Type, + "params": loginParams, + "grant": grantMap, + } + } + this.Data["node"] = maps.Map{ "id": node.Id, "name": node.Name, @@ -131,6 +172,8 @@ func (this *IndexAction) RunGet(params struct { "cacheTotalDiskSize": numberutils.FormatBytes(status.CacheTotalDiskSize), "cacheTotalMemorySize": numberutils.FormatBytes(status.CacheTotalMemorySize), }, + + "login": loginMap, } this.Show() diff --git a/internal/web/actions/default/ns/clusters/cluster/node/update.go b/internal/web/actions/default/ns/clusters/cluster/node/update.go index 47b111c7..1a3a6a47 100644 --- a/internal/web/actions/default/ns/clusters/cluster/node/update.go +++ b/internal/web/actions/default/ns/clusters/cluster/node/update.go @@ -90,6 +90,7 @@ func (this *UpdateAction) RunGet(params struct { "name": grantResp.NodeGrant.Name, "method": grantResp.NodeGrant.Method, "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), + "username": grantResp.NodeGrant.Username, } } } diff --git a/internal/web/actions/default/ns/clusters/cluster/updateNodeSSH.go b/internal/web/actions/default/ns/clusters/cluster/updateNodeSSH.go index 976f6e3d..2c0416be 100644 --- a/internal/web/actions/default/ns/clusters/cluster/updateNodeSSH.go +++ b/internal/web/actions/default/ns/clusters/cluster/updateNodeSSH.go @@ -37,6 +37,12 @@ func (this *UpdateNodeSSHAction) RunGet(params struct { "name": node.Name, } + if nodeResp.NsNode.NsCluster != nil { + this.Data["clusterId"] = nodeResp.NsNode.NsCluster.Id + } else { + this.Data["clusterId"] = 0 + } + // SSH loginParams := maps.Map{ "host": "", diff --git a/web/public/js/components/grant/grant-selector.js b/web/public/js/components/grant/grant-selector.js index 746483da..7f22d703 100644 --- a/web/public/js/components/grant/grant-selector.js +++ b/web/public/js/components/grant/grant-selector.js @@ -1,23 +1,26 @@ Vue.component("grant-selector", { - props: ["vGrant"], + props: ["v-grant", "v-node-cluster-id", "v-ns-cluster-id"], data: function () { return { grantId: (this.vGrant == null) ? 0 : this.vGrant.id, - grant: this.vGrant + grant: this.vGrant, + nodeClusterId: (this.vNodeClusterId != null) ? this.vNodeClusterId : 0, + nsClusterId: (this.vNsClusterId != null) ? this.vNsClusterId : 0 } }, methods: { // 选择授权 select: function () { let that = this; - teaweb.popup("/clusters/grants/selectPopup", { + teaweb.popup("/clusters/grants/selectPopup?nodeClusterId=" + this.nodeClusterId + "&nsClusterId=" + this.nsClusterId, { callback: (resp) => { that.grantId = resp.data.grant.id; if (that.grantId > 0) { that.grant = resp.data.grant; } that.notifyUpdate() - } + }, + height: "26em" }) }, @@ -64,7 +67,7 @@ Vue.component("grant-selector", { }, template: `
-
{{grant.name}}({{grant.methodName}})
+
{{grant.name}}({{grant.methodName}})({{grant.username}})
[选择已有认证]     [添加新认证]
diff --git a/web/public/js/components/node/node-login-suggest-ports.js b/web/public/js/components/node/node-login-suggest-ports.js index f571b2be..41b554c3 100644 --- a/web/public/js/components/node/node-login-suggest-ports.js +++ b/web/public/js/components/node/node-login-suggest-ports.js @@ -48,7 +48,7 @@ Vue.component("node-login-suggest-ports", { template: ` 正在检查端口... - 推荐端口:{{port}} + 可能端口:{{port}}     diff --git a/web/views/@default/clusters/cluster/createNode.html b/web/views/@default/clusters/cluster/createNode.html index e1f1d1aa..e158998f 100644 --- a/web/views/@default/clusters/cluster/createNode.html +++ b/web/views/@default/clusters/cluster/createNode.html @@ -78,7 +78,7 @@ SSH登录认证 - + @@ -117,7 +117,7 @@ SSH登录认证 * - + @@ -147,6 +147,8 @@ nodeId: "{{node.uniqueId}}" secret: "{{node.secret}}"
然后再使用bin/edge-node start命令启动节点。
+
+ 安装完成 跳过安装
diff --git a/web/views/@default/clusters/cluster/node/detail.html b/web/views/@default/clusters/cluster/node/detail.html index 0ff967a3..7f81482f 100644 --- a/web/views/@default/clusters/cluster/node/detail.html +++ b/web/views/@default/clusters/cluster/node/detail.html @@ -113,7 +113,7 @@ SSH登录认证
- {{node.login.grant.name}}({{node.login.grant.methodName}}) + {{node.login.grant.name}}({{node.login.grant.methodName}})({{node.login.grant.username}})
尚未设置 diff --git a/web/views/@default/clusters/cluster/node/update.html b/web/views/@default/clusters/cluster/node/update.html index 9eba3067..63f5be08 100644 --- a/web/views/@default/clusters/cluster/node/update.html +++ b/web/views/@default/clusters/cluster/node/update.html @@ -68,7 +68,7 @@ SSH登录认证 - + diff --git a/web/views/@default/clusters/cluster/node/update.js b/web/views/@default/clusters/cluster/node/update.js index 458d10fd..cc4ad02a 100644 --- a/web/views/@default/clusters/cluster/node/update.js +++ b/web/views/@default/clusters/cluster/node/update.js @@ -35,7 +35,8 @@ Tea.context(function () { id: this.node.login.grant.id, name: this.node.login.grant.name, method: this.node.login.grant.method, - methodName: this.node.login.grant.methodName + methodName: this.node.login.grant.methodName, + username: this.node.login.grant.username } } } diff --git a/web/views/@default/clusters/cluster/updateNodeSSH.html b/web/views/@default/clusters/cluster/updateNodeSSH.html index d7b38bd5..752f6108 100644 --- a/web/views/@default/clusters/cluster/updateNodeSSH.html +++ b/web/views/@default/clusters/cluster/updateNodeSSH.html @@ -23,7 +23,7 @@ SSH登录认证 * - + diff --git a/web/views/@default/clusters/grants/selectPopup.css b/web/views/@default/clusters/grants/selectPopup.css new file mode 100644 index 00000000..39f537d7 --- /dev/null +++ b/web/views/@default/clusters/grants/selectPopup.css @@ -0,0 +1,29 @@ +.grants-box { + margin-top: 1em; +} +.grant-box { + float: left; + width: 12em; + height: 4.5em; + overflow-x: hidden; + overflow-y: auto; + margin-right: 0.5em; + border: 1px #ccc solid; + margin-bottom: 0.5em; + padding: 0.5em 0.3em; + text-align: left; + cursor: pointer; +} +.grant-box .small { + font-size: 0.8em; +} +.grant-box div.method { + margin-top: 0.3em; +} +.grant-box div.method .small { + font-size: 0.8em; +} +.grant-box::-webkit-scrollbar { + width: 4px; +} +/*# sourceMappingURL=selectPopup.css.map */ \ No newline at end of file diff --git a/web/views/@default/clusters/grants/selectPopup.css.map b/web/views/@default/clusters/grants/selectPopup.css.map new file mode 100644 index 00000000..efc099b6 --- /dev/null +++ b/web/views/@default/clusters/grants/selectPopup.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["selectPopup.less"],"names":[],"mappings":"AAAA;EACC,eAAA;;AAGD;EACC,WAAA;EACA,WAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,sBAAA;EACA,oBAAA;EACA,oBAAA;EACA,gBAAA;EACA,eAAA;;AAXD,UAaC;EACC,gBAAA;;AAdF,UAiBC,IAAG;EACF,iBAAA;;AAlBF,UAiBC,IAAG,OAGF;EACC,gBAAA;;AAKH,UAAU;EACT,UAAA","file":"selectPopup.css"} \ No newline at end of file diff --git a/web/views/@default/clusters/grants/selectPopup.html b/web/views/@default/clusters/grants/selectPopup.html index 00a93759..16a92394 100644 --- a/web/views/@default/clusters/grants/selectPopup.html +++ b/web/views/@default/clusters/grants/selectPopup.html @@ -1,6 +1,6 @@ {$layout "layout_popup"} -

选择认证

+

选择SSH认证

@@ -10,12 +10,31 @@
- - - - -
- 暂时还没有可用的认证。 - {{grant.name}} ({{grant.methodName}})({{grant.username}}) -

请点击选中某个认证。

-
\ No newline at end of file +
+ +暂时还没有可用的认证。 + +

可能的认证

+
+
+
{{grant.name}} ({{grant.username}}) +
+ {{grant.methodName}} +
+
+
+
+
+ +

全部认证

+
+
+
{{grant.name}} ({{grant.username}}) +
+ {{grant.methodName}} +
+
+
+
+
+

请点击使用某个认证。

diff --git a/web/views/@default/clusters/grants/selectPopup.less b/web/views/@default/clusters/grants/selectPopup.less new file mode 100644 index 00000000..60ccd07e --- /dev/null +++ b/web/views/@default/clusters/grants/selectPopup.less @@ -0,0 +1,33 @@ +.grants-box { + margin-top: 1em; +} + +.grant-box { + float: left; + width: 12em; + height: 4.5em; + overflow-x: hidden; + overflow-y: auto; + margin-right: 0.5em; + border: 1px #ccc solid; + margin-bottom: 0.5em; + padding: 0.5em 0.3em; + text-align: left; + cursor: pointer; + + .small { + font-size: 0.8em; + } + + div.method { + margin-top: 0.3em; + + .small { + font-size: 0.8em; + } + } +} + +.grant-box::-webkit-scrollbar { + width: 4px; +} \ No newline at end of file diff --git a/web/views/@default/ns/clusters/cluster/node/index.html b/web/views/@default/ns/clusters/cluster/node/index.html index 9f9118af..8dee5855 100644 --- a/web/views/@default/ns/clusters/cluster/node/index.html +++ b/web/views/@default/ns/clusters/cluster/node/index.html @@ -29,6 +29,46 @@ + + + + + + SSH主机地址 + +
+ {{node.login.params.host}} + 尚未设置 +
+
+ 尚未设置 +
+ + + + SSH主机端口 + +
+ {{node.login.params.port}} + 尚未设置 +
+ + 尚未设置 + + + + + SSH登录认证 + +
+ {{node.login.grant.name}}({{node.login.grant.methodName}})({{node.login.grant.username}}) +
+ + 尚未设置 + + + +
diff --git a/web/views/@default/ns/clusters/cluster/node/update.html b/web/views/@default/ns/clusters/cluster/node/update.html index d0a9fc48..0bbbf94f 100644 --- a/web/views/@default/ns/clusters/cluster/node/update.html +++ b/web/views/@default/ns/clusters/cluster/node/update.html @@ -49,7 +49,7 @@ SSH登录认证 - + diff --git a/web/views/@default/ns/clusters/cluster/node/update.js b/web/views/@default/ns/clusters/cluster/node/update.js index ad5aa90e..2c332053 100644 --- a/web/views/@default/ns/clusters/cluster/node/update.js +++ b/web/views/@default/ns/clusters/cluster/node/update.js @@ -27,7 +27,8 @@ Tea.context(function () { id: this.node.login.grant.id, name: this.node.login.grant.name, method: this.node.login.grant.method, - methodName: this.node.login.grant.methodName + methodName: this.node.login.grant.methodName, + username: this.node.login.grant.username } } } diff --git a/web/views/@default/ns/clusters/cluster/updateNodeSSH.html b/web/views/@default/ns/clusters/cluster/updateNodeSSH.html index d7b38bd5..64ec88c3 100644 --- a/web/views/@default/ns/clusters/cluster/updateNodeSSH.html +++ b/web/views/@default/ns/clusters/cluster/updateNodeSSH.html @@ -23,7 +23,7 @@ SSH登录认证 * - +