Simple image host.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

mpass 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/bin/bash
  2. TMP_IN=$(mktemp /tmp/mpass.XXXXXXXXXX)
  3. TMP_OUT=$(mktemp /tmp/mpass.XXXXXXXXXX)
  4. function cleanup
  5. {
  6. rm "$TMP_IN" 2>&1 > /dev/null
  7. rm "$TMP_OUT" 2>&1 > /dev/null
  8. }
  9. function getpass
  10. {
  11. echo -n $(cat ~/.mpassword)
  12. }
  13. function tryerr
  14. {
  15. if [ "$?" != "0" ]; then
  16. merror "An error occurred."
  17. cleanup
  18. exit 1
  19. fi
  20. if [ "$1" != "" ]; then
  21. if [ "$1" != "0" ]; then
  22. merror "An error occurred." "$1"
  23. cleanup
  24. exit 1
  25. fi
  26. fi
  27. }
  28. # Create password: mpass create <name> [chars]
  29. if [ "$1" = "create" ]; then
  30. if [ "$2" = "" ]; then
  31. echo "Usage: mpass create <name> [chars]"
  32. cleanup
  33. exit 1
  34. fi
  35. if [ "$3" = "" ]; then
  36. nchars="32"
  37. else
  38. nchars="$3"
  39. fi
  40. chars=$(LC_ALL=C tr -dc A-Za-z0-9_ < /dev/urandom | head -c "$nchars")
  41. echo "$chars" > "$TMP_IN"
  42. echo "$chars" | mclip
  43. getpass | openssl enc -aes-256-cbc -a -in "$TMP_IN" -out "$TMP_OUT" -pass stdin
  44. tryerr
  45. enc=$(cat "$TMP_OUT")
  46. passsum=$(getpass | shasum -a 512 | cut -d ' ' -f 1)
  47. code=$(curl -s -X POST -d "$enc" "http://pass.mort.coffee/put/$2/$passsum")
  48. tryerr "$code"
  49. echo -n "$chars" | mclip
  50. mnotify "Password created" "$2"
  51. # Get password: mpass get <name>
  52. elif [ "$1" = "get" ]; then
  53. if [ "$2" = "" ]; then
  54. echo "Usage: mpass get <name>"
  55. cleanup
  56. exit 1
  57. fi
  58. curl -s "http://pass.mort.coffee/get/$2" > "$TMP_IN"
  59. tryerr
  60. if [ ! -s "$TMP_IN" ]; then
  61. tryerr "Pasword doesn't exist."
  62. fi
  63. echo "" >> "$TMP_IN"
  64. getpass | openssl enc -aes-256-cbc -a -d -in "$TMP_IN" -out "$TMP_OUT" -pass stdin
  65. tryerr
  66. chars=$(cat "$TMP_OUT")
  67. echo -n "$chars" | mclip
  68. mnotify "Password received" "$2"
  69. fi
  70. cleanup