APPTITLE="SMB browser"
SUBN=$(ifconfig | grep inet | grep -v 127.0.0.1 | cut -d ":" -f 2 | cut -n -d "." -f 1-3 | sed 1q)
if [ "$SUBN" = "" ] ; then
 Xdialog --title "$APPTITLE" --stdout --ok-label "OK" --infobox "It doesn't seem like you are connected to your network. \n You need to be on a network to share files." 0 0 90000
 exit
fi


#if [ "$(mount | grep $Name )" = "" ] ; then #for some reason can't grep "$APPDIR" when used as a rox app, guess it's something with /.
if ! grep -F "$(readlink -f "$APPDIR"|sed 's% %\\040%g')" /proc/mounts; then #"\040" represents spaces in /proc/mounts 
    [ "$PARAMS" = "unmount" ] && exit
    if [ -z "$SUBNETSALT" ]; then
		IP=$(nmblookup $Name | grep "<00>" | cut -d " " -f 1) #Ip address may change so look it up by netbios name.
	else
		#IP=$(nbtscan ${SUBNETSALT}.1-254 | sed -n "/$Name/ {s/ .*// ; p}")
		for IP in $(mpscan $TIMEOUT -p $PORT ${SUBNETSALT}.1 - ${SUBNETSALT}.254 | cut -d " " -f 2); do
			nmblookup -A $IP | grep -q $Name && break
		done
	fi
	cat > /tmp/trymount << EOF
#/bin/ash
Password="$Password"
if [[ "\$Password" != "guest" || "\$Password" != "" ]];then #decrypt
  Password="\$(printf "$Password"|base64 -d)"
fi
if [ \$(id -u) -ne 0 ]; then exec gtksu "Mount Samba Share \\\\$Name\\$Share" \$0; fi
mount.cifs //$IP/"$Share" "$APPDIR"/mnt-point -o username=$Username,password=\$Password,file_mode=0775,dir_mode=0775,gid=$(awk -F: "/^users/ {print \$3}" /etc/group),noserverino$IOCHARSET &&
ln -sfT mounted.svg .DirIcon || ln -sfT drive48.png .DirIcon
retval=\$?
rm \$0
exit \$retval
EOF
	chmod +x /tmp/trymount
	/tmp/trymount
	if [ $? -ne 0 ]; then
	Xdialog --title "$APPTITLE" --stdout --ok-label "OK" --infobox "Could not mount the shared folder." 0 0 90000
	exit
	else
	rox "$APPDIR"/mnt-point
    rox -x $(echo "$APPDIR" | sed 's,/*[^/]\+/*$,,') #refresh window so new icon shows up.
	fi
else #if already mounted
if [ "$PARAMS" = "unmount" ] ; then
rox -D "$APPDIR"/mnt-point
	cat > /tmp/try-unmount << EOF
#/bin/ash
if [ \$(id -u) -ne 0 ]; then exec gtksu "Un-mount Samba Share \\\\$Name\\$Share" \$0; fi
umount.cifs -n "$APPDIR"/mnt-point &&
ln -sfT drive48.png .DirIcon || ln -sfT mounted.svg .DirIcon
retval=\$?
rm \$0
exit \$retval
EOF
	chmod +x /tmp/try-unmount
	/tmp/try-unmount
	if [ $? -ne 0 ]; then
	Xdialog --title "$APPTITLE" --stdout --ok-label "OK" --infobox "Could not umount. Close all files open on the shared folder and try again." 0 0 90000
    rox -x $(echo "$APPDIR" | sed 's,/*[^/]\+/*$,,')
	exit
	else
    rox -x $(echo "$APPDIR" | sed 's,/*[^/]\+/*$,,')
	fi
else
rox "$APPDIR"/mnt-point
fi
fi
