From 3f03c2699062d399f3f7392acfd3e32b50cdf81a Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Tue, 23 Apr 2013 13:29:02 -0300 Subject: [PATCH] Bug 10104 - make koha-disable more robust MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit koha-disable now: - checks for the existence of the instance before any actions on it. - checks if the instance is already disabled before touching anything (warns otherwise) - only reloads apache if needed - handles more than one instance name. - changed the docs to acknowledge the previous item. To test: - Apply the patch, build your package - Run koha-disable on - Non existent instance (try names that are prefix and suffix of a valid one too please) - Already disabled instance name. - Enabled instance name. It should work as expected and warn the user on the expected wrong cases. Regards To+ Sponsored-by: Universidad Nacional de Córdoba Signed-off-by: Chris Cormack Signed-off-by: Mason James Signed-off-by: Jared Camins-Esakov (cherry picked from commit b055f7d86c7772cf52c4a20d04a7e1cb0c8c19c9) Signed-off-by: Jared Camins-Esakov --- debian/docs/koha-disable.xml | 6 +-- debian/scripts/koha-disable | 71 +++++++++++++++++++++++++++++++++--- 2 files changed, 68 insertions(+), 9 deletions(-) diff --git a/debian/docs/koha-disable.xml b/debian/docs/koha-disable.xml index 1bc9ca3372..593a6a5d90 100644 --- a/debian/docs/koha-disable.xml +++ b/debian/docs/koha-disable.xml @@ -17,18 +17,18 @@ koha-disable - Disable a Koha instance. + Disable Koha instances. UNIX/Linux - koha-disable instancename + koha-disable instancename Description - Disable a Koha instance. + Disable Koha instances. See also diff --git a/debian/scripts/koha-disable b/debian/scripts/koha-disable index 5d7aa3661d..50785efd89 100755 --- a/debian/scripts/koha-disable +++ b/debian/scripts/koha-disable @@ -1,6 +1,6 @@ #!/bin/sh # -# koha-disable -- disable a Koha instance. +# koha-disable -- disable Koha instances. # Copyright 2010 Catalyst IT, Ltd # # This program is free software: you can redistribute it and/or modify @@ -20,20 +20,79 @@ set -e -die() { +die() +{ echo "$@" 1>&2 exit 1 } +warn() +{ + echo "$@" 1>&2 +} + +is_enabled() +{ + local instancename=$1 + + if ! is_instance $instancename; then + return 1 + fi + + if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \ + "/etc/apache2/sites-available/$instancename" ; then + return 1 + else + return 0 + fi +} + +is_instance() +{ + local instancename=$1 + + if find /etc/koha/sites -mindepth 1 -maxdepth 1 \ + -type d -printf '%f\n'\ + | grep -q -x $instancename ; then + return 0 + else + return 1 + fi +} + +disable_instance() +{ + local instancename=$1 + + if is_enabled $instancename; then + sed -i 's:^\s*#\(\s*Include /etc/koha/apache-shared-disable.conf\)$:\1:' \ + "/etc/apache2/sites-available/$instancename" + return 0 + else + return 1 + fi +} # Parse command line. -[ "$#" = 1 ] || die "Usage: $0 instancename..." +[ "$#" > 1 ] || die "Usage: $0 instancename..." +restart_apache="no" for name in "$@" do - sed -i 's:^\s*#\(\s*Include /etc/koha/apache-shared-disable.conf\)$:\1:' \ - "/etc/apache2/sites-available/$name" + if is_instance $name ; then + if disable_instance $name; then + restart_apache="yes" + else + warn "Instance $name already disabled." + fi + else + warn "Unknown instance $name." + fi done -/etc/init.d/apache2 restart +if [ "$restart_apache" = "yes" ]; then + /etc/init.d/apache2 restart +fi + +exit 0 -- 2.39.2