lanturtle-modules/modules/sshfs

108 lines
3.0 KiB
Bash
Executable File

#!/bin/bash /usr/lib/turtle/turtle_module
VERSION="1.0"
DESCRIPTION="Mounts remote File Systems over SSH"
CONF=/tmp/sshfs.form
: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}
function start {
if [ -s /etc/config/sshfs ]
then
sshfs_host=$(uci get sshfs.host)
sshfs_port=$(uci get sshfs.port)
sshfs_user=$(uci get sshfs.user)
sshfs_path=$(uci get sshfs.path)
echo sshfs -o idmap=user -C -p "$sshfs_port" "$sshfs_user"@"$sshfs_host":"$sshfs_path" /sshfs/
sshfs -o idmap=user -C -p "$sshfs_port" "$sshfs_user"@"$sshfs_host":"$sshfs_path" /sshfs/
echo -n "sshfs started with pid: "; pidof sshfs
else
touch /etc/config/sshfs
echo "sshfs not configured"
fi
}
function stop {
fusermount -u /sshfs/
}
function status {
if pgrep /usr/bin/sshfs > /dev/null; then echo "1"; else echo "0"; fi
}
function configure {
mkdir -p /sshfs/
if [ -s /etc/config/sshfs ]
then
sshfs_host=$(uci get sshfs.host)
sshfs_port=$(uci get sshfs.port)
sshfs_user=$(uci get sshfs.user)
sshfs_path=$(uci get sshfs.path)
else
touch /etc/config/sshfs
fi
dialog --ok-label "Submit" \
--help-button \
--title "SSHFS Configuration" \
--form "SSHFS (Secure SHell FileSystem)\n\n\
Host: Remote SSH Server.\n\
Port: Remote SSH Server Port (Default: 22).\n\
User: User on remote SSH server.\n\
Path: Path on remote SSH server (blank for users home).\n" 16 60 4\
"Host:" 1 1 "$sshfs_host" 1 7 48 0 \
"Port:" 2 1 "$sshfs_port" 2 7 48 0 \
"User:" 3 1 "$sshfs_user" 3 7 48 0 \
"Path:" 4 1 "$sshfs_path" 4 7 48 0 \
2>$CONF
return=$?
case $return in
$DIALOG_OK)
cat $CONF | {
read -r sshfs_host
read -r sshfs_port
read -r sshfs_user
read -r sshfs_path
if [ -z "$sshfs_port" ]; then
sshfs_port="22"
fi
touch /etc/config/sshfs
uci set sshfs.host="$sshfs_host"
uci set sshfs.port="$sshfs_port"
uci set sshfs.user="$sshfs_user"
uci set sshfs.path="$sshfs_path"
uci commit sshfs
rm $CONF
clear
};;
$DIALOG_CANCEL)
rm $CONF
clear
exit;;
$DIALOG_HELP)
dialog --title "Help" \
--msgbox "sshfs \
SSHFS (Secure SHell FileSystem) is a file system for Linux (and other operating systems with a \
FUSE implementation, such as Mac OS X or FreeBSD) capable of operating on files on a remote \
computer using just a secure shell login on the remote computer. On the local computer where \
the SSHFS is mounted, the implementation makes use of the FUSE (Filesystem in Userspace) kernel \
module. The practical effect of this is that the end user can seamlessly interact with \
remote files being securely served over SSH just as if they were local files on his/her \
computer. On the remote computer the SFTP subsystem of SSH is used.\n\n\
If host is a numeric IPv6 address, it needs to be enclosed in square brackets\
" 20 60
configure
;;
$DIALOG_ESC)
clear;;
esac
}