scripts: add encrypt_file and passwords-for
This commit is contained in:
parent
2e2c504111
commit
ca922ef5f7
2 changed files with 74 additions and 0 deletions
42
scripts/encrypt_file
Executable file
42
scripts/encrypt_file
Executable file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
from os import environ
|
||||||
|
from os.path import abspath, isfile, join, relpath
|
||||||
|
from sys import argv
|
||||||
|
|
||||||
|
from bundlewrap.repo import Repository
|
||||||
|
|
||||||
|
|
||||||
|
path = environ.get('BW_REPO_PATH', '.')
|
||||||
|
repo = Repository(path)
|
||||||
|
|
||||||
|
if len(argv) < 3:
|
||||||
|
print('Usage: {} <source> <target> [encryption key, default \'encrypt\']'.format(argv[0]))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
target = abspath(argv[2])
|
||||||
|
datapath = join(abspath(path), 'data')
|
||||||
|
|
||||||
|
if not isfile(argv[1]):
|
||||||
|
print('ERROR: Source file \'{}\' does not exist.'.format(argv[1]))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
if not target.endswith('.vault'):
|
||||||
|
print('ERROR: Target file \'{}\' does not end in .vault'.format(argv[2]))
|
||||||
|
exit(1)
|
||||||
|
elif not target.startswith(datapath):
|
||||||
|
print('ERROR: Target file \'{}\' is not in BW_REPO_PATH/data/'.format(argv[2]))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
if isfile(target):
|
||||||
|
if input('ERROR: Target file \'{}\' already exists, overwrite? [yN]'.format(argv[2])) not in ['y', 'Y']:
|
||||||
|
print('Abort')
|
||||||
|
exit(2)
|
||||||
|
|
||||||
|
if len(argv) > 3:
|
||||||
|
key = argv[3]
|
||||||
|
else:
|
||||||
|
key = 'encrypt'
|
||||||
|
|
||||||
|
repo.vault.encrypt_file(argv[1], relpath(target, start=datapath), key)
|
||||||
|
|
||||||
|
print('encryption successful')
|
32
scripts/passwords-for
Executable file
32
scripts/passwords-for
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
from os import environ
|
||||||
|
from sys import argv
|
||||||
|
|
||||||
|
from bundlewrap.repo import Repository
|
||||||
|
from bundlewrap.utils import Fault
|
||||||
|
from bundlewrap.exceptions import FaultUnavailable
|
||||||
|
|
||||||
|
|
||||||
|
path = environ.get('BW_REPO_PATH', '.')
|
||||||
|
repo = Repository(path)
|
||||||
|
|
||||||
|
def print_faults(dictionary, keypath=[]):
|
||||||
|
for key, value in dictionary.items():
|
||||||
|
if isinstance(value, Fault):
|
||||||
|
try:
|
||||||
|
resolved_fault = value.value
|
||||||
|
except FaultUnavailable:
|
||||||
|
print('{}/{}: [permission denied]'.format('/'.join(keypath), key))
|
||||||
|
else:
|
||||||
|
if '\n' not in resolved_fault:
|
||||||
|
print('{}/{}: {}'.format('/'.join(keypath), key, value))
|
||||||
|
elif isinstance(value, dict):
|
||||||
|
print_faults(value, keypath=keypath+[key])
|
||||||
|
|
||||||
|
|
||||||
|
if len(argv) == 1:
|
||||||
|
print('node name missing')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
node = repo.get_node(argv[1])
|
||||||
|
print_faults(node.metadata)
|
Loading…
Reference in a new issue