forked from TrueCloudLab/frostfs-node
[#635] cli: Do not enter password twice
Obtain key once in every cobra command to pass it to `getOwnerID` and `initSession` and do not ask to enter password more than one time in `put` and `putSG` operations. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
parent
02ca1c4cc1
commit
14afc6a1e5
2 changed files with 82 additions and 23 deletions
|
@ -2,6 +2,7 @@ package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"crypto/ecdsa"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -194,11 +195,7 @@ func init() {
|
||||||
// objectCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
// objectCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
||||||
}
|
}
|
||||||
|
|
||||||
func initSession(ctx context.Context) (client.Client, *session.Token, error) {
|
func initSession(ctx context.Context, key *ecdsa.PrivateKey) (client.Client, *session.Token, error) {
|
||||||
key, err := getKey()
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, fmt.Errorf("can't fetch private key: %w", err)
|
|
||||||
}
|
|
||||||
cli, err := getSDKClient(key)
|
cli, err := getSDKClient(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("can't create client: %w", err)
|
return nil, nil, fmt.Errorf("can't create client: %w", err)
|
||||||
|
@ -211,7 +208,13 @@ func initSession(ctx context.Context) (client.Client, *session.Token, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func putObject(cmd *cobra.Command, _ []string) {
|
func putObject(cmd *cobra.Command, _ []string) {
|
||||||
ownerID, err := getOwnerID()
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ownerID, err := getOwnerID(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -261,7 +264,7 @@ func putObject(cmd *cobra.Command, _ []string) {
|
||||||
obj.SetAttributes(attrs...)
|
obj.SetAttributes(attrs...)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -290,6 +293,12 @@ func putObject(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteObject(cmd *cobra.Command, _ []string) {
|
func deleteObject(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
objAddr, err := getObjectAddress(cmd)
|
objAddr, err := getObjectAddress(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -297,7 +306,7 @@ func deleteObject(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -325,6 +334,12 @@ func deleteObject(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getObject(cmd *cobra.Command, _ []string) {
|
func getObject(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
objAddr, err := getObjectAddress(cmd)
|
objAddr, err := getObjectAddress(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -346,7 +361,7 @@ func getObject(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -393,6 +408,12 @@ func getObject(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getObjectHeader(cmd *cobra.Command, _ []string) {
|
func getObjectHeader(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
objAddr, err := getObjectAddress(cmd)
|
objAddr, err := getObjectAddress(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -400,7 +421,7 @@ func getObjectHeader(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -440,6 +461,12 @@ func getObjectHeader(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func searchObject(cmd *cobra.Command, _ []string) {
|
func searchObject(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
cid, err := getCID(cmd)
|
cid, err := getCID(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -453,7 +480,7 @@ func searchObject(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -481,6 +508,12 @@ func searchObject(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getObjectHash(cmd *cobra.Command, _ []string) {
|
func getObjectHash(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
objAddr, err := getObjectAddress(cmd)
|
objAddr, err := getObjectAddress(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -506,7 +539,7 @@ func getObjectHash(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -576,11 +609,7 @@ func getObjectHash(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getOwnerID() (*owner.ID, error) {
|
func getOwnerID(key *ecdsa.PrivateKey) (*owner.ID, error) {
|
||||||
key, err := getKey()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
w, err := owner.NEO3WalletFromPublicKey(&key.PublicKey)
|
w, err := owner.NEO3WalletFromPublicKey(&key.PublicKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -897,6 +926,12 @@ func getBearerToken(cmd *cobra.Command, flagname string) (*token.BearerToken, er
|
||||||
}
|
}
|
||||||
|
|
||||||
func getObjectRange(cmd *cobra.Command, _ []string) {
|
func getObjectRange(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
objAddr, err := getObjectAddress(cmd)
|
objAddr, err := getObjectAddress(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -931,7 +966,7 @@ func getObjectRange(cmd *cobra.Command, _ []string) {
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
c, sessionToken, err := initSession(ctx)
|
c, sessionToken, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -128,7 +128,13 @@ func sgBearerToken(cmd *cobra.Command) (*token.BearerToken, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func putSG(cmd *cobra.Command, _ []string) {
|
func putSG(cmd *cobra.Command, _ []string) {
|
||||||
ownerID, err := getOwnerID()
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ownerID, err := getOwnerID(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -160,7 +166,7 @@ func putSG(cmd *cobra.Command, _ []string) {
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -214,6 +220,12 @@ func getSGID() (*objectSDK.ID, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getSG(cmd *cobra.Command, _ []string) {
|
func getSG(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
cid, err := getCID(cmd)
|
cid, err := getCID(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -238,7 +250,7 @@ func getSG(cmd *cobra.Command, _ []string) {
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -277,6 +289,12 @@ func getSG(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func listSG(cmd *cobra.Command, _ []string) {
|
func listSG(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
cid, err := getCID(cmd)
|
cid, err := getCID(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -291,7 +309,7 @@ func listSG(cmd *cobra.Command, _ []string) {
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
@ -319,6 +337,12 @@ func listSG(cmd *cobra.Command, _ []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func delSG(cmd *cobra.Command, _ []string) {
|
func delSG(cmd *cobra.Command, _ []string) {
|
||||||
|
key, err := getKey()
|
||||||
|
if err != nil {
|
||||||
|
cmd.PrintErrln(fmt.Errorf("can't fetch private key: %w", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
cid, err := getCID(cmd)
|
cid, err := getCID(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
|
@ -339,7 +363,7 @@ func delSG(cmd *cobra.Command, _ []string) {
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
cli, tok, err := initSession(ctx)
|
cli, tok, err := initSession(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cmd.PrintErrln(err)
|
cmd.PrintErrln(err)
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in a new issue