#!/bin/sh
#
# koha-disable - disable Koha instances.
# Copyright 2010  Catalyst IT, Ltd
# 
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.


set -e

# include helper functions
if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then
    . "/usr/share/koha/bin/koha-functions.sh"
else
    echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2
    exit 1
fi

disable_instance()
{
    local instancename=$1
    local instancefile=$(get_apache_config_for "$instancename")

    if [ "$instancefile" = "" ]; then
        echo 2
    elif is_enabled $instancename; then
        sed -i 's:^\s*#\(\s*Include /etc/koha/apache-shared-disable.conf\)$:\1:' "$instancefile"
        echo 0
    else
        echo 1
    fi
}

usage()
{
    local scriptname=$0
    cat <<EOF
Disables Koha instances.

Usage: $scriptname instancename1 instancename2...

EOF
}

# Parse command line.
[ $# -ge 1 ] || ( usage ; die "Missing instance name..." )

restart_apache="no"
for name in "$@"
do
    if is_instance $name ; then
        RET=$(disable_instance $name)
        if [ "$RET" = 0 ]; then
            restart_apache="yes"
            # Stop the instance's daemons. Their configuration (SIP flag
            # file, Plack in the Apache vhost, unit enablement) is left
            # alone so that koha-enable brings back exactly what was
            # running before.
            if is_sip_enabled $name; then
                koha-sip --stop $name
            fi
            if is_plack_running $name; then
                koha-plack --stop $name
            fi
            if is_zebra_running $name; then
                koha-zebra --stop $name
            fi
            if is_indexer_running $name; then
                koha-indexer --stop $name
            fi
            if is_es_indexer_running $name; then
                koha-es-indexer --stop $name
            fi
            koha-worker --all-queues --stop $name || /bin/true

            # Under systemd, keep the instance from coming back at boot:
            # only the per-instance target is disabled, the individual
            # units keep their enablement.
            if [ "$(koha_init_backend)" = "systemd" ]; then
                systemctl stop "koha@${name}.target" 2>/dev/null || true
                systemctl disable "koha@${name}.target" 2>/dev/null || true
            fi
        elif [ "$RET" = 2 ]; then
            warn "Error: Apache configuration file not present for instance $name."
        else
            warn "Warning: instance $name already disabled."
        fi
    else
        warn "Unknown instance $name."
    fi
done

if [ "$restart_apache" = "yes" ]; then
    /etc/init.d/apache2 restart
fi

exit 0
