X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=smb.init;h=9b7f9233f35ea0672bed4f266fe470bfa4c69237;hb=607be618cdfba9cd85bec3a3445bc851d643d7d9;hp=a4153feb43ab79abb42de12e5fbb9ae57afc4c4d;hpb=ecefb8c78bf552512c7ff5afffcaa744900c11ec;p=packages%2Fsamba.git diff --git a/smb.init b/smb.init old mode 100644 new mode 100755 index a4153fe..9b7f923 --- a/smb.init +++ b/smb.init @@ -6,8 +6,8 @@ # # config: /etc/samba/smb.conf # config: /etc/samba/lmhosts - -export PATH=/bin:/sbin:/usr/bin:/usr/sbin +# processname: nmbd +# processname: smbd # Source function library. . /etc/rc.d/init.d/functions @@ -15,70 +15,125 @@ export PATH=/bin:/sbin:/usr/bin:/usr/sbin # Source networking configuration. . /etc/sysconfig/network +# Set default config +CFGFILE="/etc/samba/smb.conf" +smbd_pidfile="/var/run/samba/smbd.pid" +nmbd_pidfile="/var/run/samba/nmbd.pid" +lockname=smb + # Demon specified configuration. . /etc/sysconfig/samba # Check that networking is up. -if is_no "${NETWORKING}"; then - msg_Network_Down smb - exit 1 +if is_yes "${NETWORKING}"; then + if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then + msg_network_down "Samba SMB/CIFS Server" + exit 1 + fi +else + exit 0 fi - -# Check that smb.conf exists. -[ -f /etc/samba/smb.conf ] || exit 0 +export TMPDIR=/tmp +unset TMP || : + +start() { + SERVER_ROLE=$(samba-tool testparm --parameter-name="server role" 2>/dev/null | tail -n1) + if [ "$SERVER_ROLE" = "active directory domain controller" ]; then + exit 0 + fi + + # Check if the service is already running? + if [ -f /var/lock/subsys/$lockname ]; then + msg_already_running "Samba SMB/CIFS Server" + return + fi + + msg_starting "Samba SMB/CIFS Server" + daemon /usr/sbin/smbd -D -s $CFGFILE + RETVAL=$? + NMBD_DISABLED=`testparm -s --parameter-name='disable netbios' 2>/dev/null` + if [ "$NMBD_DISABLED" != Yes ]; then + msg_starting "Samba NetBIOS Name Server" + daemon /usr/sbin/nmbd -D $CFGFILE + [ $RETVAL -eq 0 ] && RETVAL=$? + fi + if [ $RETVAL -eq 0 ]; then + touch /var/lock/subsys/$lockname + fi +} + +stop() { + # Stop daemons. + if [ ! -f /var/lock/subsys/$lockname ]; then + msg_not_running "Samba SMB/CIFS Server" + return + fi + + msg_stopping "Samba SMB/CIFS Server" + killproc --pidfile $smbd_pidfile smbd + + msg_stopping "Samba NetBIOS Name Server" + killproc --pidfile $nmbd_pidfile nmbd + rm -f /var/lock/subsys/$lockname >/dev/null 2>&1 +} + +reload() { + if [ ! -f /var/lock/subsys/$lockname ]; then + msg_not_running "Samba SMB/CIFS Server" + RETVAL=7 + return + fi + + msg_reloading "Samba SMB/CIFS Server" + killproc --pidfile $smbd_pidfile smbd -HUP + RETVAL=$? +} + +condrestart() { + if [ ! -f /var/lock/subsys/$lockname ]; then + msg_not_running "Samba SMB/CIFS Server" + RETVAL=$1 + return + fi + stop + start +} + +rc_status() { + status smbd + RETVAL=$? + status nmbd + RET=$? + [ $RETVAL -eq 0 ] && RETVAL=$RET +} + +RETVAL=0 # See how we were called. case "$1" in start) - # Check if the service is already running? - if [ ! -f /var/lock/subsys/smb ]; then - msg_starting smbd - daemon $NICELEVEL smbd -D - msg_starting nmbd - daemon $NICELEVEL nmbd -D - RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/smb - else - msg_Already_Running smb - exit 1 - fi + start ;; stop) - # Stop daemons. - if [ -f /var/lock/subsys/smb ]; then - msg_stopping smbd - killproc smbd - msg_stopping nmbd - killproc nmbd - rm -f /var/lock/subsys/smb >/dev/null 2>&1 - else - msg_Not_Running smb - exit 1 - fi - ;; - status) - status smbd - status nmbd - smbstatus - exit $? + stop ;; restart) - $0 stop - $0 start + stop + start + ;; + try-restart) + condrestart 0 ;; - reload) - if [ -f /var/lock/subsys/smb ]; then - msg_reload smb - killproc smbd -HUP - else - msg_Not_Running smb - exit 1 - fi + reload|force-reload) + reload + ;; + status) + rc_status ;; *) - msg_Usage "$0 {start|stop|restart|reload|status}" - exit 1 + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}" + exit 3 esac exit $RETVAL