Bug 10104 - make koha-disable more robust
[koha.git] / debian / scripts / koha-disable
1 #!/bin/sh
2 #
3 # koha-disable -- disable Koha instances.
4 # Copyright 2010  Catalyst IT, Ltd
5
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19
20 set -e
21
22
23 die()
24 {
25     echo "$@" 1>&2
26     exit 1
27 }
28
29 warn()
30 {
31     echo "$@" 1>&2
32 }
33
34 is_enabled()
35 {
36     local instancename=$1
37
38     if ! is_instance $instancename; then
39         return 1
40     fi
41
42     if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
43             "/etc/apache2/sites-available/$instancename" ; then
44         return 1
45     else
46         return 0
47     fi
48 }
49
50 is_instance()
51 {
52     local instancename=$1
53
54     if find /etc/koha/sites -mindepth 1 -maxdepth 1 \
55                          -type d -printf '%f\n'\
56           | grep -q -x $instancename ; then
57         return 0
58     else
59         return 1
60     fi
61 }
62
63 disable_instance()
64 {
65     local instancename=$1
66
67     if is_enabled $instancename; then
68         sed -i 's:^\s*#\(\s*Include /etc/koha/apache-shared-disable.conf\)$:\1:' \
69           "/etc/apache2/sites-available/$instancename"
70         return 0
71     else
72         return 1
73     fi
74 }
75
76 # Parse command line.
77 [ "$#" > 1 ] || die "Usage: $0 instancename..."
78
79 restart_apache="no"
80
81 for name in "$@"
82 do
83     if is_instance $name ; then
84         if disable_instance $name; then
85             restart_apache="yes"
86         else
87             warn "Instance $name already disabled."
88         fi
89     else
90         warn "Unknown instance $name."
91     fi
92 done
93
94 if [ "$restart_apache" = "yes" ]; then
95     /etc/init.d/apache2 restart
96 fi
97
98 exit 0