and i *think* getSecret is done. had to work around some argparse weirdness.
This commit is contained in:
parent
b3058348f1
commit
861a73ea93
@ -445,6 +445,20 @@ configuration can be either specified in the <<configuration,configuration file>
|
||||
flags/switches to subcommands. **Some** configuration directives/behaviour may be overridden by environment variables
|
||||
where supported by Vault/Pass upstream configuration.
|
||||
|
||||
=== Vault Paths Don't Match VaultPass' Paths
|
||||
=== Issue Description
|
||||
Pass and Vault have fundamentally different storage ideas. Pass secrets/passwords are, once decrypted, just plaintext
|
||||
blobs. Vault, on the other hand, uses a key/value type of storage. As a result, this means two things:
|
||||
|
||||
* The last item in a path in VaultPass is the key name (e.g. the path `foo/bar/baz` in VaultPass would be a Vault path
|
||||
of `foo/bar`, which would then have a **key** named `baz`), and
|
||||
* The **`line-number`** sub-argument is completely irrelevant for things like copying to the clipboard and generating a
|
||||
QR code (e.g. as in `pass show --clip`**`=line-number`**).
|
||||
|
||||
==== Workaround(s)
|
||||
None, aside from not using the `line-number` sub-argument since it's no longer relevant. (You'll get an error if you
|
||||
do.)
|
||||
|
||||
|
||||
== Submitting a Bug Report/Feature Request
|
||||
Please use https://bugs.square-r00t.net/index.php?do=newtask&project=13[my bugtracker^].
|
||||
|
@ -246,15 +246,18 @@ class VaultPass(object):
|
||||
'seconds': seconds,
|
||||
'printme': printme}
|
||||
data = self.getSecret(**args)
|
||||
if qr is not None:
|
||||
data, has_x = QR.genQr(data, image = True)
|
||||
if qr not in (False, None):
|
||||
qrdata, has_x = QR.genQr(data, image = True)
|
||||
if has_x:
|
||||
fpath = tempfile.mkstemp(prefix = '.vaultpass.qr.', suffix = '.svg', dir = '/dev/shm')[1]
|
||||
_logger.debug('Writing to {0} so it can be displayed'.format(fpath))
|
||||
with open(fpath, 'wb') as fh:
|
||||
fh.write(data.read())
|
||||
fh.write(qrdata.read())
|
||||
if printme:
|
||||
_logger.debug('Opening {0} in the default image viwer application'.format(fpath))
|
||||
# We intentionally want this to block, as most image viewers will
|
||||
# unload the image once the file is deleted and we can probably
|
||||
# elete it before the user can save it elsewhere or scan it with their phone.
|
||||
cmd = subprocess.run(['xdg-open', fpath], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
|
||||
if cmd.returncode != 0:
|
||||
_logger.error('xdg-open returned non-zero status code')
|
||||
@ -267,10 +270,10 @@ class VaultPass(object):
|
||||
_logger.debug('{0}: {1}'.format(x.upper(), o))
|
||||
os.remove(fpath)
|
||||
elif printme:
|
||||
print(data.read())
|
||||
data.seek(0, 0)
|
||||
# TODO: clip, etc.
|
||||
clipboard.pasteClipboard(printme = printme)
|
||||
print(qrdata.read())
|
||||
qrdata.seek(0, 0)
|
||||
if clip not in (False, None):
|
||||
clipboard.pasteClipboard(data, seconds = seconds, clipboard = clipboard, printme = printme)
|
||||
return(data)
|
||||
|
||||
def initVault(self, *args, **kwargs):
|
||||
|
@ -337,7 +337,7 @@ def parseArgs():
|
||||
dest = 'path',
|
||||
help = ('(Dummy option; kept for compatibility reasons)'))
|
||||
initvault.add_argument('gpg_id',
|
||||
dest = 'gpg_id',
|
||||
metavar = 'GPG_KEY_ID',
|
||||
help = ('(Dummy option; kept for compatibility reasons)'))
|
||||
# INSERT
|
||||
# vp.insertSecret()
|
||||
@ -411,22 +411,14 @@ def parseArgs():
|
||||
# vp.getSecret(printme = True)
|
||||
# TODO: does the default overwrite the None if not specified?
|
||||
show.add_argument('-c', '--clip',
|
||||
nargs = '?',
|
||||
type = int,
|
||||
default = None,
|
||||
metavar = 'LINE_NUMBER',
|
||||
action = 'store_true',
|
||||
dest = 'clip',
|
||||
help = ('If specified, do not print the secret but instead copy it to the clipboard. '
|
||||
'LINE_NUMBER has no effect and is kept for compatibility reasons'))
|
||||
help = ('If specified, do not print the secret but instead copy it to the clipboard'))
|
||||
show.add_argument('-q', '--qrcode',
|
||||
dest = 'qr',
|
||||
nargs = '?',
|
||||
type = int,
|
||||
metavar = 'LINE_NUMBER',
|
||||
default = None,
|
||||
action = 'store_true',
|
||||
help = ('If specified, do not print the secret but instead generate a QR code of it (either '
|
||||
'graphically or in-terminal depending on environment). '
|
||||
'LINE_NUMBER has no effect and is kept for compatibility reasons'))
|
||||
'graphically or in-terminal depending on environment)'))
|
||||
show.add_argument('-s', '--seconds',
|
||||
dest = 'seconds',
|
||||
type = int,
|
||||
|
Reference in New Issue
Block a user