#!/usr/bin/env bash

[ -n "${CONNECTION_UUID}" ] || exit 0

[[ -f /usr/lib/ublinux/os-config ]] && . /usr/lib/ublinux/os-config || exit 0
#eval $(grep -i "^AUTOMOUNTSAHARE=" ${SYSCONF}/config)

SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null

INTERFACE=$1
ACTION=$2

automount(){
    #SMB_OPTSDEF="vers=3,nolock,users,noauto"
    SMB_OPTSDEF="noperm"
    SSH_OPTSDEF="reconnect,allow_other,auto_unmount,auto_cache,StrictHostKeyChecking=accept-new"
    
    if [[ -n "${AUTOMOUNT_SHARE[@]}" ]]; then
	sleep 5
	for SHARE in "${!AUTOMOUNT_SHARE[@]}"; do
    	    if [[ $(cut -d: -f1 <<< ${AUTOMOUNT_SHARE[${SHARE}]}) == "cifs" ]]; then
    		FILE_CREDENTIALS=$(mktemp /tmp/.smbcredentials.XXXX)
        	PATH_MOUNT_FROM=$(cut -d: -f2 <<< ${AUTOMOUNT_SHARE[${SHARE}]})
        	USERNAME=$(cut -d: -f3 <<< ${AUTOMOUNT_SHARE[${SHARE}]})
        	PASSWORD=$(cut -d: -f4 <<< ${AUTOMOUNT_SHARE[${SHARE}]})
        	DOMAIN=$(cut -d: -f5 <<< ${AUTOMOUNT_SHARE[${SHARE}]})
        	OPTS=$(cut -d: -f6 <<< ${AUTOMOUNT_SHARE[${SHARE}]})
        	[[ -z ${OPTS} ]] && OPTS=${SMB_OPTSDEF}
        	[[ -d ${SHARE} ]] && umount -qRlf "${SHARE}" || mkdir -p "${SHARE}"
        	echo "user=${USERNAME}" > "${FILE_CREDENTIALS}"
        	echo "password=$(echo "${PASSWORD}" | base64 -d)" >> "${FILE_CREDENTIALS}"
        	echo "domain=${DOMAIN}" >> "${FILE_CREDENTIALS}"
#           	mount.cifs "${PATH_MOUNT_FROM}" "${SHARE}" -ouser="${USERNAME}",password="${PASSWORD}","${OPTS}"
        	mount.cifs "${PATH_MOUNT_FROM}" "${SHARE}" -ocredentials="${FILE_CREDENTIALS}",${OPTS}
		rm -f "${FILE_CREDENTIALS}"
	    elif  [[ "$(cut -d: -f1 <<< ${AUTOMOUNT_SHARE[${SHARE}]})" == "nfs" ]]; then
		echo
	    elif  [[ "$(cut -d: -f1 <<< ${AUTOMOUNT_SHARE[${SHARE}]})" == "ftp" ]]; then
		echo
	    elif  [[ "$(cut -d: -f1 <<< ${AUTOMOUNT_SHARE[${SHARE}]})" == "sshfs" ]]; then
		grep -q "^user_allow_other" /etc/fuse.conf || sed -i "s/#user_allow_other/user_allow_other/" /etc/fuse.conf
        	TARGET_MOUNT_FROM=$(cut -d: -f2 <<< ${AUTOMOUNT_SHARE[${SHARE}]})
        	PATH_MOUNT_FROM=$(cut -d: -f3 <<< ${AUTOMOUNT_SHARE[${SHARE}]})
#		TARGETIP=$(cut -d@ -f2 <<< ${PATH_MOUNT_FROM})
#        	USERNAME=$(cut -d@ -f1 <<< ${PATH_MOUNT_FROM})
        	SSHPASS=$(echo $(cut -d: -f4 <<< ${AUTOMOUNT_SHARE[${SHARE}]}) | base64 -d)
		OPTS=$(cut -d: -f5 <<< ${AUTOMOUNT_SHARE[${SHARE}]})
        	[[ -z ${OPTS} ]] && OPTS=${SSH_OPTSDEF}
        	[[ -n ${OPTS} ]] && OPTS=" -o ${OPTS}"
		[[ -d ${SHARE} ]] && umount -qRlf ${SHARE} || mkdir -p ${SHARE}
#		sshpass -e sshfs -f ${USERNAME}@${TARGETIP}:${PATH_MOUNT_FROM} ${SHARE} ${OPTS}
#		sshpass -e sshfs -f ${TARGET_MOUNT_FROM}:${PATH_MOUNT_FROM} ${SHARE} ${OPTS}
		sshfs ${OPTS} -o password_stdin ${TARGET_MOUNT_FROM}:${PATH_MOUNT_FROM} ${SHARE} <<< "${SSHPASS}"
	    fi
	done
    fi
}

autoumount(){
    if [[ -n "${AUTOMOUNT_SHARE[@]}" ]]; then
	for SHARE in "${!AUTOMOUNT_SHARE[@]}"; do
    	    if [[ $(cut -d: -f1 <<< ${AUTOMOUNT_SHARE[${SHARE}]}) == "cifs" ]]; then
    		umount -l -R -f ${SHARE} &>/dev/null
	    elif  [[ "$(cut -d: -f1 <<< ${AUTOMOUNT_SHARE[${SHARE}]})" == "nfs" ]]; then	    
		umount -l -R -f ${SHARE} &>/dev/null
	    elif  [[ "$(cut -d: -f1 <<< ${AUTOMOUNT_SHARE[${SHARE}]})" == "ftp" ]]; then
		umount -l -R -f ${SHARE} &>/dev/null
	    elif  [[ "$(cut -d: -f1 <<< ${AUTOMOUNT_SHARE[${SHARE}]})" == "sshfs" ]]; then
		umount -l -R -f ${SHARE} &>/dev/null
	    fi

	done
    fi
}

case "$ACTION" in
    "up")
	automount &
    ;;
    "pre-down" | "vpn-pre-down")
        autoumount &
    ;;
esac

exit 0