From e8d6fe8593743053bc5cefefba0a3748436dfacd 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=UTF-8 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 --- debian/docs/koha-disable.xml | 6 ++-- debian/scripts/koha-disable | 72 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 69 insertions(+), 9 deletions(-) diff --git a/debian/docs/koha-disable.xml b/debian/docs/koha-disable.xml index 1bc9ca3..593a6a5 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 5d7aa36..7affe5e 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,80 @@ 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 + -- 1.7.9.5