View | Details | Raw Unified | Return to bug 17467
Collapse All | Expand All

(-)a/debian/scripts/koha-zebra (-1 / +252 lines)
Line 0 Link Here
0
- 
1
#!/bin/bash
2
3
# koha-zebra - Manage Zebra daemons for Koha instances
4
#              Copyright 2016 Theke Solutions
5
#              Copyright 2010 Catalyst IT, Ltd
6
#
7
# This program is free software: you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License as published by
9
# the Free Software Foundation, either version 3 of the License, or
10
# (at your option) any later version.
11
#
12
# This program is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20
set -e
21
22
. /lib/lsb/init-functions
23
24
# Read configuration variable file if it is present
25
[ -r /etc/default/koha-common ] && . /etc/default/koha-common
26
27
# include helper functions
28
if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then
29
    . "/usr/share/koha/bin/koha-functions.sh"
30
else
31
    echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2
32
    exit 1
33
fi
34
35
usage()
36
{
37
    local scriptname=$(basename $0)
38
39
    cat <<EOF
40
$scriptname
41
42
This script lets you manage the Zebra daemon for your Koha instances.
43
44
Usage:
45
$scriptname [--start|--stop|--restart] instancename1 [instancename2...]
46
$scriptname -h|--help
47
48
    --start               Start the Zebra daemon for the specified instance(s)
49
    --stop                Stop the Zebra daemon for the specified instance(s)
50
    --restart             Restart the Zebra daemon for the specified instance(s)
51
    --status              Show the status of the Zebra daemon for the specified instance(s)
52
    --verbose|-v          Display progress and actions messages
53
    --help|-h             Display this help message
54
55
EOF
56
}
57
58
start_zebra()
59
{
60
    local name=$1
61
62
    # get zebra log levels from koha-conf.xml
63
    local loglevels=$(get_loglevels ${name})
64
65
    if ! is_zebra_running $name; then
66
67
        _check_and_fix_perms ${name}
68
69
        DAEMONOPTS="--name=${name}-koha-zebra \
70
                    --pidfiles=/var/run/koha/${name}/ \
71
                    --errlog=/var/log/koha/${name}/zebra-error.log \
72
                    --output=/var/log/koha/${name}/zebra-output.log \
73
                    --verbose=1 \
74
                    --respawn \
75
                    --delay=30 \
76
                    --user=${name}-koha.${name}-koha"
77
78
        ZEBRA_PARAMS="-v $loglevels \
79
                      -f /etc/koha/sites/${name}/koha-conf.xml"
80
81
        [ "$verbose" != "no" ] && \
82
            log_daemon_msg "Starting Koha Zebra daemon for ${name}"
83
84
        if daemon $DAEMONOPTS -- $ZEBRA_DAEMON $ZEBRA_PARAMS; then
85
            [ "$verbose" != "no" ] && \
86
                log_end_msg 0
87
        else
88
            [ "$verbose" != "no" ] && \
89
                log_end_msg 1
90
        fi
91
    else
92
        if [ "$verbose" != "no" ]; then
93
            log_daemon_msg "Error: Zebra already running for ${name}"
94
            log_end_msg 1
95
        fi
96
    fi
97
}
98
99
stop_zebra()
100
{
101
    local name=$1
102
103
    if is_zebra_running $name; then
104
105
        DAEMONOPTS="--name=${name}-koha-zebra \
106
                    --pidfiles=/var/run/koha/${name}/ \
107
                    --errlog=/var/log/koha/${name}/zebra-error.log \
108
                    --output=/var/log/koha/${name}/zebra-output.log \
109
                    --verbose=1 \
110
                    --respawn \
111
                    --delay=30 \
112
                    --user=${name}-koha.${name}-koha"
113
114
        [ "$verbose" != "no" ] && \
115
            log_daemon_msg "Stopping Koha Zebra daemon for ${name}"
116
117
        if daemon $DAEMONOPTS --stop -- $ZEBRA_DAEMON $ZEBRA_PARAMS; then
118
            [ "$verbose" != "no" ] && \
119
                log_end_msg 0
120
        else
121
            [ "$verbose" != "no" ] && \
122
                log_end_msg 1
123
        fi
124
    else
125
        if [ "$verbose" != "no" ]; then
126
            log_daemon_msg "Error: Zebra not running for ${name}"
127
            log_end_msg 1
128
        fi
129
    fi
130
}
131
132
restart_zebra()
133
{
134
    local name=$1
135
136
    if is_zebra_running ${name}; then
137
138
        stop_zebra ${name} && \
139
        start_zebra ${name}
140
    else
141
        if [ "$verbose" != "no" ]; then
142
            log_daemon_msg "Error: Zebra not running for ${name}"
143
            log_end_msg 1
144
        fi
145
    fi
146
}
147
148
zebra_status()
149
{
150
    local name=$1
151
152
    if is_zebra_running; then
153
        log_daemon_msg "Zebra running for ${name}"
154
        log_end_msg 0
155
    else
156
        log_daemon_msg "Zebra not running for ${name}"
157
        log_end_msg 3
158
    fi
159
}
160
161
_check_and_fix_perms()
162
{
163
    local name=$1
164
165
    local files="/var/log/koha/${name}/zebra-output.log \
166
                 /var/log/koha/${name}/zebra-error.log"
167
168
    for file in ${files}
169
    do
170
        if [ ! -e "${file}" ]; then
171
            touch ${file}
172
        fi
173
        chown "${name}-koha":"${name}-koha" ${file}
174
    done
175
}
176
177
set_action()
178
{
179
    if [ "$op" = "" ]; then
180
        op=$1
181
    else
182
        die "Error: only one action can be specified."
183
    fi
184
}
185
186
op=""
187
verbose="no"
188
189
# Read command line parameters
190
while [ $# -gt 0 ]; do
191
192
    case "$1" in
193
        -h|--help)
194
            usage ; exit 0 ;;
195
        -v|--verbose)
196
            verbose="yes"
197
            shift ;;
198
        --start)
199
            set_action "start"
200
            shift ;;
201
        --stop)
202
            set_action "stop"
203
            shift ;;
204
        --restart)
205
            set_action "restart"
206
            shift ;;
207
        -*)
208
            die "Error: invalid option switch ($1)" ;;
209
        *)
210
            # We expect the remaining stuff are the instance names
211
            break ;;
212
    esac
213
214
done
215
216
ZEBRA_DAEMON=$(which zebrasrv)
217
218
if [ $# -gt 0 ]; then
219
    # We have at least one instance name
220
    for name in "$@"; do
221
222
        if is_instance $name; then
223
224
            case $op in
225
                "start")
226
                    start_zebra $name
227
                    ;;
228
                "stop")
229
                    stop_zebra $name
230
                    ;;
231
                "restart")
232
                    restart_zebra $name
233
                    ;;
234
                "status")
235
                    zebra_status $name
236
            esac
237
238
        else
239
            if [ "$verbose" != "no" ]; then
240
                log_daemon_msg "Error: Invalid instance name $name"
241
                log_end_msg 1
242
            fi
243
        fi
244
245
    done
246
else
247
    if [ "$verbose" != "no" ]; then
248
        warn "Error: you must provide at least one instance name"
249
    fi
250
fi
251
252
exit 0

Return to bug 17467