added bitwarden code to login, unlock, and export vault

This commit is contained in:
2022-09-07 21:32:46 -04:00
parent addf7f27c4
commit 641ffacfb4

View File

@@ -422,5 +422,48 @@ if __name__ == "__main__":
# Catch all for non-valid characters
else:
print("This value must be one of the following characters: e, n, d, q.")
#json.loads((subprocess.check_output(['bw.exe','status'])).decode())['status']
accounts = read_config_file(secrets_config_file)
emails = list(accounts)
for email in emails:
vault_password = accounts[email]['account_vault_password']
os.environ["BW_CLIENTID"] = accounts[email]['account_api_client_id']
os.environ["BW_CLIENTSECRET"] = accounts[email]['account_api_secret']
# login to Bitwarden
logger.info("Trying to login to Bitwarden as {}".format(email))
bitwarden_login = subprocess.run([bitwarden_cli_executable, 'login', '--apikey', '--raw', '--quiet'], capture_output=True)
logger.debug("Bitwarden login output: {}".format(bitwarden_login))
bitwarden_status = json.loads(((subprocess.run([bitwarden_cli_executable, 'status'], capture_output=True)).stdout).decode())
logger.debug("Bitwarden Status: {}".format(bitwarden_status))
if bitwarden_status['status'] == "locked":
logger.info("Logged in successfully")
bitwarden_session_key = (subprocess.run([bitwarden_cli_executable, 'unlock', vault_password, '--raw', '--nointeraction'], capture_output=True).stdout).decode()
if bitwarden_session_key:
#logger.debug("Session key: {}".format(bitwarden_session_key))
logger.info("Successfully unlocked vault")
os.environ["BW_SESSION"] = bitwarden_session_key
else:
logger.error("Unable to unlock vault, please check vault password")
else:
logger.error("Unable to login to account, please check API credentials")
# export to csv and json
logging.info("Exporting vault to both CSV and JSON files.")
logging.debug("Exporting vault to CSV.")
bitwarden_export = (subprocess.run([bitwarden_cli_executable, 'export', '--output', os.path.join(script_directory, 'export.csv') , '--format', 'csv'], capture_output=True).stdout).decode()
logging.debug("Bitwarden export to CSV output: {}".format(bitwarden_export))
logging.debug("Exporting vault to JSON.")
bitwarden_export = (subprocess.run([bitwarden_cli_executable, 'export', '--output', os.path.join(script_directory, 'export.json'), '--format', 'json'], capture_output=True).stdout).decode()
logging.debug("Bitwarden export to JSON output: {}".format(bitwarden_export))
del os.environ['BW_CLIENTID']
del os.environ['BW_CLIENTSECRET']
del os.environ["BW_SESSION"]
logger.info("Logging out of your Bitwarden account")
subprocess.run([bitwarden_cli_executable, 'logout', '--quiet'])
client.close()
sys.exit(0)