Select Git revision
download-password-db 1.13 KiB
#!/usr/bin/env python3
# pylint: disable=invalid-name
"""Runs rclone securely to download the Keepass password database from
Nextcloud.
This is meant as a bootstrap step to get the Keepass password database
so that other steps that depend on the database can be used.
"""
import getpass
import os
import os.path
import subprocess # nosec
DB_PATH = "Documents/Database.kdbx"
DEST = os.path.expanduser(f"~/{ os.path.dirname(DB_PATH) }")
SOURCE = f"nextcloud:{DB_PATH}"
if __name__ == "__main__":
username = input(f"Enter username (defaults to {getpass.getuser()}): ")
if not username:
username = getpass.getuser()
password = getpass.getpass("Enter password (will not echo): ")
obscured_password = subprocess.run( # nosec
["rclone", "obscure", "-"],
input=password,
capture_output=True,
check=True,
text=True,
).stdout.strip()
os.execvp( # nosec
"rclone",
[
"rclone",
"copy",
"--webdav-pass",
obscured_password,
"--webdav-user",
username,
SOURCE,
DEST,
],
)