added bitwarden code to login, unlock, and export vault
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user