#!/bin/sh

### BEGIN INIT INFO
# Provides:          smbd
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Should-Start:      slapd cups
# Should-Stop:       slapd cups
# Short-Description: start Samba SMB/CIFS daemon (smbd)
### END INIT INFO


setvar PIDDIR = "/var/run/samba"
setvar SMBDPID = "$PIDDIR/smbd.pid"

# clear conflicting settings from the environment
unset TMPDIR

# See if the daemons are there
test -x /usr/sbin/smbd || exit 0

source /lib/lsb/init-functions

case (1) {
	start {
		if init_is_upstart {
			exit 1
		}
		setvar SERVER_ROLE = $(samba-tool testparm --parameter-name="server role"  2>/dev/null | tail -1)
		if test $SERVER_ROLE = "active directory domain controller" {
		    exit 0
		}

		log_daemon_msg "Starting SMB/CIFS daemon" smbd
		# Make sure we have our PIDDIR, even if it's on a tmpfs
		install -o root -g root -m 755 -d $PIDDIR

		if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/smbd -- -D {
			log_end_msg 1
			exit 1
		}

		log_end_msg 0
		}
	stop {
		if init_is_upstart {
			exit 0
		}

		log_daemon_msg "Stopping SMB/CIFS daemon" smbd

		start-stop-daemon --stop --quiet --pidfile $SMBDPID
		# Wait a little and remove stale PID file
		sleep 1
		if test -f $SMBDPID && ! ps h $(cat $SMBDPID) > /dev/null
		{
			# Stale PID file, remove it (should be removed by
			# smbd itself IMHO).
			rm -f $SMBDPID
		}

		log_end_msg 0

		}
	reload {
		log_daemon_msg "Reloading /etc/samba/smb.conf" smbd

		start-stop-daemon --stop --quiet --signal HUP --pidfile $SMBDPID

		log_end_msg 0
		}
	restart|force-reload {
		if init_is_upstart {
			exit 1
		}
		$0 stop
		sleep 1
		$0 start
		}
        status {
		status_of_proc -p $SMBDPID /usr/sbin/smbd smbd
		exit $?
		}
	* {
		echo "Usage: /etc/init.d/smbd {start|stop|reload|restart|force-reload|status}"
		exit 1
		}
}

exit 0