~ubuntu-branches/ubuntu/trusty/syslog-ng/trusty-proposed

« back to all changes in this revision

Viewing changes to contrib/balabit-initscripts/init.d

  • Committer: Bazaar Package Importer
  • Author(s): Laszlo Boszormenyi (GCS)
  • Date: 2010-03-14 12:57:49 UTC
  • mfrom: (1.3.1 upstream) (12.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20100314125749-m3ats648sp2urg0f
Tags: 3.0.5-1
New upstream release, new maintainer.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
 
 
3
# syslog-ng     This starts and stops syslog-ng
 
4
#
 
5
# chkconfig:    - 12 88
 
6
# processname: /opt/syslog-ng/sbin/syslog-ng
 
7
# config:      /opt/syslog-ng/etc/syslog-ng.conf
 
8
# config:      /etc/sysconfig/syslog-ng
 
9
# pidfile:     /var/run/syslog-ng.pid
 
10
 
 
11
### BEGIN INIT INFO
 
12
# Provides: syslog
 
13
# Description: reads and logs messages to the system console, log \
 
14
#              files, other machines and/or users as specified by \
 
15
#              its configuration file.
 
16
# Short-Description: Next-generation syslog server. Proprietary edition.
 
17
# Required-Start: $local_fs
 
18
# Required-Stop:  $local_fs
 
19
# Default-Start:  2 3 4 5
 
20
# Default-Stop: 0 1 6
 
21
### END INIT INFO
 
22
 
 
23
OS=`uname -s`
 
24
SYSLOGNG_PREFIX=/opt/syslog-ng
 
25
SYSLOGNG="$SYSLOGNG_PREFIX/sbin/syslog-ng"
 
26
CONFFILE=$SYSLOGNG_PREFIX/etc/syslog-ng.conf
 
27
PIDFILE=$SYSLOGNG_PREFIX/var/run/syslog-ng.pid
 
28
SYSLOGPIDFILE="/var/run/syslog.pid"
 
29
 
 
30
SLNG_INIT_FUNCTIONS=$SYSLOGNG_PREFIX/lib/init-functions
 
31
MAXWAIT=30
 
32
 
 
33
# for RedHat...
 
34
SUBSYSDIR=/var/lock/subsys
 
35
 
 
36
retval=0
 
37
 
 
38
# OS specific I-didn't-do-anything exit function.
 
39
exit_noop() {
 
40
        case $OS in
 
41
                HP-UX) exit 2
 
42
                        ;;
 
43
                *)     exit 0
 
44
                        ;;
 
45
        esac
 
46
}
 
47
 
 
48
# Platform specific echo -n implementation.
 
49
echo_n() {
 
50
        case "$OS" in
 
51
                SunOS) echo "$@\c " 
 
52
                        ;;
 
53
                HP-UX) echo "  $@\c " 
 
54
                        ;;
 
55
                *)     echo -n "$@"
 
56
                        ;;
 
57
                esac
 
58
}
 
59
 
 
60
test -x ${SYSLOGNG} || exit_noop
 
61
test -r ${CONFFILE} || exit_noop
 
62
 
 
63
if [ -f /etc/lsb-release ]; then
 
64
        . /etc/lsb-release
 
65
fi
 
66
 
 
67
if [ -f "/etc/redhat-release" ];then
 
68
        # redhat uses a different syslogd pidfile...
 
69
        SYSLOGPIDFILE="/var/run/syslogd.pid"
 
70
fi
 
71
 
 
72
if [ "$OS" = "SunOS" ] || [ "$OS" = "Solaris" ];then
 
73
        if [ "`uname -r`" = "5.8" ];then
 
74
                SYSLOGPIDFILE="/etc/syslog.pid"
 
75
        fi
 
76
fi
 
77
 
 
78
. $SLNG_INIT_FUNCTIONS
 
79
 
 
80
case "$OS" in
 
81
        Linux)
 
82
                SYSLOGNG_OPTIONS="--no-caps"
 
83
                ;;
 
84
esac
 
85
 
 
86
#we source /etc/default/syslog-ng if exists
 
87
[ -r /etc/default/syslog-ng ] && . /etc/default/syslog-ng
 
88
 
 
89
# Source config on RPM systems
 
90
[ -r /etc/sysconfig/syslog-ng ] && . /etc/sysconfig/syslog-ng
 
91
 
 
92
#we source /etc/default/syslog-ng if exists
 
93
[ -r $SYSLOGNG_PREFIX/etc/default/syslog-ng ] && \
 
94
        . $SYSLOGNG_PREFIX/etc/default/syslog-ng
 
95
 
 
96
create_xconsole() {
 
97
        if grep -v '^#' $CONFFILE | grep /dev/xconsole >/dev/null 2>&1; then
 
98
                if [ ! -e /dev/xconsole ]; then
 
99
                        mknod -m 640 /dev/xconsole p
 
100
                fi
 
101
        fi
 
102
}
 
103
 
 
104
check_syntax() {
 
105
        ${SYSLOGNG} --syntax-only
 
106
        _rval=$?
 
107
        [ $_rval -eq 0 ] || exit $_rval
 
108
}
 
109
 
 
110
slng_waitforpid() {
 
111
        _pid=$1
 
112
        _process=$2
 
113
        _cnt=$MAXWAIT
 
114
 
 
115
        # no pid, return...
 
116
        [ -z "$_pid" ] && return 0
 
117
 
 
118
        _procname=`basename $_process`
 
119
 
 
120
        while [ $_cnt -gt 0 ]; do
 
121
                _numproc=`ps -p $_pid $PSOPTS | grep $_procname | wc -l`
 
122
                if [ $_numproc -eq 0 ]; then
 
123
                        return 0
 
124
                fi
 
125
                _cnt=`expr $_cnt - 1`
 
126
                sleep 1
 
127
        done
 
128
        return 1
 
129
}
 
130
 
 
131
returnmessage() {
 
132
        _rval=$1
 
133
        is_debian=0
 
134
        case "$OS" in
 
135
            Linux)
 
136
               res=`cat /etc/issue | grep Debian`
 
137
               is_debian=$?
 
138
            ;;
 
139
        esac
 
140
        if [ $_rval -ne 0 ];then
 
141
                if [ $is_debian -eq 0 ];then
 
142
                        log_failure_msg "failed"
 
143
                else
 
144
                        log_failure_msg
 
145
                fi
 
146
        else
 
147
                if [ $is_debian -eq 0 ];then
 
148
                        log_success_msg "OK"
 
149
                else
 
150
                        log_success_msg
 
151
                fi
 
152
        fi
 
153
}
 
154
 
 
155
syslogng_start() {
 
156
        echo_n "Starting syslog-ng: "
 
157
        PID=`pidofproc -p ${PIDFILE} ${SYSLOGNG} | head -1`
 
158
        if [ -n "$PID" ] && [ $PID -gt 0 ] ;then
 
159
                log_success_msg "already running: $PID"
 
160
                return $retval
 
161
        fi
 
162
        start_daemon -f -p ${PIDFILE} ${SYSLOGNG} ${SYSLOGNG_OPTIONS}
 
163
        retval=$?
 
164
        returnmessage $retval
 
165
        if [ $retval -eq 0 ];then
 
166
                if [ "$OS" = "Linux" ] && [ -d $SUBSYSDIR ];then
 
167
                        touch $SUBSYSDIR/syslog-ng
 
168
                fi
 
169
                # remove symlinks
 
170
                if [ -h $SYSLOGPIDFILE ];then
 
171
                        rm -f $SYSLOGPIDFILE
 
172
                fi
 
173
                if [ ! -f $SYSLOGPIDFILE ];then
 
174
                        ln -s $PIDFILE $SYSLOGPIDFILE
 
175
                fi
 
176
        fi
 
177
        return $retval
 
178
}
 
179
 
 
180
# Can't name the function stop, because HP-UX has a default alias named stop...
 
181
syslogng_stop() {
 
182
        echo_n "Stopping syslog-ng: "
 
183
        PID=`pidofproc -p ${PIDFILE} ${SYSLOGNG} | head -1`
 
184
        retval=$?
 
185
        if [ $retval -ne 0 ] || [ -z "$PID" ];then
 
186
                return $retval
 
187
        fi
 
188
        killproc -p ${PIDFILE} ${SYSLOGNG}
 
189
        retval=$?
 
190
        if [ $retval -eq 0 ];then
 
191
                slng_waitforpid "$PID" ${SYSLOGNG}
 
192
                if [ $? -ne 0 ]; then
 
193
                        retval=$?
 
194
                        log_failure_msg " Timeout"
 
195
                        killproc -p ${PIDFILE} ${SYSLOGNG} -KILL
 
196
                else
 
197
                        returnmessage $retval
 
198
                fi
 
199
        fi
 
200
        if [ $retval -eq 0 ];then
 
201
                rm -f $SUBSYSDIR/syslog-ng ${PIDFILE}
 
202
                if [ -h $SYSLOGPIDFILE ];then
 
203
                        rm -f $SYSLOGPIDFILE
 
204
                fi
 
205
        fi
 
206
        return $retval
 
207
}
 
208
 
 
209
syslogng_restart() {
 
210
        check_syntax
 
211
        echo_n "Restarting syslog-ng: "
 
212
        syslogng_stop
 
213
        syslogng_start
 
214
        return $retval
 
215
}
 
216
 
 
217
syslogng_reload() {
 
218
        echo_n "Reloading syslog-ng's config file: "
 
219
        check_syntax 
 
220
        killproc -p ${PIDFILE} ${SYSLOGNG} -HUP
 
221
        retval=$?
 
222
        returnmessage $retval
 
223
        return $retval
 
224
}
 
225
 
 
226
syslogng_status() {
 
227
        echo_n "Checking for syslog-ng service: "
 
228
        pid=`pidofproc -p ${PIDFILE} ${SYSLOGNG}`
 
229
        retval=$?
 
230
        if [ $retval -ne 0 ];then
 
231
                msg=
 
232
                case $retval in
 
233
                        1) msg="dead but pidfile exists." ;;
 
234
                        *) msg="stopped" ;;
 
235
                esac
 
236
                log_failure_msg "$msg"
 
237
        else
 
238
                log_success_msg "$pid running"
 
239
        fi
 
240
        return $retval
 
241
}       
 
242
 
 
243
syslogng_probe() {
 
244
        if [ ${CONFFILE} -nt ${PIDFILE} ]; then
 
245
                echo reload
 
246
        fi
 
247
}
 
248
 
 
249
case $OS in
 
250
        Linux)
 
251
                case "x$CONSOLE_LOG_LEVEL" in
 
252
                        x[1-8])
 
253
                                dmesg -n $CONSOLE_LOG_LEVEL
 
254
                                ;;
 
255
                        x)
 
256
                                ;;
 
257
                        *)
 
258
                                echo "CONSOLE_LOG_LEVEL is of unaccepted value."
 
259
                                ;;
 
260
                esac
 
261
                create_xconsole
 
262
                ;;
 
263
        SunOS)
 
264
                        #
 
265
                        # Before syslog-ng starts, save any messages from previous
 
266
                        # crash dumps so that messages appear in chronological order.
 
267
                        #
 
268
                        /usr/bin/savecore -m
 
269
                        if [ -r /etc/dumpadm.conf ]; then
 
270
                                . /etc/dumpadm.conf
 
271
                                [ "x$DUMPADM_DEVICE" != xswap ] && \
 
272
                                    /usr/bin/savecore -m -f $DUMPADM_DEVICE
 
273
                        fi
 
274
                ;;
 
275
        HP-UX)
 
276
                # /etc/default/syslog-ng, the HP-UX way.
 
277
                [ -r /etc/rc.config.d/syslog-ng ] && . /etc/rc.config.d/syslog-ng
 
278
                ;;
 
279
esac
 
280
 
 
281
 
 
282
case "$1" in
 
283
        start_msg)
 
284
                echo "Start syslog-ng system message logging daemon"
 
285
                ;;
 
286
        stop_msg)
 
287
                echo "Stop syslog-ng system message logging daemon"
 
288
                ;;
 
289
        start|stop|restart|reload|probe)
 
290
                syslogng_$1
 
291
                ;;
 
292
        force-reload)
 
293
                syslogng_restart
 
294
                ;;
 
295
        reload-or-restart)
 
296
                PID=`pidofproc -p ${PIDFILE} ${SYSLOGNG} | head -1`
 
297
                if [ -n "$PID" ] && [ $PID -gt 0 ] ;then
 
298
                        syslogng_reload
 
299
                else
 
300
                        syslogng_start
 
301
                fi
 
302
                ;;
 
303
        status)
 
304
                syslogng_status 
 
305
                ;;
 
306
        condrestart|try-restart)
 
307
                [ ! -f $lockfile ] || syslogng_restart
 
308
                ;;
 
309
        *)
 
310
                echo "Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload|probe}"
 
311
                exit 2
 
312
                ;;
 
313
esac
 
314
 
 
315
exit $retval
 
316
 
 
317
# vim: ts=2 ft=sh noexpandtab