commit 6c5b025621f17fc180c819cda1067a3a8db11ff8
parent 88e60b7ea5b15ba1d760f49e2c2c724bfe70ad10
Author: Paco Esteban <paco@e1e0.net>
Date: Thu, 25 Aug 2022 08:53:33 +0200
some utils to test bitwarden
Diffstat:
3 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/passwd_management/get_pass.sh b/passwd_management/get_pass.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+set -eu
+
+folders_json=$(bw list folders)
+items_json=$(bw list items)
+
+item_id=$(for i in $(echo $items_json |jq -r ".[].id"); do
+ IFS=$'\x01' read item_name folder_id < <(echo $(echo $items_json | jq -r ".[] | select(.id==\"$i\") | [.name,.folderId] | @tsv" | tr '\t' $'\x01'))
+ folder_name=$(echo $folders_json | jq -r ".[] | select(.id==\"$folder_id\").name")
+
+ printf "$folder_name/$item_name\t$i\n"
+ done | fzf -d "\t" --with-nth=1 | cut -f 2)
+
+bw get password $item_id | xclip -selection clipboard
diff --git a/passwd_management/get_token.sh b/passwd_management/get_token.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -eu
+
+curl -X POST \
+ https://$BW_HOST/identity/connect/token \
+ -H "Content-Type: application/x-www-form-urlencoded" \
+ -d "grant_type=client_credentials&scope=api&client_id=$BW_CLIENT_ID&client_secret=$BW_CLIENT_SECRET"
diff --git a/passwd_management/pass_to_bw.py b/passwd_management/pass_to_bw.py
@@ -0,0 +1,68 @@
+import argparse
+import base64
+import json
+
+FOLDERS = [
+ {"object": "folder", "id": "c3470844-395c-46a0-8ebf-8a4161fc52af", "name": "chat"},
+ {"object": "folder", "id": "d2ac53c5-68e3-4d66-9757-3a6e7302b687", "name": "db"},
+ {"object": "folder", "id": "cedc22c3-5306-489c-81da-c5cc3bc8db69", "name": "email"},
+ {"object": "folder", "id": "1b228e1b-6b3f-40a3-879e-7497125771a4", "name": "sites"},
+ {"object": "folder", "id": "06d2c19c-7d41-4a3b-94f2-2fca30d4127b", "name": "wifi"},
+ {"object": "folder", "id": None, "name": "No Folder"},
+]
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser(description="Import stuff to bitwarden")
+ parser.add_argument(
+ "name",
+ metavar="NAME",
+ type=str,
+ help="name of the password to create",
+ )
+ parser.add_argument(
+ "password",
+ metavar="PWD",
+ type=str,
+ help="password to create",
+ )
+ parser.add_argument(
+ "--user",
+ help="username if any",
+ )
+ parser.add_argument(
+ "--uri",
+ help="uri for this password if any",
+ )
+ parser.add_argument(
+ "--folder",
+ default="sites",
+ help="name of the folder to put this in",
+ )
+
+ args = parser.parse_args()
+
+ item = {
+ "folderId": [f["id"] for f in FOLDERS if f["name"] == args.folder][0],
+ "name": args.name,
+ "type": 1,
+ "login": {"password": args.password},
+ }
+
+ if args.user:
+ item["login"]["username"] = args.user
+
+ if args.uri:
+ item["login"]["uris"] = [{"uri": args.uri}]
+
+ item_json = json.dumps(item)
+
+ encodedBytes = base64.b64encode(item_json.encode("utf-8"))
+ encodedStr = str(encodedBytes, "utf-8")
+ print(encodedStr)
+
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())