Skip to content

Commit 711e36d

Browse files
committed
节点SSH密码和私钥均以掩码方式显示
1 parent 78b52e7 commit 711e36d

File tree

8 files changed

+50
-23
lines changed

8 files changed

+50
-23
lines changed

internal/web/actions/default/clusters/grants/grant.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,22 @@ func (this *GrantAction) RunGet(params struct {
3131

3232
// TODO 处理节点专用的认证
3333

34-
grant := grantResp.NodeGrant
34+
var grant = grantResp.NodeGrant
35+
36+
var privateKey = grant.PrivateKey
37+
const maskLength = 64
38+
if len(privateKey) > maskLength+32 {
39+
privateKey = privateKey[:maskLength] + strings.Repeat("*", len(privateKey)-maskLength)
40+
}
41+
3542
this.Data["grant"] = maps.Map{
3643
"id": grant.Id,
3744
"name": grant.Name,
3845
"method": grant.Method,
3946
"methodName": grantutils.FindGrantMethodName(grant.Method, this.LangCode()),
4047
"username": grant.Username,
4148
"password": strings.Repeat("*", len(grant.Password)),
42-
"privateKey": grant.PrivateKey,
49+
"privateKey": privateKey,
4350
"passphrase": strings.Repeat("*", len(grant.Passphrase)),
4451
"description": grant.Description,
4552
"su": grant.Su,

internal/web/actions/default/clusters/grants/index.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (this *IndexAction) RunGet(params struct {
2727
this.ErrorPage(err)
2828
return
2929
}
30-
page := this.NewPage(countResp.Count)
30+
var page = this.NewPage(countResp.Count)
3131
this.Data["page"] = page.AsHTML()
3232

3333
grantsResp, err := this.RPC().NodeGrantRPC().ListEnabledNodeGrants(this.AdminContext(), &pb.ListEnabledNodeGrantsRequest{
@@ -39,23 +39,23 @@ func (this *IndexAction) RunGet(params struct {
3939
this.ErrorPage(err)
4040
return
4141
}
42-
grantMaps := []maps.Map{}
42+
var grantMaps = []maps.Map{}
4343
for _, grant := range grantsResp.NodeGrants {
4444
// 集群数
4545
countClustersResp, err := this.RPC().NodeClusterRPC().CountAllEnabledNodeClustersWithNodeGrantId(this.AdminContext(), &pb.CountAllEnabledNodeClustersWithNodeGrantIdRequest{NodeGrantId: grant.Id})
4646
if err != nil {
4747
this.ErrorPage(err)
4848
return
4949
}
50-
countClusters := countClustersResp.Count
50+
var countClusters = countClustersResp.Count
5151

5252
// 节点数
5353
countNodesResp, err := this.RPC().NodeRPC().CountAllEnabledNodesWithNodeGrantId(this.AdminContext(), &pb.CountAllEnabledNodesWithNodeGrantIdRequest{NodeGrantId: grant.Id})
5454
if err != nil {
5555
this.ErrorPage(err)
5656
return
5757
}
58-
countNodes := countNodesResp.Count
58+
var countNodes = countNodesResp.Count
5959

6060
grantMaps = append(grantMaps, maps.Map{
6161
"id": grant.Id,

internal/web/actions/default/clusters/grants/update.go

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package grants
22

3-
import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
3+
import (
4+
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
45
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils"
56
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
67
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
78
"github.com/iwind/TeaGo/actions"
89
"github.com/iwind/TeaGo/maps"
910
"golang.org/x/crypto/ssh"
11+
"strings"
1012
)
1113

1214
type UpdateAction struct {
@@ -34,15 +36,23 @@ func (this *UpdateAction) RunGet(params struct {
3436

3537
// TODO 处理节点专用的认证
3638

37-
grant := grantResp.NodeGrant
39+
var grant = grantResp.NodeGrant
40+
41+
// private key
42+
var privateKey = grant.PrivateKey
43+
const maskLength = 64
44+
if len(privateKey) > maskLength+32 {
45+
privateKey = privateKey[:maskLength] + strings.Repeat("*", len(privateKey)-maskLength)
46+
}
47+
3848
this.Data["grant"] = maps.Map{
3949
"id": grant.Id,
4050
"name": grant.Name,
4151
"method": grant.Method,
4252
"methodName": grantutils.FindGrantMethodName(grant.Method, this.LangCode()),
4353
"username": grant.Username,
44-
"password": grant.Password,
45-
"privateKey": grant.PrivateKey,
54+
"password": strings.Repeat("*", len(grant.Password)),
55+
"privateKey": privateKey,
4656
"passphrase": grant.Passphrase,
4757
"description": grant.Description,
4858
"su": grant.Su,
@@ -85,15 +95,17 @@ func (this *UpdateAction) RunPost(params struct {
8595
}
8696

8797
// 验证私钥
88-
var err error
89-
if len(params.Passphrase) > 0 {
90-
_, err = ssh.ParsePrivateKeyWithPassphrase([]byte(params.PrivateKey), []byte(params.Passphrase))
91-
} else {
92-
_, err = ssh.ParsePrivateKey([]byte(params.PrivateKey))
93-
}
94-
if err != nil {
95-
this.Fail("私钥验证失败,请检查格式:" + err.Error())
96-
return
98+
if !strings.HasSuffix(params.PrivateKey, "******") /* 非掩码 */ {
99+
var err error
100+
if len(params.Passphrase) > 0 {
101+
_, err = ssh.ParsePrivateKeyWithPassphrase([]byte(params.PrivateKey), []byte(params.Passphrase))
102+
} else {
103+
_, err = ssh.ParsePrivateKey([]byte(params.PrivateKey))
104+
}
105+
if err != nil {
106+
this.Fail("私钥验证失败,请检查格式:" + err.Error())
107+
return
108+
}
97109
}
98110
default:
99111
this.Fail("请选择正确的认证方式")

web/views/@default/clusters/grants/create.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
<tr>
3434
<td>SSH密码</td>
3535
<td><input type="password" name="password" maxlength="100"/>
36-
<p class="comment">SSH登录用户密码。</p> </td>
36+
<p class="comment">SSH登录用户密码。<mask-warning></mask-warning></p> </td>
3737
</tr>
3838
</tbody>
3939

@@ -50,7 +50,7 @@
5050
<td>RSA私钥 *</td>
5151
<td>
5252
<file-textarea name="privateKey" spellcheck="false" placeholder="填入RSA私钥内容或者拖动私钥文件到当前框中"></file-textarea>
53-
<p class="comment">用来生成登录SSH公钥的私钥。</p>
53+
<p class="comment">用来生成登录SSH公钥的私钥。<mask-warning></mask-warning></p>
5454
</td>
5555
</tr>
5656
<tr>

web/views/@default/clusters/grants/grant.css

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/views/@default/clusters/grants/grant.css.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.CodeMirror-wrap pre {
2+
word-break: break-all !important;
3+
}

web/views/@default/clusters/grants/update.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<tr>
3535
<td>SSH密码</td>
3636
<td><input type="password" name="password" maxlength="100" v-model="grant.password"/>
37-
<p class="comment">SSH登录用户密码。</p> </td>
37+
<p class="comment">SSH登录用户密码。<mask-warning></mask-warning></p> </td>
3838
</tr>
3939
</tbody>
4040

@@ -51,7 +51,7 @@
5151
<td>RSA私钥 *</td>
5252
<td>
5353
<file-textarea name="privateKey" v-model="grant.privateKey" spellcheck="false" placeholder="填入RSA私钥内容或者拖动私钥文件到当前框中"></file-textarea>
54-
<p class="comment">用来生成登录SSH公钥的私钥</p>
54+
<p class="comment">用来生成登录SSH公钥的私钥<mask-warning></mask-warning></p>
5555
</td>
5656
</tr>
5757
<tr>

0 commit comments

Comments
 (0)