3 # koha-functions.sh -- shared library of helper functions for koha-* scripts
4 # Copyright 2014 - Tomas Cohen Arazi
5 # Universidad Nacional de Cordoba
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.
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.
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/>.
32 get_apache_config_for
()
35 local sitefile
="/etc/apache2/sites-available/$site"
37 if is_instance
$site; then
38 if [ -f "$sitefile.conf" ]; then
40 elif [ -f "$sitefile" ]; then
50 if [ -e /etc
/koha
/koha-sites.conf
]; then
51 .
/etc
/koha
/koha-sites.conf
53 echo "Error: /etc/koha/koha-sites.conf not present." 1>&2
56 local opacdomain
="$OPACPREFIX$site$OPACSUFFIX$DOMAIN"
64 if [ -e /etc
/koha
/koha-sites.conf
]; then
65 .
/etc
/koha
/koha-sites.conf
67 echo "Error: /etc/koha/koha-sites.conf not present." 1>&2
70 local intradomain
="$INTRAPREFIX$site$INTRASUFFIX$DOMAIN"
74 letsencrypt_get_opacdomain_for
()
78 if [ -e /var
/lib
/koha
/$site/letsencrypt.enabled
]; then
79 .
/var
/lib
/koha
/$site/letsencrypt.enabled
81 local opacdomain
=$
(get_opacdomain_for
$site)
89 local instancefile
=$
(get_apache_config_for
$site)
91 if [ "$instancefile" = "" ]; then
95 if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
96 "$instancefile" ; then
105 local instancename
=$1
107 if find -L /etc
/koha
/sites
-mindepth 1 -maxdepth 1 \
108 -type d
-printf '%f\n'\
109 |
grep -q -x "$instancename" ; then
118 local instancename
=$1
120 if [ -e /var
/lib
/koha
/$instancename/email.enabled
]; then
127 is_letsencrypt_enabled
()
129 local instancename
=$1
131 if [ -e /var
/lib
/koha
/$instancename/letsencrypt.enabled
]; then
140 local instancename
=$1
142 if [ -e /var
/lib
/koha
/$instancename/sip.enabled
]; then
151 local instancename
=$1
153 if [ -e /var
/lib
/koha
/$instancename/sitemap.enabled
]; then
162 local instancename
=$1
164 if daemon
--name="$instancename-koha-sip" \
165 --pidfiles="/var/run/koha/$instancename/" \
166 --user="$instancename-koha.$instancename-koha" \
176 local instancename
=$1
178 if daemon
--name="$instancename-koha-zebra" \
179 --pidfiles="/var/run/koha/$instancename/" \
180 --user="$instancename-koha.$instancename-koha" \
190 local instancename
=$1
192 if daemon
--name="$instancename-koha-indexer" \
193 --pidfiles="/var/run/koha/$instancename/" \
194 --user="$instancename-koha.$instancename-koha" \
202 is_plack_enabled_opac
()
204 local instancefile
=$1
206 if [ "$instancefile" = "" ]; then
210 # remember 0 means success/true in bash.
211 if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-opac-plack.conf' \
212 "$instancefile" ; then
219 is_plack_enabled_intranet
()
221 local instancefile
=$1
223 if [ "$instancefile" = "" ]; then
227 # remember 0 means success/true in bash.
228 if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-intranet-plack.conf' \
229 "$instancefile" ; then
239 local instancefile
=$
(get_apache_config_for
$site)
241 if [ "$instancefile" = "" ]; then
245 if is_plack_enabled_opac
$instancefile ; then
250 if is_plack_enabled_intranet
$instancefile ; then
256 # remember 0 means success/true in bash.
257 if [ "$enabledopac" != "$enabledintra" ] ; then
258 echo "$site has a plack configuration error. Enable or disable plack to correct this."
260 elif [ "$enabledopac" = "1" ] ; then
269 local instancename
=$1
271 if start-stop-daemon
--pidfile "/var/run/koha/${instancename}/plack.pid" \
281 local instancename
=$1
283 if [ -e /etc
/koha
/sites
/$instancename/z3950
/config.xml
]; then
292 local instancename
=$1
294 if start-stop-daemon
--pidfile "/var/run/koha/${instancename}/z3950-responder.pid" \
302 adjust_paths_dev_install
()
304 # Adjust KOHA_HOME, PERL5LIB for dev installs, as indicated by
305 # corresponding tag in koha-conf.xml
307 local instancename
=$1
310 if [ "$instancename" != "" ] && is_instance
$instancename; then
311 dev_install
=$
(run_safe_xmlstarlet
$instancename dev_install
)
314 if [ "$dev_install" != "" ] && [ "$dev_install" != "0" ]; then
316 KOHA_HOME
=$
(run_safe_xmlstarlet
$instancename intranetdir
)
325 find -L /etc
/koha
/sites
-mindepth 1 -maxdepth 1\
326 -type d
-printf '%f\n' |
sort
331 local instancename
=$1
332 local retval
=$
(run_safe_xmlstarlet
$instancename zebra_loglevels
)
333 if [ "$retval" != "" ]; then
336 echo "none,fatal,warn"
340 get_max_record_size
()
342 local instancename
=$1
343 local retval
=$
(xmlstarlet sel
-t -v 'yazgfs/config/zebra_max_record_size' /etc
/koha
/sites
/$instancename/koha-conf.xml
)
344 if [ "$retval" != "" ]; then
353 if [ "$TMPDIR" != "" ]; then
354 if [ -d "$TMPDIR" ]; then
358 # We will not unset TMPDIR but just default to /tmp here
359 # Note that mktemp (used later) would look at TMPDIR
363 local retval
=$
(mktemp
-u)
364 if [ "$retval" = "" ]; then
368 echo $
(dirname $retval)
371 run_safe_xmlstarlet
()
373 # When a bash script sets -e (errexit), calling xmlstarlet on an
374 # unexisting key would halt the script. This is resolved by calling
375 # this function in a subshell. It will always returns true, while not
376 # affecting the exec env of the caller. (Otherwise, errexit is cleared.)
377 local instancename
=$1
379 set +e
; # stay on the safe side
380 echo $
(xmlstarlet sel
-t -v "yazgfs/config/$myexpr" /etc
/koha
/sites
/$instancename/koha-conf.xml
)