diff --git a/internal/web/actions/default/clusters/cluster/node/node.go b/internal/web/actions/default/clusters/cluster/node/node.go index 2d7edee0..f5aa6b68 100644 --- a/internal/web/actions/default/clusters/cluster/node/node.go +++ b/internal/web/actions/default/clusters/cluster/node/node.go @@ -114,17 +114,17 @@ func (this *NodeAction) RunGet(params struct { grantMap := maps.Map{} grantId := loginParams.GetInt64("grantId") if grantId > 0 { - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: grantId}) + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: grantId}) if err != nil { this.ErrorPage(err) return } - if grantResp.Grant != nil { + if grantResp.NodeGrant != nil { grantMap = maps.Map{ - "id": grantResp.Grant.Id, - "name": grantResp.Grant.Name, - "method": grantResp.Grant.Method, - "methodName": grantutils.FindGrantMethodName(grantResp.Grant.Method), + "id": grantResp.NodeGrant.Id, + "name": grantResp.NodeGrant.Name, + "method": grantResp.NodeGrant.Method, + "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), } } } diff --git a/internal/web/actions/default/clusters/cluster/node/update.go b/internal/web/actions/default/clusters/cluster/node/update.go index a28f1a1e..e3ef2194 100644 --- a/internal/web/actions/default/clusters/cluster/node/update.go +++ b/internal/web/actions/default/clusters/cluster/node/update.go @@ -114,17 +114,17 @@ func (this *UpdateAction) RunGet(params struct { grantMap := maps.Map{} grantId := loginParams.GetInt64("grantId") if grantId > 0 { - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: grantId}) + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: grantId}) if err != nil { this.ErrorPage(err) return } - if grantResp.Grant != nil { + if grantResp.NodeGrant != nil { grantMap = maps.Map{ - "id": grantResp.Grant.Id, - "name": grantResp.Grant.Name, - "method": grantResp.Grant.Method, - "methodName": grantutils.FindGrantMethodName(grantResp.Grant.Method), + "id": grantResp.NodeGrant.Id, + "name": grantResp.NodeGrant.Name, + "method": grantResp.NodeGrant.Method, + "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), } } } diff --git a/internal/web/actions/default/clusters/cluster/settings/index.go b/internal/web/actions/default/clusters/cluster/settings/index.go index 965d6f35..18579a5e 100644 --- a/internal/web/actions/default/clusters/cluster/settings/index.go +++ b/internal/web/actions/default/clusters/cluster/settings/index.go @@ -36,12 +36,12 @@ func (this *IndexAction) RunGet(params struct { var grantMap interface{} = nil if cluster.GrantId > 0 { - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: cluster.GrantId}) + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: cluster.GrantId}) if err != nil { this.ErrorPage(err) return } - grant := grantResp.Grant + grant := grantResp.NodeGrant if grant != nil { grantMap = maps.Map{ "id": grant.Id, @@ -62,7 +62,7 @@ func (this *IndexAction) RunGet(params struct { this.Show() } -// 保存设置 +// RunPost 保存设置 func (this *IndexAction) RunPost(params struct { ClusterId int64 Name string diff --git a/internal/web/actions/default/clusters/cluster/updateNodeSSH.go b/internal/web/actions/default/clusters/cluster/updateNodeSSH.go index 49b2b365..cb5a66c5 100644 --- a/internal/web/actions/default/clusters/cluster/updateNodeSSH.go +++ b/internal/web/actions/default/clusters/cluster/updateNodeSSH.go @@ -58,17 +58,17 @@ func (this *UpdateNodeSSHAction) RunGet(params struct { // 认证信息 grantId := loginParams.GetInt64("grantId") - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: grantId}) + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: grantId}) if err != nil { this.ErrorPage(err) } var grantMap maps.Map = nil - if grantResp.Grant != nil { + if grantResp.NodeGrant != nil { grantMap = maps.Map{ - "id": grantResp.Grant.Id, - "name": grantResp.Grant.Name, - "method": grantResp.Grant.Method, - "methodName": grantutils.FindGrantMethodName(grantResp.Grant.Method), + "id": grantResp.NodeGrant.Id, + "name": grantResp.NodeGrant.Name, + "method": grantResp.NodeGrant.Method, + "methodName": grantutils.FindGrantMethodName(grantResp.NodeGrant.Method), } } this.Data["grant"] = grantMap diff --git a/internal/web/actions/default/clusters/grants/create.go b/internal/web/actions/default/clusters/grants/create.go index 4c2687d8..f40af196 100644 --- a/internal/web/actions/default/clusters/grants/create.go +++ b/internal/web/actions/default/clusters/grants/create.go @@ -64,7 +64,7 @@ func (this *CreateAction) RunPost(params struct { } // 创建日志 - defer this.CreateLog(oplogs.LevelInfo, "创建SSH认证 %d", createResp.GrantId) + defer this.CreateLog(oplogs.LevelInfo, "创建SSH认证 %d", createResp.NodeGrantId) this.Success() } diff --git a/internal/web/actions/default/clusters/grants/createPopup.go b/internal/web/actions/default/clusters/grants/createPopup.go index e886a653..66d5e95b 100644 --- a/internal/web/actions/default/clusters/grants/createPopup.go +++ b/internal/web/actions/default/clusters/grants/createPopup.go @@ -65,14 +65,14 @@ func (this *CreatePopupAction) RunPost(params struct { } this.Data["grant"] = maps.Map{ - "id": createResp.GrantId, + "id": createResp.NodeGrantId, "name": params.Name, "method": params.Method, "methodName": grantutils.FindGrantMethodName(params.Method), } // 创建日志 - defer this.CreateLog(oplogs.LevelInfo, "创建SSH认证 %d", createResp.GrantId) + defer this.CreateLog(oplogs.LevelInfo, "创建SSH认证 %d", createResp.NodeGrantId) this.Success() } diff --git a/internal/web/actions/default/clusters/grants/delete.go b/internal/web/actions/default/clusters/grants/delete.go index 19b8a3ef..dac24532 100644 --- a/internal/web/actions/default/clusters/grants/delete.go +++ b/internal/web/actions/default/clusters/grants/delete.go @@ -38,7 +38,7 @@ func (this *DeleteAction) RunPost(params struct { } // 删除 - _, err = this.RPC().NodeGrantRPC().DisableNodeGrant(this.AdminContext(), &pb.DisableNodeGrantRequest{GrantId: params.GrantId}) + _, err = this.RPC().NodeGrantRPC().DisableNodeGrant(this.AdminContext(), &pb.DisableNodeGrantRequest{NodeGrantId: params.GrantId}) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/clusters/grants/grant.go b/internal/web/actions/default/clusters/grants/grant.go index 0c65c593..75a3af69 100644 --- a/internal/web/actions/default/clusters/grants/grant.go +++ b/internal/web/actions/default/clusters/grants/grant.go @@ -19,19 +19,19 @@ func (this *GrantAction) Init() { func (this *GrantAction) RunGet(params struct { GrantId int64 }) { - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: params.GrantId}) + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: params.GrantId}) if err != nil { this.ErrorPage(err) return } - if grantResp.Grant == nil { + if grantResp.NodeGrant == nil { this.WriteString("can not find the grant") return } // TODO 处理节点专用的认证 - grant := grantResp.Grant + grant := grantResp.NodeGrant this.Data["grant"] = maps.Map{ "id": grant.Id, "name": grant.Name, diff --git a/internal/web/actions/default/clusters/grants/index.go b/internal/web/actions/default/clusters/grants/index.go index 81ba667a..c1298b5f 100644 --- a/internal/web/actions/default/clusters/grants/index.go +++ b/internal/web/actions/default/clusters/grants/index.go @@ -33,7 +33,7 @@ func (this *IndexAction) RunGet(params struct{}) { return } grantMaps := []maps.Map{} - for _, grant := range grantsResp.Grants { + for _, grant := range grantsResp.NodeGrants { // 集群数 countClustersResp, err := this.RPC().NodeClusterRPC().CountAllEnabledNodeClustersWithGrantId(this.AdminContext(), &pb.CountAllEnabledNodeClustersWithGrantIdRequest{GrantId: grant.Id}) if err != nil { diff --git a/internal/web/actions/default/clusters/grants/init.go b/internal/web/actions/default/clusters/grants/init.go index 932adb28..23e619f4 100644 --- a/internal/web/actions/default/clusters/grants/init.go +++ b/internal/web/actions/default/clusters/grants/init.go @@ -24,6 +24,7 @@ func init() { GetPost("/selectPopup", new(SelectPopupAction)). GetPost("/createPopup", new(CreatePopupAction)). GetPost("/updatePopup", new(UpdatePopupAction)). + GetPost("/test", new(TestAction)). EndAll() }) } diff --git a/internal/web/actions/default/clusters/grants/selectPopup.go b/internal/web/actions/default/clusters/grants/selectPopup.go index e5a05985..f5c0d316 100644 --- a/internal/web/actions/default/clusters/grants/selectPopup.go +++ b/internal/web/actions/default/clusters/grants/selectPopup.go @@ -23,7 +23,7 @@ func (this *SelectPopupAction) RunGet(params struct{}) { this.ErrorPage(err) return } - grants := grantsResp.Grants + grants := grantsResp.NodeGrants grantMaps := []maps.Map{} for _, grant := range grants { grantMaps = append(grantMaps, maps.Map{ @@ -52,12 +52,12 @@ func (this *SelectPopupAction) RunPost(params struct { this.Success() } - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: params.GrantId}) + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: params.GrantId}) if err != nil { this.ErrorPage(err) return } - grant := grantResp.Grant + grant := grantResp.NodeGrant if grant == nil { this.Fail("找不到要使用的认证") } diff --git a/internal/web/actions/default/clusters/grants/test.go b/internal/web/actions/default/clusters/grants/test.go new file mode 100644 index 00000000..d0fc9dd6 --- /dev/null +++ b/internal/web/actions/default/clusters/grants/test.go @@ -0,0 +1,78 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package grants + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" + "strings" +) + +type TestAction struct { + actionutils.ParentAction +} + +func (this *TestAction) Init() { + this.Nav("", "", "test") +} + +func (this *TestAction) RunGet(params struct { + GrantId int64 +}) { + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: params.GrantId}) + if err != nil { + this.ErrorPage(err) + return + } + if grantResp.NodeGrant == nil { + this.WriteString("can not find the grant") + return + } + + grant := grantResp.NodeGrant + this.Data["grant"] = maps.Map{ + "id": grant.Id, + "name": grant.Name, + "method": grant.Method, + "methodName": grantutils.FindGrantMethodName(grant.Method), + "username": grant.Username, + "password": strings.Repeat("*", len(grant.Password)), + "privateKey": grant.PrivateKey, + "description": grant.Description, + "su": grant.Su, + } + + this.Show() +} + +func (this *TestAction) RunPost(params struct { + GrantId int64 + Host string + Port int32 + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + params.Must. + Field("host", params.Host). + Require("请输入节点主机地址"). + Field("port", params.Port). + Gt(0, "请输入正确的端口号"). + Lt(65535, "请输入正确的端口号") + + resp, err := this.RPC().NodeGrantRPC().TestNodeGrant(this.AdminContext(), &pb.TestNodeGrantRequest{ + NodeGrantId: params.GrantId, + Host: params.Host, + Port: params.Port, + }) + if err != nil { + this.ErrorPage(err) + return + } + this.Data["isOk"] = resp.IsOk + this.Data["error"] = resp.Error + this.Success() +} diff --git a/internal/web/actions/default/clusters/grants/update.go b/internal/web/actions/default/clusters/grants/update.go index f35619bc..10380aa7 100644 --- a/internal/web/actions/default/clusters/grants/update.go +++ b/internal/web/actions/default/clusters/grants/update.go @@ -22,19 +22,19 @@ func (this *UpdateAction) RunGet(params struct { }) { this.Data["methods"] = grantutils.AllGrantMethods() - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: params.GrantId}) + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: params.GrantId}) if err != nil { this.ErrorPage(err) return } - if grantResp.Grant == nil { + if grantResp.NodeGrant == nil { this.WriteString("can not find the grant") return } // TODO 处理节点专用的认证 - grant := grantResp.Grant + grant := grantResp.NodeGrant this.Data["grant"] = maps.Map{ "id": grant.Id, "name": grant.Name, @@ -84,7 +84,7 @@ func (this *UpdateAction) RunPost(params struct { // TODO 检查grantId是否存在 _, err := this.RPC().NodeGrantRPC().UpdateNodeGrant(this.AdminContext(), &pb.UpdateNodeGrantRequest{ - GrantId: params.GrantId, + NodeGrantId: params.GrantId, Name: params.Name, Method: params.Method, Username: params.Username, diff --git a/internal/web/actions/default/clusters/grants/updatePopup.go b/internal/web/actions/default/clusters/grants/updatePopup.go index fcf5a10b..241a53d5 100644 --- a/internal/web/actions/default/clusters/grants/updatePopup.go +++ b/internal/web/actions/default/clusters/grants/updatePopup.go @@ -22,18 +22,18 @@ func (this *UpdatePopupAction) RunGet(params struct { }) { this.Data["methods"] = grantutils.AllGrantMethods() - grantResp, err := this.RPC().NodeGrantRPC().FindEnabledGrant(this.AdminContext(), &pb.FindEnabledGrantRequest{GrantId: params.GrantId}) + grantResp, err := this.RPC().NodeGrantRPC().FindEnabledNodeGrant(this.AdminContext(), &pb.FindEnabledNodeGrantRequest{NodeGrantId: params.GrantId}) if err != nil { this.ErrorPage(err) return } - if grantResp.Grant == nil { + if grantResp.NodeGrant == nil { this.WriteString("找不到要操作的对象") return } - grant := grantResp.Grant + grant := grantResp.NodeGrant this.Data["grant"] = maps.Map{ "id": grant.Id, "nodeId": grant.NodeId, @@ -82,7 +82,7 @@ func (this *UpdatePopupAction) RunPost(params struct { // 执行修改 _, err := this.RPC().NodeGrantRPC().UpdateNodeGrant(this.AdminContext(), &pb.UpdateNodeGrantRequest{ - GrantId: params.GrantId, + NodeGrantId: params.GrantId, Name: params.Name, Method: params.Method, Username: params.Username, diff --git a/web/views/@default/clusters/grants/@grant_menu.html b/web/views/@default/clusters/grants/@grant_menu.html index c184965b..528d98fc 100644 --- a/web/views/@default/clusters/grants/@grant_menu.html +++ b/web/views/@default/clusters/grants/@grant_menu.html @@ -2,5 +2,6 @@ 认证列表 | {{grant.name}}详情 + 测试 修改 diff --git a/web/views/@default/clusters/grants/create.html b/web/views/@default/clusters/grants/create.html index fcd8ce51..baed6f48 100644 --- a/web/views/@default/clusters/grants/create.html +++ b/web/views/@default/clusters/grants/create.html @@ -8,6 +8,7 @@ 名称 * +

起一个容易识别的名称。

@@ -52,7 +53,7 @@ - 描述 + 备注 diff --git a/web/views/@default/clusters/grants/createPopup.html b/web/views/@default/clusters/grants/createPopup.html index cfabe496..bc62b5ea 100644 --- a/web/views/@default/clusters/grants/createPopup.html +++ b/web/views/@default/clusters/grants/createPopup.html @@ -50,9 +50,9 @@ - + - 描述 + 备注 diff --git a/web/views/@default/clusters/grants/grant.html b/web/views/@default/clusters/grants/grant.html index 43c3712d..be598164 100644 --- a/web/views/@default/clusters/grants/grant.html +++ b/web/views/@default/clusters/grants/grant.html @@ -18,13 +18,13 @@ - - SSH用户名 - - {{grant.username}} -

SSH登录用户名。

- - + + SSH用户名 + + {{grant.username}} +

SSH登录用户名。

+ + SSH密码 {{grant.password}} @@ -34,17 +34,17 @@ - - RSA私钥 - - {{grant.privateKey}} -

用来生成登录SSH公钥的私钥

- - + + RSA私钥 + + {{grant.privateKey}} +

用来生成登录SSH公钥的私钥

+ + - 描述 + 备注 {{grant.description}} - @@ -56,12 +56,12 @@

使用此认证的集群

暂时还没有集群使用此认证。

- {{cluster.name}} + {{cluster.name}}

使用此认证的节点

暂时还没有节点使用此认证。

- {{node.name}}({{node.cluster.name}}) + {{node.name}}({{node.cluster.name}})
diff --git a/web/views/@default/clusters/grants/test.html b/web/views/@default/clusters/grants/test.html new file mode 100644 index 00000000..f8f2fda4 --- /dev/null +++ b/web/views/@default/clusters/grants/test.html @@ -0,0 +1,59 @@ +{$layout} +{$template "grant_menu"} + +
可以在这里测试SSH主机连接是否正常。
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
节点主机地址 * + +
节点主机端口 * + +
认证方式 + {{grant.methodName}} +
SSH用户名 + {{grant.username}} +
SSH密码{{grant.password}} +
RSA私钥 + {{grant.privateKey}} +
+ +
连接成功!
+
连接失败:{{resp.error}}
+ + 提交测试 + +
\ No newline at end of file diff --git a/web/views/@default/clusters/grants/test.js b/web/views/@default/clusters/grants/test.js new file mode 100644 index 00000000..06c42f2f --- /dev/null +++ b/web/views/@default/clusters/grants/test.js @@ -0,0 +1,17 @@ +Tea.context(function () { + this.isRequesting = false + this.resp = null + + this.success = function (resp) { + this.resp = resp.data + } + + this.requestBefore = function () { + this.isRequesting = true + this.resp = null + } + + this.requestDone = function () { + this.isRequesting = false + } +}) \ No newline at end of file diff --git a/web/views/@default/clusters/grants/update.html b/web/views/@default/clusters/grants/update.html index f6fa5770..17b40d0f 100644 --- a/web/views/@default/clusters/grants/update.html +++ b/web/views/@default/clusters/grants/update.html @@ -9,6 +9,7 @@ 名称 * +

起一个容易识别的名称。

@@ -49,7 +50,7 @@ - 描述 + 备注 diff --git a/web/views/@default/clusters/grants/updatePopup.html b/web/views/@default/clusters/grants/updatePopup.html index 735fc5a8..c010ae53 100644 --- a/web/views/@default/clusters/grants/updatePopup.html +++ b/web/views/@default/clusters/grants/updatePopup.html @@ -52,9 +52,9 @@ - + - 描述 + 备注