diff --git a/README.md b/README.md index baa6d5b..40ba36b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # kanako (神奈子) -the adaptable password manager. +the adaptable password manager. named after [Kanako Yasaka](https://en.touhouwiki.net/wiki/Kanako_Yasaka) ## Backends supported * [age](https://age-encryption.org) @@ -9,17 +9,18 @@ the adaptable password manager. ## Dependencies * Any of the above, depending how you configured it * `ls(1)` or `tree(1)` for printing a list -* busybox `tr(1)` for password generation * `mandoc(1)` for documentation ## Add-ons -### kanakomenu -quick graphical front-end for kanako, works with either of `dmenu(1)` -or `bemenu(1)`, useful for copying passwords to clipboard. it's configured -through kanakomenu.conf +### kanako_gen +random username and password generator, requires `busybox(1)` -### kanakototp +### kanako_menu +quick graphical front-end for kanako, works with either of `dmenu(1)` +or `bemenu(1)`, useful for copying passwords to clipboard. + +### kanako_totp time-based one time password addon for kanako, requires `oathtool(1)` from oath-toolkit. diff --git a/addons/kanako_gen b/addons/kanako_gen new file mode 100755 index 0000000..e5e73f2 --- /dev/null +++ b/addons/kanako_gen @@ -0,0 +1,24 @@ +#!/bin/sh -e + +fn_genpass() { + printf "Password: %s\n" $(busybox tr -dc '[A-Z][a-z][0-9]' /dev/null; echo) +} +fn_genuser() { + printf "Username: %s\n" $(busybox tr -dc '[A-Z][a-z][0-9]' /dev/null; echo) +} + +case $1 in + -p) + fn_genpass $2 + ;; + -u) + fn_genuser + ;; + *) + cat < +kanako_gen -u +EOF + ;; +esac diff --git a/kanakomenu b/addons/kanako_menu similarity index 62% rename from kanakomenu rename to addons/kanako_menu index 596085c..106d8a9 100755 --- a/kanakomenu +++ b/addons/kanako_menu @@ -2,12 +2,10 @@ readonly conf_dir="${conf_dir:-$HOME/.config/kanako}" readonly store_dir="${store_dir:-$HOME/.kanako-store}" -if test -f "${conf_dir}"/kanakomenu.conf; then - . "${conf_dir}"/kanakomenu.conf +if test -f "${conf_dir}"/kanako.conf; then + . "${conf_dir}"/kanako.conf else echo "Configuration file has not been found!" - echo "Copy kanakomenu.conf from the examples directory," - echo "and edit accordingly" exit 1 fi diff --git a/kanakototp b/addons/kanako_totp similarity index 100% rename from kanakototp rename to addons/kanako_totp diff --git a/kanako b/kanako index 1be4e8f..4df0001 100755 --- a/kanako +++ b/kanako @@ -5,20 +5,20 @@ readonly key_dir="${key_dir:-$HOME/.kanako}" readonly store_dir="${store_dir:-$HOME/.kanako-store}" if test -d "${store_dir}"; then - cd "${store_dir}" + cd "${store_dir}" else - echo "Password store not found!" - echo "Please run kanako-init" - exit 1 + echo "Password store not found!" + echo "Create it with `mkdir -p $store_dir`" + exit 1 fi if test -f "${conf_dir}/kanako.conf"; then - . "${conf_dir}/kanako.conf"; + . "${conf_dir}/kanako.conf"; else - echo "Configuration file has not been found!" - echo "Copy kanako.conf from the examples directory," - echo "and edit accordingly." - exit 1 + echo "Configuration file has not been found!" + echo "Copy kanako.conf from the examples directory," + echo "and edit accordingly." + exit 1 fi fn_copy() { @@ -30,9 +30,6 @@ fn_edit() { ${encrypt_cmd} ${encrypt_args} ${1%%.enc} > ${1%%.enc}.enc rm "${1%%.enc}" } -fn_generate() { - busybox tr -dc '[A-Z][a-z][0-9]' /dev/null; echo -} fn_list() { "${list_cmd}" "${store_dir}" } @@ -55,8 +52,7 @@ fn_trash_entry() { fn_usage() { cat < -kanako [copy|edit|gen|list|add|trash|trashd|view] +kanako [-celnrRv] EOF } fn_view() { @@ -70,13 +66,12 @@ fn_view() { } case $1 in - -c | copy) fn_copy $2 ;; - -e | edit) fn_edit $2 ;; - -g | gen) fn_generate $2 ;; - -l | list) fn_list ;; - -n | add) fn_new $2 ;; - -r | trash) fn_trash_entry $2 ;; - -R | trashd) fn_trash_directory $2 ;; - -v | view) fn_view $2 ;; + -c) fn_copy $2 ;; + -e) fn_edit $2 ;; + -l) fn_list ;; + -n) fn_new $2 ;; + -r) fn_trash_entry $2 ;; + -R) fn_trash_directory $2 ;; + -v) fn_view $2 ;; *) fn_usage ;; esac diff --git a/kanako-init b/kanako-init deleted file mode 100644 index fa6378d..0000000 --- a/kanako-init +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -readonly conf_dir="$HOME/.config/kanako" -readonly key_dir="$HOME/.kanako" -readonly store_dir="$HOME/.kanako-store" - -echo "Initializing kanako(1)" - -for i in $conf_dir $key_dir $store_dir; do - mkdir -p $i -done diff --git a/kanako.mdoc b/kanako.mdoc index 5aed754..97f1946 100644 --- a/kanako.mdoc +++ b/kanako.mdoc @@ -1,4 +1,4 @@ -.Dd Bureaucracy 65, 3188 +.Dd Bureaucracy 72, 3188 .Dt KANAKO 1 .Os .Sh NAME @@ -8,21 +8,19 @@ .Sh USAGE .Bl -tag -width 11n -compact -.It add, -n +.It -n Add a new entry -.It copy, -c +.It -c Copy an entry's text to the clipboard -.It edit, -e +.It -e Edit an entry -.It gen, -g -Generate a random password -.It list, -l +.It -l List all entries -.It trash, -r +.It -r Remove single entries -.It trashd, -R +.It -R Remove recursively a directory w/ entries -.It view, -v +.It -v View an entry .Bl .El diff --git a/kanakomenu.conf.example b/kanakomenu.conf.example deleted file mode 100644 index 1ed9752..0000000 --- a/kanakomenu.conf.example +++ /dev/null @@ -1,4 +0,0 @@ -# Configuration file for kanakomenu(1) - -#menu_prog="bemenu -p kanako" -#menu_prog="dmenu -p kanako" diff --git a/mkfile b/mkfile index 1703cd1..f3484f7 100644 --- a/mkfile +++ b/mkfile @@ -5,17 +5,13 @@ uninstall:V: uninstall-bin uninstall-examples uninstall-man install-bin: install -m$EXEC_MODE kanako $PREFIX/bin/kanako - install -m$EXEC_MODE kanako-init $PREFIX/bin/kanako-init - install -m$EXEC_MODE kanakomenu $PREFIX/bin/kanakomenu - install -m$EXEC_MODE kanakototp $PREFIX/bin/kanakototp install-examples: install -m$FILE_MODE kanako.conf.example $PREFIX/share/examples/kanako/kanako.conf - install -m$FILE_MODE kanakomenu.conf.example $PREFIX/share/examples/kanako/kanakomenu.conf install-man: install -m$FILE_MODE kanako.mdoc $PREFIX/share/man/man1/kanako.1 install -m$FILE_MODE kanako.conf.mdoc $PREFIX/share/man/man5/kanako.conf.5 uninstall-bin: - rm -f $PREFIX/bin/kanako $PREFIX/bin/kanako-init $PREFIX/bin/kanakomenu $PREFIX/bin/kanakototp + rm -f $PREFIX/bin/kanako uninstall-examples: rm -f $PREFIX/share/examples/kanako/kanako.conf $PREFIX/share/exmaples/kanako/kanakomenu.conf uninstall-man: