#!/bin/sh
#
# ? Copyright 1996-2010, ZsoltTech.Com
#       by Ser Lev Arris <
arris@ZsoltTech.Com>
#
#       donated for the SamyGo Project
#       
http://samygo.sourceforge.net/
#
#       Version: SamyGO svn $Id: 04_04_samba.init 1069 2011-01-03 16:47:24Z arris69 $
#
. /dtv/SGO.env
# sleep 9
##### CHANGE MEEEEE !!!!! ######
USER="my-actual-samba-username" #"CHANGE_MEEEEE" #user and password have to be st to SOMETHING 

PASSWD="my-actual-samba-password" #"CHANGE_MEEEEE"
PERM="rw" # can be ro or rw
##### CHANGE MEEEEE END ######
DEST_DIR=$MOUNT_PATH/smb
SERVER="192.168.1.1"
# SERVER="10.0.0.1" # if you want a fixed server
SHARES="NAS/Media"
FR_NAME="Samba Server"
# M_OPTS="rw,user=${USER},password=${PASSWD}"
#M_OPTS="$PERM,uid=1010,gid=1010,user=${USER},password=${PASSWD},codepage=cp1250,iocharset=utf8"
M_OPTS="$PERM,uid=1010,gid=1010,user=${USER},password=${PASSWD},iocharset=utf8,noserverino"
NO_PASSWORD_OPTS="$PERM,sec=ntlm,user=,uid=1010,gid=1010,password=,iocharset=utf8,noserverino"
[ -e /mtd_rwarea/smb_userdata ] && source /mtd_rwarea/smb_userdata
# Removing. Now we support no password scenario
# if there is a password mounting will fail anyway 

#[ -z $USER ] && exit 1 
#[ -z $PASSWD ] && exit 1
SERVERS="Don't set me!!"
do_mount()
{
#		$(echo -e "[sdh]\nVendor : CifsMount\nProduct : $FR_NAME\n\
#Serial : Q80VQLFH\nDevpath : 8\nLun : 0\nMountDir : $DEST_DIR\nFileSystem : vfat\n" >> /dtv/usb/log)
	for i in $S_MOUNTS ; do
		i="$(echo -n $i | sed -e 's/SGOspace/ /g')"
		#M_POINT="$DEST_DIR/$1/$(echo -n $i | sed -e "s/\//_/g")"	#disabled by levi
		M_POINT="$DEST_DIR/$1/$(basename $i)"						#enabled by levi
		mkdir -p "$M_POINT" 
		if [ `cat /proc/mounts | grep -c "$M_POINT"` -lt "1" ]
		then	
			echo "Trying to mount WITH password!"
			$SYSROOT/bin/busybox mount -o "${M_OPTS}" -t cifs "//$1/$i" "$M_POINT"
			if [ `cat /proc/mounts | grep -c "$M_POINT"` -lt "1" ]
			then	
				echo "Trying to mount WITHOUT password!"
				$SYSROOT/bin/busybox2 mount -o "${NO_PASSWORD_OPTS}" -t cifs "//$1/$i" "$M_POINT"
			fi
		else
			echo "$M_POINT is mounted!"
		fi
	done
}
get_shares()
{
	if [ -z "$SHARES" ] ; then
		echo "Search Shares" 
		for i in $SERVERS ; do
		echo "on: $i" 
			S_MOUNTS=$(smbclient -s "$SYSROOT/etc/samba/smb.conf" -U ${USER}%${PASSWD} \
			-g -L $i | grep "Disk|" | grep -v "\\$" | grep -v " Service" | sed -r 's/.*\|(.*)\|.*/\1/' | sed -r 's/ /SGOspace/g')	
			# -g -L $i | grep "Disk|" | grep -v "\\$" | grep -v " Service" | cut -d "|" -f2)	
		[ -n "$S_MOUNTS" ] && do_mount $i
		done
	else
		echo -n "Fixed Server: "
		for i in $SERVERS ; do
			echo $i
			S_MOUNTS=$SHARES
			[ -n "$S_MOUNTS" ] && do_mount $i
		done
	fi
}
get_servers()
{
	if [ -z "$SERVER" ] ; then
		# SERVERS=$(cat /proc/net/arp | grep -v "IP address" | cut -d " " -f1)
		SERVERS=$(cat /proc/net/arp | grep -v "IP address" | sed 's/^\(\w*.\w*.\w*.\w*\) *.*/\1/')
	else
		SERVERS=$SERVER
	fi
}
case $1 in 
	start)
	echo " " >> $LOGFILE 2>&1  
	echo "+++++++++++++++++ SAMBA ++++++++++++++++" >> $LOGFILE 2>&1   
	echo " " >> $LOGFILE 2>&1 	
		
	insmod $MOD_DIR/kernel/fs/cifs/cifs.ko || dmesg | tail >> $LOGFILE 2>&1
	sync; sleep 2
	mkdir -p "$DEST_DIR"
	get_servers
	get_shares
	;;
	stop)
	# may can fail if device access the mount from content library
	# for i in $(cat /proc/mounts | grep cifs | cut -d " " -f2) ; do
	for i in $(cat /proc/mounts | grep cifs | grep "$DEST_DIR" | sed 's/^\(.*\) \(.*\) cifs .*/\2/') ; do
		i="$(echo -n $i | sed -r 's/\\040/ /g')"
		$SYSROOT/bin/busybox umount "$i"
	done
	;;
	status)
	$SYSROOT/bin/busybox mount | grep "$DEST_DIR"
	;;
	*)
	echo "Usage: $0 {start|stop}" 1>&2
	exit 0
	;;
esac