mount.sh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/bin/sh
  2. set -e
  3. if [ ! -f "$ENCFS_PASSWORD_PATH" ]; then
  4. echo generating encfs password
  5. (set -x;
  6. tr -dc "$ENCFS_PASSWORD_CHARSET" < /dev/random | head -c "$ENCFS_PASSWORD_LENGTH" > "$ENCFS_PASSWORD_PATH")
  7. [ -f "$ENCFS_CONFIG_PATH" ] && (set -x; rm "$ENCFS_CONFIG_PATH")
  8. fi
  9. function mount_encfs {
  10. (set -x
  11. encfs --reverse "$@" \
  12. --extpass="cat \"$ENCFS_PASSWORD_PATH\"" \
  13. "$ENCFS_SOURCE_DIR" "$ENCFS_MOUNT_POINT")
  14. }
  15. if [ ! -f "$ENCFS_CONFIG_PATH" ]; then
  16. # ERROR fatal: config file specified by environment does not exist: /target/config/encfs6.xml [FileUtils.cpp:246]
  17. # https://github.com/vgough/encfs/issues/497
  18. echo generating encfs config
  19. ENCFS_DEFAULT_CONFIG_PATH="$ENCFS_SOURCE_DIR/.encfs6.xml"
  20. if [ -f "$ENCFS_DEFAULT_CONFIG_PATH" ]; then
  21. echo conflicting encfs config in $ENCFS_DEFAULT_CONFIG_PATH
  22. exit 1
  23. fi
  24. mount_encfs --standard
  25. while [ ! -f "$ENCFS_DEFAULT_CONFIG_PATH" ]; do
  26. sleep 1
  27. echo waiting for encfs config
  28. done
  29. if [ -f "$ENCFS_DEFAULT_CONFIG_PATH" ]; then
  30. umount "$ENCFS_MOUNT_POINT"
  31. while mountpoint -q "$ENCFS_MOUNT_POINT"; do
  32. echo waiting for unmount
  33. sleep 1
  34. done
  35. (set -x; mv "$ENCFS_DEFAULT_CONFIG_PATH" "$ENCFS_CONFIG_PATH")
  36. else
  37. echo failed to generate encfs config
  38. exit 1
  39. fi
  40. fi
  41. export ENCFS6_CONFIG="$ENCFS_CONFIG_PATH"
  42. # TODO grant access to other users / containers (--public / -o allow_other)
  43. mount_encfs -f