diff options
Diffstat (limited to 'source/n/netatalk/rc.atalk.new')
-rw-r--r-- | source/n/netatalk/rc.atalk.new | 169 |
1 files changed, 129 insertions, 40 deletions
diff --git a/source/n/netatalk/rc.atalk.new b/source/n/netatalk/rc.atalk.new index ce490345..9cb17f00 100644 --- a/source/n/netatalk/rc.atalk.new +++ b/source/n/netatalk/rc.atalk.new @@ -1,56 +1,145 @@ +#! /bin/sh # -# AppleTalk daemons. Make sure not to start atalkd in the background: +# Start/stop the Netatalk daemons. +# +# 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. # -netatalk_start() { - echo -n 'starting appletalk daemons: ' - if [ -x /usr/sbin/atalkd ]; then - echo -n ' atalkd' - /usr/sbin/atalkd - fi - if [ -x /usr/bin/nbprgstr ]; then - echo -n ' nbprgstr' - /usr/bin/nbprgstr -p 4 `hostname|sed 's/\..*$//'`:Workstation - /usr/bin/nbprgstr -p 4 `hostname|sed 's/\..*$//'`:netatalk - fi - if [ -x /usr/sbin/papd ]; then - echo -n ' papd' - /usr/sbin/papd - fi - if [ -x /usr/sbin/afpd ]; then - echo -n ' afpd' - /usr/sbin/afpd - fi - if [ -x /usr/sbin/timelord ]; then - echo -n ' timelord' - /usr/sbin/timelord - fi - echo +# +# kill the named process(es) +# +killproc() { + pid=`/usr/bin/ps -e | + /usr/bin/grep $1 | + /usr/bin/sed -e 's/^ *//' -e 's/ .*//'` + [ "$pid" != "" ] && kill $pid } -netatalk_stop() { - killall atalkd nbprgstr papd afpd timelord 2> /dev/null -} +# netatalk.conf expects hostname in $HOSTNAME by default +HOSTNAME=`hostname` + +. /etc/netatalk/netatalk.conf + + +# +# Start the netatalk server processes. +# + +atalk_startup() { + echo -n 'starting netatalk daemons: ' + if [ x"${ATALKD_RUN}" != x"no" ]; then + if [ -x /usr/sbin/atalkd ]; then + /usr/sbin/atalkd; echo -n ' atalkd' + fi -netatalk_restart() { - netatalk_stop - sleep 1 - netatalk_start + if [ -x /usr/bin/nbprgstr ]; then + /usr/bin/nbprgstr -p 4 "${ATALK_NAME}:Workstation${ATALK_ZONE}"; + /usr/bin/nbprgstr -p 4 "${ATALK_NAME}:netatalk${ATALK_ZONE}"; + echo -n ' nbprgstr' + fi + + if [ x"${PAPD_RUN}" = x"yes" -a -x /usr/sbin/papd ]; then + /usr/sbin/papd; echo -n ' papd' + fi + + if [ x"${TIMELORD_RUN}" = x"yes" -a -x /usr/sbin/timelord ]; then + /usr/sbin/timelord; echo -n ' timelord' + fi + fi + + if [ x"${CNID_METAD_RUN}" = x"yes" -a -x /usr/sbin/cnid_metad ]; then + /usr/sbin/cnid_metad $CNID_CONFIG + echo -n ' cnid_metad' + fi + + if [ x"${AFPD_RUN}" = x"yes" -a -x /usr/sbin/afpd ]; then + /usr/sbin/afpd ${AFPD_UAMLIST} -g ${AFPD_GUEST} \ + -c ${AFPD_MAX_CLIENTS} -n "${ATALK_NAME}${ATALK_ZONE}"; echo -n ' afpd' + fi + + echo '.' } +atalk_shutdown() { + echo -n 'stopping netatalk daemons:' + + if [ -x /usr/sbin/papd ]; then + killproc papd; echo -n ' papd' + fi + + if [ -x /usr/sbin/afpd ]; then + killproc afpd; echo -n ' afpd' + fi + + if [ -x /usr/sbin/cnid_metad ]; then + killproc cnid_met; echo -n ' cnid_metad' + fi + + if [ -x /usr/sbin/timelord ]; then + killproc timelord; echo -n ' timelord' + fi + + # kill atalkd last, since without it the plumbing goes away. + if [ -x /usr/sbin/atalkd ]; then + killproc atalkd; echo -n ' atalkd' + fi + echo '.' +} case "$1" in + 'start') - netatalk_start - ;; + if [ x"${ATALK_BGROUND}" = x"yes" ]; then + echo -n "Starting netatalk in the background ... " + atalk_startup > /dev/null & + else + atalk_startup + fi + ;; + +# +# Stop the netatalk server processes. +# 'stop') - netatalk_stop - ;; + + echo -n 'stopping netatalk daemons:' + + if [ -x /usr/sbin/papd ]; then + killproc papd; echo -n ' papd' + fi + + if [ -x /usr/sbin/afpd ]; then + killproc afpd; echo -n ' afpd' + fi + + if [ -x /usr/sbin/cnid_metad ]; then + killproc cnid_met; echo -n ' cnid_metad' + fi + + if [ -x /usr/sbin/timelord ]; then + killproc timelord; echo -n ' timelord' + fi + + # kill atalkd last, since without it the plumbing goes away. + if [ -x /usr/sbin/atalkd ]; then + killproc atalkd; echo -n ' atalkd' + fi + + echo '.' + ;; + 'restart') - netatalk_restart - ;; +atalk_shutdown +atalk_startup + ;; +# +# Usage statement. +# + *) - netatalk_start + echo "usage: $0 {start|stop|restart}" + exit 1 + ;; esac - |