Skip to content

Commit

Permalink
Fix 'configure' request for custom stores (#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
maximbaz committed Mar 11, 2019
1 parent d52ced2 commit 870b378
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 70 deletions.
86 changes: 22 additions & 64 deletions errors/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,79 +10,37 @@ type Code int
// Error codes that are sent to the browser extension and used as exit codes in the app.
// DO NOT MODIFY THE VALUES, always append new error codes to the bottom.
const (
// CodeParseRequestLength error parsing a request length
CodeParseRequestLength Code = 10

// CodeParseRequest error parsing a request
CodeParseRequest Code = 11

// CodeInvalidRequestAction error parsing a request action
CodeInvalidRequestAction Code = 12

// CodeInaccessiblePasswordStore error accessing a user-configured password store
CodeInaccessiblePasswordStore Code = 13

// CodeInaccessibleDefaultPasswordStore error accessing the default password store
CodeInaccessibleDefaultPasswordStore Code = 14

// CodeUnknownDefaultPasswordStoreLocation error determining the location of the default password store
CodeUnknownDefaultPasswordStoreLocation Code = 15

// CodeUnreadablePasswordStoreDefaultSettings error reading the default settings of a user-configured password store
CodeUnreadablePasswordStoreDefaultSettings Code = 16

// CodeUnreadableDefaultPasswordStoreDefaultSettings error reading the default settings of the default password store
CodeUnreadableDefaultPasswordStoreDefaultSettings Code = 17

// CodeUnableToListFilesInPasswordStore error listing files in a password store
CodeUnableToListFilesInPasswordStore Code = 18

// CodeUnableToDetermineRelativeFilePathInPasswordStore error determining a relative path for a file in a password store
CodeParseRequestLength Code = 10
CodeParseRequest Code = 11
CodeInvalidRequestAction Code = 12
CodeInaccessiblePasswordStore Code = 13
CodeInaccessibleDefaultPasswordStore Code = 14
CodeUnknownDefaultPasswordStoreLocation Code = 15
CodeUnreadablePasswordStoreDefaultSettings Code = 16
CodeUnreadableDefaultPasswordStoreDefaultSettings Code = 17
CodeUnableToListFilesInPasswordStore Code = 18
CodeUnableToDetermineRelativeFilePathInPasswordStore Code = 19

// CodeInvalidPasswordStore error looking for a password store with the given ID
CodeInvalidPasswordStore Code = 20

// CodeInvalidGpgPath error looking for a gpg binary at the given path
CodeInvalidGpgPath Code = 21

// CodeUnableToDetectGpgPath error detecting the location of the gpg binary
CodeUnableToDetectGpgPath Code = 22

// CodeInvalidPasswordFileExtension error unexpected password file extension
CodeInvalidPasswordFileExtension Code = 23

// CodeUnableToDecryptPasswordFile error decrypting a password file
CodeUnableToDecryptPasswordFile Code = 24
CodeInvalidPasswordStore Code = 20
CodeInvalidGpgPath Code = 21
CodeUnableToDetectGpgPath Code = 22
CodeInvalidPasswordFileExtension Code = 23
CodeUnableToDecryptPasswordFile Code = 24
)

// Field extra field in the error response params
type Field string

// Extra fields that can be sent to the browser extension as part of an error response.
// FieldMessage is always present, others are optional.
const (
// FieldMessage a user-friendly error message, always present
FieldMessage Field = "message"

// FieldAction a browser request action that resulted in a failure
FieldAction Field = "action"

// FieldError an error message returned from an external system
FieldError Field = "error"

// FieldStoreID a password store id
FieldStoreID Field = "storeId"

// FieldStoreName a password store name
FieldMessage Field = "message"
FieldAction Field = "action"
FieldError Field = "error"
FieldStoreID Field = "storeId"
FieldStoreName Field = "storeName"

// FieldStorePath a password store path
FieldStorePath Field = "storePath"

// FieldFile a password file
FieldFile Field = "file"

// FieldGpgPath a path to the gpg binary
FieldGpgPath Field = "gpgPath"
FieldFile Field = "file"
FieldGpgPath Field = "gpgPath"
)

// ExitWithCode exit with error code
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func main() {
os.Exit(0)
}

openbsd.Pledge("stdio rpath proc exec")
openbsd.Pledge("stdio rpath proc exec getpw")

log.SetFormatter(&log.TextFormatter{FullTimestamp: true})
if isVerbose {
Expand Down
4 changes: 4 additions & 0 deletions request/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ import (
)

func normalizePasswordStorePath(storePath string) (string, error) {
if storePath == "" {
return "", errors.New("The store path cannot be empty")
}

if strings.HasPrefix(storePath, "~/") {
storePath = filepath.Join("$HOME", storePath[2:])
}
Expand Down
2 changes: 1 addition & 1 deletion request/configure.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ func readDefaultSettings(storePath string) (string, error) {
return string(content), nil
}
if os.IsNotExist(err) {
return "", nil
return "{}", nil
}
return "", err
}
6 changes: 2 additions & 4 deletions request/fetch.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package request

import (
"bytes"
goerrors "errors"
"fmt"
"os"
"os/exec"
Expand Down Expand Up @@ -135,8 +134,7 @@ func detectGpgBinary() (string, error) {
return binary, nil
}
}

return "", goerrors.New("Unable to detect the location of the gpg binary to use")
return "", fmt.Errorf("Unable to detect the location of the gpg binary to use")
}

func validateGpgBinary(gpgPath string) error {
Expand All @@ -159,7 +157,7 @@ func decryptFile(store *store, file string, gpgPath string) (string, error) {
cmd.Stderr = &stderr

if err := cmd.Run(); err != nil {
return "", goerrors.New(fmt.Sprintf("Error: %s, Stderr: %s", err.Error(), stderr.String()))
return "", fmt.Errorf("Error: %s, Stderr: %s", err.Error(), stderr.String())
}

return stdout.String(), nil
Expand Down

0 comments on commit 870b378

Please sign in to comment.