Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 1840e1f061d4543bc35cf33ea72eb707 > files > 9

netatalk-2.1.3-1.fc14.x86_64.rpm

#! /bin/sh
# chkconfig: - 91 35
# description: This package is an implementation of "AFP over TCP"
#              and provides printer, file sharing, and routing 
#              services via legacy AppleTalk networking protocol.
#
# Netatalk daemons.
# If you use AppleTalk, Make sure not to start atalkd in the background:
# its data structures must have time to stablize before running the
# other processes.

ATALK_BIN=/usr/bin
ATALK_CONF_DIR=/etc/netatalk/
ATALK_SBIN=/usr/sbin

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# read in netatalk configuration
if [ -f ${ATALK_CONF_DIR}/netatalk.conf ]; then
    . ${ATALK_CONF_DIR}/netatalk.conf
fi

# initialize return values
RETVAL=1
RETVAL_ATALKD=0
RETVAL_PAPD=0
RETVAL_CNID_METAD=0
RETVAL_AFPD=0

# startup code for everything
atalk_startup() {
    # Check that networking is up.
    if [ ${NETWORKING} = "no" ]; then
         echo "[Network isn't started]"; 
         exit 1;
    fi

    if [ ! -x ${ATALK_SBIN}/atalkd ]; then
         # Quickly probe for appletalk and warn if we can't find it
         #/sbin/modprobe appletalk || echo "[could not load appletalk module]"
         # Check for IP Encapsulation support
         #/sbin/modprobe ipddp || echo "[could not load IP encapsulation]"
         echo "[${ATALK_SBIN}/atalkd not found. Check for permissions]";
         exit 4;
    fi

    if [ ! -f ${ATALK_CONF_DIR}/netatalk.conf ]; then
         echo "[${ATALK_CONF_DIR}/netatalk.conf not found]";
         exit 6;
    fi

    if [ x"${ATALKD_RUN}" != x"no" ]; then 
	echo -n "  Starting atalkd:"
	daemon ${ATALK_SBIN}/atalkd
	RETVAL_ATALKD=$?
	echo

	if [ -x ${ATALK_BIN}/nbprgstr ]; then	
	    action "  Registering ${ATALK_NAME}:Workstation${ATALK_ZONE}:" ${ATALK_BIN}/nbprgstr -p 4 \"${ATALK_NAME}:Workstation${ATALK_ZONE}\"
	    action "  Registering ${ATALK_NAME}:netatalk${ATALK_ZONE}:" ${ATALK_BIN}/nbprgstr -p 4 \"${ATALK_NAME}:netatalk${ATALK_ZONE}\"
	fi	

	if [ x"${PAPD_RUN}" = x"yes"  -a -x ${ATALK_SBIN}/papd ]; then
	    echo -n "  Starting papd:"
	    daemon ${ATALK_SBIN}/papd
	    RETVAL_PAPD=$?
	    echo
	fi

	# check for timelord in bin directory
	if [ x"${TIMELORD_RUN}" = x"yes"  -a -x ${ATALK_BIN}/timelord ]; then
	    echo -n "  Starting timelord"
	    daemon ${ATALK_BIN}/timelord
	    echo
	fi

	# check for timelord in sbin directory
	if [ x"${TIMELORD_RUN}" = x"yes"  -a -x ${ATALK_SBIN}/timelord ]; then
	    echo -n "  Starting timelord"
	    daemon ${ATALK_SBIN}/timelord
	    echo
	fi

	# check for a2boot in bin directory
	if [ x"${A2BOOT_RUN}" = x"yes"  -a -x ${ATALK_BIN}/a2boot ]; then
	    echo -n "  Starting a2boot"
	    daemon ${ATALK_BIN}/a2boot
	    echo
	fi

	# check for a2boot in sbin directory
	if [ x"${A2BOOT_RUN}" = x"yes"  -a -x ${ATALK_SBIN}/a2boot ]; then
	    echo -n "  Starting a2boot"
	    daemon ${ATALK_SBIN}/a2boot
	    echo
	fi

    fi

    if [ x"${CNID_METAD_RUN}" = x"yes" -a -x ${ATALK_SBIN}/cnid_metad ] ; then
	    echo -n "  Starting cnid_metad:"
        daemon ${ATALK_SBIN}/cnid_metad $CNID_CONFIG
	    RETVAL_CNID_METAD=$?
	    echo
    fi

    if [ x"${AFPD_RUN}" = x"yes" -a -x ${ATALK_SBIN}/afpd ] ; then
	    echo -n "  Starting afpd:"
	    daemon ${ATALK_SBIN}/afpd ${AFPD_UAMLIST} -g ${AFPD_GUEST} \
               -c ${AFPD_MAX_CLIENTS} -n \"${ATALK_NAME}${ATALK_ZONE}\"
	    RETVAL_AFPD=$?
	    echo
    fi

    if [ $RETVAL_ATALKD -eq 0 -a $RETVAL_PAPD -eq 0 -a $RETVAL_CNID_METAD -eq 0 -a $RETVAL_AFPD -eq 0 ]; then
        RETVAL=0
	touch /var/lock/subsys/atalk || RETVAL=1
    fi
}

case "$1" in
'start')
	echo -n 'Starting Netatalk services: '
	if [ x"${ATALK_BGROUND}" = x"yes" ]; then 
	    echo -n "(backgrounded)"
	    atalk_startup >& /dev/null &
	else
	    echo
	    atalk_startup
	fi
	echo 
	;;
'stop')
	echo 'Shutting down Netatalk services: '
	if [ x"${ATALKD_RUN}" != x"no" ]; then
	    if [ x"${PAPD_RUN}" = x"yes" -a -x ${ATALK_SBIN}/papd ]; then
		echo -n "  Stopping papd:"
		killproc papd
		RETVAL_PAPD=$?
		echo
	    fi

            # checking for timelord in bin directory
	    if [ x"${TIMELORD_RUN}" = x"yes" -a -x ${ATALK_BIN}/timelord ]; then
		echo -n "  Stopping timelord:"
		killproc timelord
		echo
	    fi

            # checking for timelord in sbin directory
	    if [ x"${TIMELORD_RUN}" = x"yes" -a -x ${ATALK_SBIN}/timelord ]; then
		echo -n "  Stopping timelord:"
		killproc timelord
		echo
	    fi

            # checking for a2boot in bin directory
	    if [ x"${A2BOOT_RUN}" = x"yes" -a -x ${ATALK_BIN}/a2boot ]; then
		echo -n "  Stopping a2boot:"
		killproc a2boot
		echo
	    fi

            # checking for a2boot in sbin directory
	    if [ x"${A2BOOT_RUN}" = x"yes" -a -x ${ATALK_SBIN}/a2boot ]; then
		echo -n "  Stopping a2boot:"
		killproc a2boot
		echo
	    fi

	    action "  Unregistering ${ATALK_NAME}:Workstation${ATALK_ZONE}:" ${ATALK_BIN}/nbpunrgstr \"${ATALK_NAME}:Workstation${ATALK_ZONE}\"
	    action "  Unregistering ${ATALK_NAME}:netatalk${ATALK_ZONE}:" ${ATALK_BIN}/nbpunrgstr \"${ATALK_NAME}:netatalk${ATALK_ZONE}\"

	    # kill atalkd last, since without it the plumbing goes away.
	    if [ -x ${ATALK_SBIN}/atalkd ]; then
		echo -n "  Stopping atalk:"
		killproc atalkd
		RETVAL_ATALKD=$?
		echo
	    fi
	fi

	# kill this separately as we also do AFP/tcp
	if [ x"${AFPD_RUN}" = x"yes" -a -x ${ATALK_SBIN}/afpd ]; then
	    echo -n "  Stopping afpd:"
	    killproc afpd
	    RETVAL_AFPD=$?
	    echo
	fi

	if [ x"${CNID_METAD_RUN}" = x"yes" -a -x ${ATALK_SBIN}/cnid_metad ]; then
	    echo -n "  Stopping cnid_metad:"
	    killproc cnid_metad
	    RETVAL_CNID_METAD=$?
	    echo
	fi

	if [ $RETVAL_ATALKD -eq 0 -a $RETVAL_PAPD -eq 0 -a $RETVAL_AFPD -eq 0 ] ; then
	    RETVAL=0
	    rm -f /var/lock/subsys/atalk || RETVAL=1
	fi
	echo ""
	;;
  'restart'|'reload')
	$0 stop
	$0 start
	RETVAL=$?
	;;
  'status')
	status atalkd
	status papd
	status timelord
	status a2boot
	status cnid_metad
	status afpd
	RETVAL=$?
	;;
  *)
	echo "Usage: $0 {start|stop|restart|reload|status}"
	exit 2
esac

exit $RETVAL