Compare commits
2 Commits
4ee522c26c
...
de0589761e
| Author | SHA1 | Date | |
|---|---|---|---|
|
de0589761e
|
|||
|
6880401ac8
|
@@ -17,6 +17,20 @@ var (
|
||||
rpcClient *RPC.Client
|
||||
)
|
||||
|
||||
|
||||
func parseSingleArgWithOptionalVault(args []string) (vault string, arg string){
|
||||
if len(args) == 1 {
|
||||
vault = "root"
|
||||
arg = args[0]
|
||||
} else {
|
||||
vault = args[0]
|
||||
arg = args[1]
|
||||
}
|
||||
|
||||
return vault, arg
|
||||
}
|
||||
|
||||
|
||||
// Create the root command
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "ppass",
|
||||
@@ -25,11 +39,17 @@ var rootCmd = &cobra.Command{
|
||||
|
||||
// Create the 'list' subcommand
|
||||
var listCmd = &cobra.Command{
|
||||
Use: "list",
|
||||
Use: "list [vault]",
|
||||
Short: "List all passwords",
|
||||
Args: cobra.RangeArgs(0, 1),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
var names []string
|
||||
vault := "root"
|
||||
|
||||
if len(args) == 1 {
|
||||
vault = args[0]
|
||||
}
|
||||
|
||||
var names []string
|
||||
err := rpcClient.Call("Query.GetAllNames", &vault, &names)
|
||||
|
||||
if err != nil {
|
||||
@@ -46,12 +66,12 @@ var listCmd = &cobra.Command{
|
||||
var generateCmd = &cobra.Command{
|
||||
Use: "generate",
|
||||
Short: "Generate a Password",
|
||||
Args: cobra.ExactArgs(1),
|
||||
Args: cobra.RangeArgs(1, 2),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
serviceName := args[0]
|
||||
vault, serviceName := parseSingleArgWithOptionalVault(args)
|
||||
|
||||
var password *crypto.Password
|
||||
np := rpc.VaultService{ Vault: "root", Service: serviceName }
|
||||
np := rpc.VaultService{ Vault: vault, Service: serviceName }
|
||||
err := rpcClient.Call("Query.Generate", &np, &password)
|
||||
|
||||
if err != nil {
|
||||
@@ -65,12 +85,12 @@ var generateCmd = &cobra.Command{
|
||||
var showCmd = &cobra.Command{
|
||||
Use: "show",
|
||||
Short: "show a Password",
|
||||
Args: cobra.ExactArgs(1),
|
||||
Args: cobra.RangeArgs(1, 2),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
serviceName := args[0]
|
||||
vault, serviceName := parseSingleArgWithOptionalVault(args)
|
||||
|
||||
var password *crypto.Password
|
||||
np := rpc.VaultService{ Vault: "root", Service: serviceName }
|
||||
np := rpc.VaultService{ Vault: vault, Service: serviceName }
|
||||
err := rpcClient.Call("Query.Get", &np, &password)
|
||||
|
||||
if err != nil {
|
||||
@@ -172,16 +192,7 @@ var addPeerCmd = &cobra.Command{
|
||||
Short: "add a peer",
|
||||
Args: cobra.RangeArgs(1, 2),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
var vault string
|
||||
var peerString string
|
||||
|
||||
if len(args) == 1 {
|
||||
vault = "root"
|
||||
peerString = args[0]
|
||||
} else {
|
||||
vault = args[0]
|
||||
peerString = args[1]
|
||||
}
|
||||
vault, peerString := parseSingleArgWithOptionalVault(args)
|
||||
|
||||
var success *bool
|
||||
np := rpc.VaultPeer{ Vault: vault, Peer: peerString }
|
||||
@@ -205,16 +216,7 @@ var removePeerCmd = &cobra.Command{
|
||||
Short: "remove a peer",
|
||||
Args: cobra.RangeArgs(1, 2),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
var vault string
|
||||
var peerString string
|
||||
|
||||
if len(args) == 1 {
|
||||
vault = "root"
|
||||
peerString = args[0]
|
||||
} else {
|
||||
vault = args[0]
|
||||
peerString = args[1]
|
||||
}
|
||||
vault, peerString := parseSingleArgWithOptionalVault(args)
|
||||
|
||||
var success *bool
|
||||
np := rpc.VaultPeer{ Vault: vault, Peer: peerString }
|
||||
@@ -238,16 +240,7 @@ var deleteCmd = &cobra.Command{
|
||||
Short: "delete a Password",
|
||||
Args: cobra.RangeArgs(1, 2),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
var vault string
|
||||
var serviceName string
|
||||
|
||||
if len(args) == 1 {
|
||||
vault = "root"
|
||||
serviceName = args[0]
|
||||
} else {
|
||||
vault = args[0]
|
||||
serviceName = args[1]
|
||||
}
|
||||
vault, serviceName := parseSingleArgWithOptionalVault(args)
|
||||
|
||||
var success *bool
|
||||
np := rpc.VaultService{ Vault: vault, Service: serviceName }
|
||||
@@ -255,6 +248,7 @@ var deleteCmd = &cobra.Command{
|
||||
|
||||
if err != nil {
|
||||
Logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
if *success {
|
||||
|
||||
@@ -140,6 +140,9 @@ func (t *Query) Delete(np *VaultService, success *bool) error {
|
||||
err := val.Delete(np.Service)
|
||||
if err != nil {
|
||||
*success = false
|
||||
if err == storage.ErrNotFound {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
"errors"
|
||||
|
||||
"github.com/ipfs/go-datastore/query"
|
||||
pubsub "github.com/libp2p/go-libp2p-pubsub"
|
||||
@@ -18,6 +19,8 @@ import (
|
||||
. "github.com/k4lipso/pentapass/internal/log"
|
||||
)
|
||||
|
||||
var ErrNotFound error = errors.New("Not found")
|
||||
|
||||
type Vault struct {
|
||||
ID string
|
||||
Datastore *crdt.Datastore
|
||||
@@ -73,8 +76,15 @@ func (n *Vault) Put(k string, v string) error {
|
||||
}
|
||||
|
||||
func (n *Vault) Delete(k string) error {
|
||||
_, err := n.GetPassword(k)
|
||||
|
||||
if err != nil {
|
||||
return ErrNotFound
|
||||
}
|
||||
|
||||
key := ds.NewKey(k)
|
||||
err := n.Datastore.Delete(n.ctx, key)
|
||||
|
||||
err = n.Datastore.Delete(n.ctx, key)
|
||||
|
||||
if err != nil {
|
||||
printErr(err)
|
||||
|
||||
Reference in New Issue
Block a user