utils

small programs, scripts and utils
git clone https://git.e1e0.net/utils.git
Log | Files | Refs

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:
Apasswd_management/get_pass.sh | 15+++++++++++++++
Apasswd_management/get_token.sh | 8++++++++
Apasswd_management/pass_to_bw.py | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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())