diff --git a/src/freedombone-pass b/src/freedombone-pass index b48373f7..03b7f212 100755 --- a/src/freedombone-pass +++ b/src/freedombone-pass @@ -49,6 +49,7 @@ CURR_APP= REMOVE_APP= CURR_PASSWORD="" TESTS= +EXPORT_FILENAME= # If this file is present then don't store passwords NO_PASSWORD_STORE_FILE=~/.nostore @@ -73,6 +74,7 @@ function pass_show_help { echo $' -u --user [name] Username' echo $' -a --app [name] Name of the application' echo $' -p --pass [password] The password to store' + echo $' --export [filename] Export to KeepassX XML' echo '' echo $'To encrypt a password:' echo '' @@ -145,6 +147,41 @@ function clear_passwords { exit 0 } +function export_to_keepass { + filename = "$1" + + echo '' > $filename + echo ' ' >> $filename + echo " ${PROJECT_NAME}" >> $filename + echo ' 48' >> $filename + + for d in /root/.passwords/*/ ; do + USERNAME=$(echo "$d" | awk -F '/' '{print $4}') + echo ' ' >> $filename + echo " $USERNAME" >> $filename + echo ' 0' >> $filename + for a in /root/.passwords/$USERNAME/*/ ; do + APP_NAME=$(echo "$a" | awk -F '/' '{print $5}') + app_password=$(${PROJECT_NAME}-pass -u $USERNAME -a $APP_NAME) + echo ' ' >> $filename + echo " $APP_NAME" >> $filename + echo " $USERNAME" >> $filename + echo " $app_password" >> $filename + echo ' ' >> $filename + echo ' ' >> $filename + echo ' 0' >> $filename + echo ' Never' >> $filename + echo ' ' >> $filename + done + echo ' ' >> $filename + done + + echo ' ' >> $filename + echo '' >> $filename + + echo $"Exported $filename" +} + while [[ $# > 1 ]] do key="$1" @@ -183,6 +220,10 @@ do shift CURR_APP="${1}" ;; + --export) + shift + EXPORT_FILENAME="${1}" + ;; -p|--pass|--password|--passphrase) shift CURR_PASSWORD="${1}" @@ -211,6 +252,11 @@ if [ $TESTS ]; then exit 0 fi +if [ $EXPORT_FILENAME ]; then + export_to_keepass $EXPORT_FILENAME + exit 0 +fi + if [ ! $CURR_USERNAME ]; then echo $'Error: No username given' exit 1