1#! /bin/sh
2#
3# sqlrelay   This starts and stops SQL Relay.
4#
5# chkconfig: 345 85 15
6# description: SQL Relay
7#
8### BEGIN INIT INFO
9# Provides:		sqlrelay
10# Required-Start:	$local_fs $remote_fs $network $time
11# Required-Stop:	$local_fs $remote_fs $network $time
12# Should-Start:		$syslog
13# Should-Stop:		$syslog
14# Default-Start:	2 3 4 5
15# Default-Stop:		0 1 6
16# Short-Description:	SQL Relay
17### END INIT INFO
18#
19# PROVIDE: sqlrelay
20# REQUIRE: NETWORKING
21
22
23# define default message functions
24success() {
25    printf success
26}
27failure() {
28    printf failure
29}
30passed() {
31    printf passed
32}
33
34
35# override them with fancier ones if available
36if ( test -r "/etc/init.d/functions" )
37then
38    . /etc/init.d/functions
39else
40    if ( test -r "/etc/rc.d/init.d/functions" )
41    then
42        . /etc/rc.d/init.d/functions
43    fi
44fi
45
46
47# for BSD-ish systems, bail if sqlrelay isn't enabled in /etc/rc.conf
48BSD="no"
49PRINTACTION="yes"
50if ( test -r "/etc/rc.conf" )
51then
52
53    BSD="yes"
54
55    # load subroutines to process /etc/rc.conf
56    . /etc/rc.conf
57
58    UNAME=`uname`
59    if ( test "$UNAME" = "OpenBSD" )
60    then
61
62	PRINTACTION="no"
63
64        # on OpenBSD sqlrelay_flags=NO disables
65        if ( test "${sqlrelay_flags}" = "NO" -o \
66                    "${sqlrelay_flags}" = "No" -o \
67                    "${sqlrelay_flags}" = "no" )
68        then
69            exit 0
70        fi
71
72    elif ( test "$UNAME" = "FreeBSD" )
73    then
74
75        # on FreeBSD sqlrelay_enable=YES enables
76        if ( test "${sqlrelay_enable}" != "YES" -a \
77                    "${sqlrelay_enable}" != "Yes" -a \
78                    "${sqlrelay_enable}" != "yes" )
79        then
80            exit 0
81        fi
82
83    else
84
85        # on NetBSD and Minix (and others) sqlrelay=YES enables
86        if ( test "${sqlrelay}" != "YES" -a \
87                    "${sqlrelay}" != "Yes" -a \
88                    "${sqlrelay}" != "yes" )
89        then
90            exit 0
91        fi
92    fi
93fi
94
95
96# define paths
97prefix=@prefix@
98sysconfdir=@sysconfdir@
99localstatedir=@localstatedir@
100tmpdir=${localstatedir}/sqlrelay/tmp
101
102
103# define lock directory
104lockdir=/tmp
105if ( test -w "/var/lock/subsys" )
106then
107    lockdir=/var/lock/subsys
108elif ( test -w "/var/lock" )
109then
110    lockdir=/var/lock
111fi
112
113
114# Add appropriate bin/lib paths
115if ( test "${prefix}" != "/usr" )
116then
117    PATH=$PATH:${prefix}/bin
118    export PATH
119    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${prefix}/lib
120    export LD_LIBRARY_PATH
121fi
122
123
124# initialize return value
125RETVAL=0
126
127
128cleanup() {
129    for i in `ls ${tmpdir}/pids/* 2>/dev/null`
130    do
131        if ( test -r "$i" )
132        then
133            PID=`cat $i`
134            if ( test -z "`ps -p $PID 2> /dev/null | grep sqlr-`" )
135            then
136                echo "$PID is not sqlr! removing pidfile ..."
137                rm -f $i
138            fi
139        fi
140    done
141}
142
143start_sqlrelay() {
144
145    # print Starting if necessary
146    if ( test "$BSD" = "yes" -a "$PRINTACTION" = "yes" )
147    then
148        printf "Starting"
149    fi
150
151    # on BSD, print:
152    # sqlrelay
153    #
154    # on non-BSD, print:
155    # Starting sqlrelay: success
156    if ( test "$BSD" = "yes" )
157    then
158        printf " sqlrelay"
159    fi
160
161    sqlr-start 0<&- 1>&- 2>&-
162    RETVAL=$?
163    if ( test "$BSD" != "yes" )
164    then
165        printf "Starting sqlrelay: "
166        if ( test $RETVAL -eq 0 )
167        then
168            success
169        else
170            failure
171        fi
172        echo
173    fi
174
175    if ( test "$BSD" = "yes" )
176    then
177        if ( test "$PRINTACTION" = "yes" )
178        then
179            echo "."
180        fi
181    fi
182
183    if ( test $RETVAL -eq 0 )
184    then
185        touch ${lockdir}/sqlrelay
186    fi
187
188    cleanup
189
190    return $RETVAL
191}
192
193stop_sqlrelay() {
194
195    # print Stopping if necessary
196    if ( test "$BSD" = "yes" -a "$PRINTACTION" = "yes" )
197    then
198        printf "Stopping"
199    fi
200
201    # on BSD, print:
202    # sqlrelay
203    #
204    # on non-BSD, print:
205    # Stopping sqlrelay: success
206    if ( test "$BSD" = "yes" )
207    then
208        printf " sqlrelay ("
209    fi
210
211    sqlr-stop 0<&- 1>&- 2>&-
212    RETVAL=$?
213    if ( test "$BSD" != "yes" )
214    then
215        printf "Stopping sqlrelay: "
216        if ( test $RETVAL -eq 0 )
217        then
218            success
219        else
220            failure
221        fi
222        echo
223    fi
224
225    if ( test "$BSD" = "yes" )
226    then
227        if ( test "$PRINTACTION" = "yes" )
228        then
229            echo "."
230       fi
231    fi
232
233    if ( test $RETVAL -eq 0 )
234    then
235        rm -f ${lockdir}/sqlrelay
236    fi
237
238    cleanup
239
240    return $RETVAL
241}
242
243restart_sqlrelay() {
244    stop_sqlrelay
245    start_sqlrelay
246}
247
248condrestart_sqlrelay() {
249    if ( test -r "${lockdir}/sqlrelay" )
250    then
251        restart_sqlrelay
252    fi
253    return 0
254}
255
256
257# See how we were called.
258case "$1" in
259    start)
260        start_sqlrelay
261        ;;
262    stop)
263        stop_sqlrelay
264        ;;
265    restart)
266        restart_sqlrelay
267        ;;
268    reload)
269        restart_sqlrelay
270        ;;
271    condrestart)
272        condrestart_sqlrelay
273        ;;
274    *)
275        if ( test -r "/etc/rc.subr" -o -r "/etc/rc.d/rc.subr" )
276        then
277            # on BSD systems assume start
278            start_sqlrelay
279        else
280            # on others, print usage
281            echo "Usage: sqlrelay {start|stop|restart|condrestart}"
282            RETVAL=1
283        fi
284esac
285
286exit $RETVAL
287