added few comments
[idzebra-moved-to-github.git] / debian / idzebra1.4-common.init
1 #! /bin/sh
2 # $Id: idzebra1.4-common.init,v 1.1 2004-10-18 13:29:25 marc Exp $
3 # Start and stop toolkit lite administered idzebra script for Debian.
4 # change runlevels using update-rc.d 
5
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
10
11 # Now sourced from /etc/default/zebra 
12 ZEBRA_USER=zebra
13 ZEBRA_GROUP=zebra
14
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
19
20 ZEBRA_DIRS="/home/marc/projects/alvis"
21 ZEBRA_INDEX_DIRS="data"
22
23 # set socket connection method
24 #ZEBRA_SOCKET="tcp:@:210"
25 ZEBRA_SOCKET="unix:db/socket"
26
27
28 # define display message 
29 display_ZEBRA_message(){
30     echo "Usage:"
31     echo "  As root:"
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] ]"
36 }
37
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";
43     exit 1;
44 fi
45
46
47 # perform usual init.d daemon services
48 case "$1" in
49   start)
50         # make sure we are root
51         if [ `whoami` != root ]; then
52             display_ZEBRA_message ;
53             echo "  Error: you are not root";
54             exit 1;
55         fi
56
57         # read zebra dir from command line
58         if [ $2 ] ; then
59             ZEBRA_DIRS=$2
60         fi
61
62         # loop through all entries defined in /etc/zebra.conf
63         for d in $ZEBRA_DIRS; do
64             echo -n "Starting zebra: "
65             echo -n "$d " ;
66
67             if [ ! -f $d/db/zebra.cfg ] ; then
68                 echo "";
69                 echo "  Error: config file $d/db/zebra.cfg not found";
70                 continue;
71             fi
72
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 ;
75
76                 # check for running zebra not performed
77                 #sleep 1
78                 #if  [ -f $d/db/lock/zebrasrv.pid ] ; then
79                 #    echo -n "started "
80                     #cat $d/db/lock/zebrasrv.pid
81                 #    echo -n " "
82                 #else
83                 #    echo -n "error "
84                 #fi
85             else
86                 echo -n "already running "
87             fi
88             echo 
89         done
90         #ps -C zebrasrv | grep `cat $d/db/lock/zebrasrv.pid`
91         ;;
92
93   stop)
94         # make sure we are root
95         if [ `whoami` != root ]; then
96             display_ZEBRA_message ;
97             echo "  Error: you are not root";
98             exit 1;
99         fi
100         
101         # read zebra dir from command line
102         if [ $2 ] ; then
103             ZEBRA_DIRS=$2
104         fi
105
106         # loop through all entries defined in /etc/zebra.conf
107         for d in $ZEBRA_DIRS; do
108             echo -n "Stopping zebra: "
109             echo -n "$d " ;
110
111             if [ ! -f $d/db/zebra.cfg ] ; then
112                 echo "";
113                 echo "  Error: config file $d/db/zebra.cfg not found";
114                 continue;
115             fi
116
117             if  [ -f $d/db/lock/zebrasrv.pid ] ; then
118             start-stop-daemon --stop --quiet --oknodo --pidfile $d/db/lock/zebrasrv.pid ;
119                 #sleep 1
120                 #if  ps -C zebrasrv | grep `cat $d/db/lock/zebrasrv.pid`  ; then
121                 #    kill -9 `cat $d/db/lock/zebrasrv.pid`
122                 #    echo -n "-9 "
123                 #fi
124                 #if   [ -f $d/db/lock/zebrasrv.pid ] && ps -C zebrasrv | grep `cat $d/db/lock/zebrasrv.pid`  ; then
125                 #    echo -n "error "
126                 #else 
127                 #    echo -n "stopped "
128                 #fi
129                 #if  [ -f $d/db/lock/zebrasrv.pid ] ; then
130                     #rm  -f $d/db/lock/zebrasrv.pid
131                     #echo -n "removed  PID file"
132                 #fi
133             else
134                 echo -n "already dead "
135             fi
136             echo 
137         done
138         #ps -C zebrasrv | grep `cat $d/db/lock/zebrasrv.pid`
139         ;;
140
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";
146             exit 1;
147         fi
148         
149         $0 stop $2
150         #sleep 1
151         $0 start $2
152         ;;
153
154   reindex|index)
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
158             exit 0
159         fi
160
161         # read zebra dir from command line
162         if [ $2 ] ; then
163             ZEBRA_DIRS=$2
164         fi
165
166         for d in $ZEBRA_DIRS; do
167             # allow all scripts to be called with one specific entrie 
168             # directory as third argument
169
170             if [ ! -f $d/db/zebra.cfg ] ; then
171                 echo -n "Indexing zebra: "
172                 echo "$d "               
173                 echo "  Error: config file $d/db/zebra.cfg not found";
174                 continue;
175             fi
176
177             if [ $3 ] ; then
178                 # only indexing one additionally directory
179                 ZEBRA_INDEX_DIRS=$3;
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";
185                     exit 1;
186                 fi
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";
191                     exit 1;
192                 fi
193                     
194                 echo -n "Indexing zebra: "
195                 echo -n "$d "
196                
197                 (cd $d ;
198                     # initalization and commiting db to get a fresh slate
199                     for DIR in $ZEBRA_INDEX_DIRS ; do
200                         echo -n "$DIR "
201                         zebraidx -L -l db/index.log -c db/zebra.cfg update $DIR ;
202                     done
203                     zebraidx -l db/index.log -c db/zebra.cfg commit ;
204                 )
205                 echo 
206             else
207                 # indexing a whole entrie - findZEBRA_INDEX_DIRD makes the work
208                 # findZEBRA_INDEX_DIRS "$d" ;
209                 echo -n "Indexing zebra: "
210                 echo -n "$d "
211                 (cd $d ;
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
215                         echo -n "$DIR "
216                         zebraidx -L -l db/index.log -c db/zebra.cfg update $DIR ;
217                     done
218                     zebraidx -l db/index.log -c db/zebra.cfg commit ;
219                 )
220                 echo 
221             fi
222         done
223         ;;
224
225   *)
226         display_ZEBRA_message ;
227         exit 1;
228 esac
229
230 exit 0
231
232