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