-
Notifications
You must be signed in to change notification settings - Fork 14
/
wallet_change_password.go
103 lines (96 loc) · 2.48 KB
/
wallet_change_password.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
* Copyright (c) 2019 QLC Chain Team
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
package commands
import (
"fmt"
"github.com/abiosoft/ishell"
rpc "github.com/qlcchain/jsonrpc2"
"github.com/spf13/cobra"
"github.com/qlcchain/go-qlc/cmd/util"
"github.com/qlcchain/go-qlc/common/types"
)
func addWalletChangePasswordCmdByShell(parentCmd *ishell.Cmd) {
account := util.Flag{
Name: "account",
Must: true,
Usage: "account for wallet",
Value: "",
}
pwd := util.Flag{
Name: "password",
Must: true,
Usage: "password for wallet",
Value: "",
}
newPwd := util.Flag{
Name: "newpassword",
Must: true,
Usage: "new password for wallet",
Value: "",
}
args := []util.Flag{account, pwd, newPwd}
c := &ishell.Cmd{
Name: "changepassword",
Help: "change wallet password",
CompleterWithPrefix: util.OptsCompleter(args),
Func: func(c *ishell.Context) {
if util.HelpText(c, args) {
return
}
if err := util.CheckArgs(c, args); err != nil {
util.Warn(err)
return
}
accountP := util.StringVar(c.Args, account)
passwordP := util.StringVar(c.Args, pwd)
newpasswordP := util.StringVar(c.Args, newPwd)
err := changePwd(accountP, passwordP, newpasswordP)
if err != nil {
util.Warn(err)
} else {
util.Info(fmt.Sprintf("change password success for account: %s", accountP))
}
},
}
parentCmd.AddCmd(c)
}
func addWalletChangePasswordCmdByCobra(parentCmd *cobra.Command) {
var accountP string
var passwordP string
var newpasswordP string
var wcpCmd = &cobra.Command{
Use: "changepassword",
Short: "change wallet password",
Run: func(cmd *cobra.Command, args []string) {
err := changePwd(accountP, passwordP, newpasswordP)
if err != nil {
cmd.Println(err)
} else {
cmd.Printf("change password success for account: %s", accountP)
cmd.Println()
return
}
},
}
wcpCmd.Flags().StringVarP(&accountP, "account", "a", "", "wallet address")
wcpCmd.Flags().StringVarP(&passwordP, "password", "p", "", "password for wallet")
wcpCmd.Flags().StringVarP(&newpasswordP, "newpassword", "n", "", "new password for wallet")
parentCmd.AddCommand(wcpCmd)
}
func changePwd(accountP, pwdP, newPwdP string) error {
client, err := rpc.Dial(endpointP)
if err != nil {
return err
}
defer client.Close()
var addr types.Address
err = client.Call(&addr, "wallet_changePassword", accountP, pwdP, newPwdP)
if err != nil {
return err
}
return nil
}