#!/bin/bash TMP_IN=$(mktemp /tmp/mpass.XXXXXXXXXX) TMP_OUT=$(mktemp /tmp/mpass.XXXXXXXXXX) function cleanup { rm "$TMP_IN" 2>&1 > /dev/null rm "$TMP_OUT" 2>&1 > /dev/null } function getpass { echo -n $(cat ~/.mpassword) } function tryerr { if [ "$?" != "0" ]; then merror "An error occurred." cleanup exit 1 fi if [ "$1" != "" ]; then if [ "$1" != "0" ]; then merror "An error occurred." "$1" cleanup exit 1 fi fi } # Create password: mpass create [chars] if [ "$1" = "create" ]; then if [ "$2" = "" ]; then echo "Usage: mpass create [chars]" cleanup exit 1 fi if [ "$3" = "" ]; then nchars="32" else nchars="$3" fi chars=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c "$nchars") echo "$chars" > "$TMP_IN" echo "$chars" | mclip getpass | openssl enc -aes-256-cbc -a -in "$TMP_IN" -out "$TMP_OUT" -pass stdin tryerr enc=$(cat "$TMP_OUT") passsum=$(getpass | shasum -a 512 | cut -d ' ' -f 1) code=$(curl -s -X POST -d "$enc" "http://pass.mort.coffee/put/$2/$passsum") tryerr "$code" echo "$chars" mnotify "Password created" "$2" # Get password: mpass get elif [ "$1" = "get" ]; then if [ "$2" = "" ]; then echo "Usage: mpass get " cleanup exit 1 fi curl -s "http://pass.mort.coffee/get/$2" > "$TMP_IN" tryerr if [ ! -s "$TMP_IN" ]; then tryerr "Pasword doesn't exist." fi echo -n "$enc" >> "$TMP_IN" getpass | openssl enc -aes-256-cbc -a -d -in "$TMP_IN" -out "$TMP_OUT" -pass stdin tryerr chars=$(cat "$TMP_OUT") echo -n "$chars" | mclip echo "$chars" mnotify "Password received" "$2" fi cleanup