#!/bin/sh
#
CONFIG=/etc/config/smb.conf

# Check that smb.conf exists.
[ -f $CONFIG ] || exit 0

start() {
	echo -n "Starting winbindd services:"
	if [ `/sbin/getcfg Samba Enable -u -d TRUE` = FALSE ]; then
		echo " disabled."
		exit 0
	fi
	RETVAL=1
	/bin/grep -i idmap $CONFIG >/dev/null 2>&1
	RETIDMAP=$?
	/bin/grep -i winbind.*uid $CONFIG >/dev/null 2>&1
	RETWINBIND=$?
	if [ $RETIDMAP = 0 ] || [ $RETWINBIND = 0 ]; then
		/sbin/daemon_mgr winbindd start "/usr/local/samba/sbin/winbindd -s $CONFIG"
		/bin/touch /etc/krb5.keytab
		/bin/chmod 666 /mnt/HDA_ROOT/.domain_*
		RETVAL=$?
	fi
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/winbind || RETVAL=1
	if [ "$RETVAL" = "0" ]; then echo " winbindd."; fi

	idmap_rid=`/sbin/getcfg Samba "idmap_rid" -d "FALSE"`
        if [ "$idmap_rid" = "FALSE" ]; then
		/bin/cat /etc/config/crontab | /bin/grep idmap.sh > /dev/null
		if [ $? -ne 0 ]; then
			echo "0 3 * * 0 /etc/init.d/idmap.sh dump" >> /etc/config/crontab
			/usr/bin/crontab /etc/config/crontab
		fi
        fi
	return $RETVAL
}	
stop() {
	echo -n "Shutting down winbindd services:"
#	winbinddpids=`ps guax | grep winbindd | grep -v grep | awk '{print $1}'`
#	for pid in $winbinddpids; do
#		kill -TERM $pid
#	done
	/sbin/daemon_mgr winbindd stop "/usr/local/samba/sbin/winbindd"
	echo " winbindd."
        /bin/sleep 1
        /bin/pidof winbindd 1>>/dev/null 2>>/dev/null
        [ $? != 0 ] || /bin/kill `/bin/pidof winbindd`
	[ ! -f /var/lock/subsys/winbind ] || rm -f /var/lock/subsys/winbind
	return $RETVAL
}	
restart() {
	stop
	start
}	

case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart)
  	restart
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
esac

exit $?
