2 # $Id: idzebra-2.0-common.init,v 1.1 2006-06-29 11:20:39 marc Exp $
3 # Start and stop toolkit lite administered idzebra script for Debian.
4 # change runlevels using update-rc.d
6 test -x /usr/bin/zebrasrv || exit 0
7 test -x /usr/bin/zebraidx || exit 0
8 test -f /etc/default/zebra || exit 0
9 source /etc/default/zebra
11 # Now sourced from /etc/default/zebra
15 #ZEBRA_CONF_FILE=/etc/zebra.conf
16 #ZEBRA_LOG_DIR=/var/log/zebra
17 #ZEBRA_PID_DIR=/var/run/zebra
18 #ZEBRA_TMP_DIR=/var/tmp/zebra
20 ZEBRA_DIRS="/home/marc/projects/alvis"
21 ZEBRA_INDEX_DIRS="data"
23 # set socket connection method
24 #ZEBRA_SOCKET="tcp:@:210"
25 ZEBRA_SOCKET="unix:db/socket"
28 # define display message
29 display_ZEBRA_message(){
32 echo -n " /etc/init.d/zebra {start|stop|reload|force-reload|restart}"
33 echo " [/path/to/root/dir]"
34 echo " As root or $ZEBRA_USER:"
35 echo " /etc/init.d/zebra {index|reindex} [/path/to/root/dir [sub/dir] ]"
38 # make sure we are root or $ZEBRA_USER
39 ZEBRA_CURR_USER=`whoami`;
40 if [ $ZEBRA_CURR_USER != $ZEBRA_USER -a $ZEBRA_CURR_USER != "root" ] ; then
41 display_ZEBRA_message ;
42 echo " Error: you are not root or $ZEBRA_USER";
47 # perform usual init.d daemon services
50 # make sure we are root
51 if [ `whoami` != root ]; then
52 display_ZEBRA_message ;
53 echo " Error: you are not root";
57 # read zebra dir from command line
62 # loop through all entries defined in /etc/zebra.conf
63 for d in $ZEBRA_DIRS; do
64 echo -n "Starting zebra: "
67 if [ ! -f $d/db/zebra.cfg ] ; then
69 echo " Error: config file $d/db/zebra.cfg not found";
73 if [ ! -f $d/db/lock/zebrasrv.pid ] ; then
74 start-stop-daemon --start --quiet --background --pidfile $d/db/lock/zebrasrv.pid --exec /usr/bin/zebrasrv -- -w $d -u $ZEBRA_USER -c db/zebra.cfg -l db/server.log $ZEBRA_SOCKET ;
76 # check for running zebra not performed
78 #if [ -f $d/db/lock/zebrasrv.pid ] ; then
80 #cat $d/db/lock/zebrasrv.pid
86 echo -n "already running "
90 #ps -C zebrasrv | grep `cat $d/db/lock/zebrasrv.pid`
94 # make sure we are root
95 if [ `whoami` != root ]; then
96 display_ZEBRA_message ;
97 echo " Error: you are not root";
101 # read zebra dir from command line
106 # loop through all entries defined in /etc/zebra.conf
107 for d in $ZEBRA_DIRS; do
108 echo -n "Stopping zebra: "
111 if [ ! -f $d/db/zebra.cfg ] ; then
113 echo " Error: config file $d/db/zebra.cfg not found";
117 if [ -f $d/db/lock/zebrasrv.pid ] ; then
118 start-stop-daemon --stop --quiet --oknodo --pidfile $d/db/lock/zebrasrv.pid ;
120 #if ps -C zebrasrv | grep `cat $d/db/lock/zebrasrv.pid` ; then
121 # kill -9 `cat $d/db/lock/zebrasrv.pid`
124 #if [ -f $d/db/lock/zebrasrv.pid ] && ps -C zebrasrv | grep `cat $d/db/lock/zebrasrv.pid` ; then
129 #if [ -f $d/db/lock/zebrasrv.pid ] ; then
130 #rm -f $d/db/lock/zebrasrv.pid
131 #echo -n "removed PID file"
134 echo -n "already dead "
138 #ps -C zebrasrv | grep `cat $d/db/lock/zebrasrv.pid`
141 restart|reload|force-reload)
142 # make sure we are root
143 if [ `whoami` != root ]; then
144 display_ZEBRA_message ;
145 echo " Error: you are not root";
155 # make sure that indexing is done as user $ZEBRA_USER
156 if test `whoami` != $ZEBRA_USER; then
157 su -s /bin/sh -c "$0 $*" $ZEBRA_USER
161 # read zebra dir from command line
166 for d in $ZEBRA_DIRS; do
167 # allow all scripts to be called with one specific entrie
168 # directory as third argument
170 if [ ! -f $d/db/zebra.cfg ] ; then
171 echo -n "Indexing zebra: "
173 echo " Error: config file $d/db/zebra.cfg not found";
178 # only indexing one additionally directory
180 if [ ! -d $d/$ZEBRA_INDEX_DIRS ] ; then
181 #$0 ; # trigger user info
182 echo " Error: there is no directory $3";
183 echo " in zebra dir $d";
184 echo " Can not index $d/$ZEBRA_INDEX_DIRS";
187 if ( echo $ZEBRA_INDEX_DIRS | grep "^/" ) ; then
188 #$0 ; # trigger user info
189 echo " Error: third argument $3";
190 echo " must not contain leading slash";
194 echo -n "Indexing zebra: "
198 # initalization and commiting db to get a fresh slate
199 for DIR in $ZEBRA_INDEX_DIRS ; do
201 zebraidx -L -l db/index.log -c db/zebra.cfg update $DIR ;
203 zebraidx -l db/index.log -c db/zebra.cfg commit ;
207 # indexing a whole entrie - findZEBRA_INDEX_DIRD makes the work
208 # findZEBRA_INDEX_DIRS "$d" ;
209 echo -n "Indexing zebra: "
212 # initalization and commiting db to get a fresh slate
213 zebraidx -l db/index.log -c db/zebra.cfg init ;
214 for DIR in $ZEBRA_INDEX_DIRS ; do
216 zebraidx -L -l db/index.log -c db/zebra.cfg update $DIR ;
218 zebraidx -l db/index.log -c db/zebra.cfg commit ;
226 display_ZEBRA_message ;