encfsw 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/sh
  2. if [ $# -ne 1 ] && [ $# -ne 2 ]; then
  3. echo
  4. cat<<EOF
  5. Usage: $0 FOLDERS...
  6. $0 -u
  7. Mount encfs-encrypted FOLDERS.
  8. With -u, unmount all encfs-mounted partitions.
  9. EOF
  10. exit
  11. fi
  12. check() {
  13. for i ; do
  14. if ! command -v $i >/dev/null 2>&1; then
  15. echo "'$i' not found in PATH. Exiting." >&2
  16. exit 1
  17. fi
  18. done
  19. }
  20. mount() {
  21. check realpath encfs
  22. SOURCE="$(realpath "$1")"
  23. MOUNTPOINT="${SOURCE}_decrypted"
  24. mkdir -p "$MOUNTPOINT"
  25. if [ -z "$PASS" ]; then
  26. encfs "$SOURCE" "$MOUNTPOINT" || rmdir "$MOUNTPOINT"
  27. else
  28. echo "$PASS" | encfs --stdinpass "$SOURCE" "$MOUNTPOINT" || rmdir "$MOUNTPOINT"
  29. fi
  30. }
  31. unmount() {
  32. check findmnt fusermount dataindex
  33. while IFS= read -r i; do
  34. ## Generate index on exit.
  35. folder=$(basename $(dirname "$i"))
  36. mkdir -p "$PERSONAL"/index/"$folder"
  37. dataindex "$i" | gpg --encrypt --recipient mail@ambrevar.xyz \
  38. --output - > "$PERSONAL"/index/"$folder"/"$(basename "$i")".index.gpg
  39. unset folder
  40. fusermount -u "$i"
  41. rmdir "$i"
  42. done <<EOF
  43. $(findmnt --noheadings --output=target encfs)
  44. EOF
  45. }
  46. if [ "$1" = "-u" ]; then
  47. unmount
  48. exit 0
  49. fi
  50. if [ $# -gt 1 ]; then
  51. echo -n "EncFS Password: "
  52. read PASS
  53. fi
  54. for i; do
  55. mount "$i"
  56. done