updated release notes for 3.14.0 beta
[koha.git] / debian / scripts / koha-restart-zebra
index 6b5c0ca..024251e 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# koha-restart-zebra -- Restart Zebra for named Koha instandes
+# koha-restart-zebra - Restart Zebra for named Koha instances
 # Copyright 2010  Catalyst IT, Ltd
 # 
 # This program is free software: you can redistribute it and/or modify
 
 set -e
 
+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
+}
+
+is_zebra_running()
+{
+    local instancename=$1
+
+    if daemon --name="$instancename-koha-zebra" \
+            --user="$instancename-koha.$instancename-koha" \
+            --running ; then
+        return 0
+    else
+        return 1
+    fi
+}
+
+restart_zebra_instance()
+{
+    local instancename=$1
+
+    if is_zebra_running $instancename; then
+        echo "Restarting Zebra server for $instancename"
+        daemon \
+            --name="$instancename-koha-zebra" \
+            --errlog="/var/log/koha/$instancename/zebra-error.log" \
+            --stdout="/var/log/koha/$instancename/zebra.log" \
+            --output="/var/log/koha/$instancename/zebra-output.log" \
+            --verbose=1 \
+            --respawn \
+            --delay=30 \
+            --user="$instancename-koha.$instancename-koha" \
+            --restart \
+            -- \
+            zebrasrv \
+            -v none,fatal,warn \
+            -f "/etc/koha/sites/$instancename/koha-conf.xml" && \
+        return 0
+    else
+        return 1
+    fi
+}
+
+start_zebra_instance()
+{
+    local instancename=$1
+
+    if is_enabled $instancename; then
+        echo "Starting Zebra server for $instancename"
+        daemon \
+            --name="$instancename-koha-zebra" \
+            --errlog="/var/log/koha/$instancename/zebra-error.log" \
+            --stdout="/var/log/koha/$instancename/zebra.log" \
+            --output="/var/log/koha/$instancename/zebra-output.log" \
+            --verbose=1 \
+            --respawn \
+            --delay=30 \
+            --user="$instancename-koha.$instancename-koha" \
+            -- \
+            zebrasrv \
+            -v none,fatal,warn \
+            -f "/etc/koha/sites/$instancename/koha-conf.xml" && \
+        return 0
+    else
+        return 1
+    fi
+}
+
+usage()
+{
+    local scriptname=$0
+    cat <<EOF
+Restart Zebra for Koha instances.
+
+Usage: $scriptname instancename1 instancename2...
+
+EOF
+}
+
+# Parse command line.
+#[ $# -ge 1 ] || ( usage ; die "Missing instance name..." )
+
+# Loop through the instance names
 for name in "$@"
 do
-    echo "Restarting Zebra server for $name"
-    daemon \
-        --name="$name-koha-zebra" \
-        --errlog="/var/log/koha/$name/zebra-error.log" \
-        --stdout="/var/log/koha/$name/zebra.log" \
-        --output="/var/log/koha/$name/zebra-output.log" \
-        --verbose=1 \
-        --respawn \
-        --delay=30 \
-        --user="$name-koha.$name-koha" \
-        --restart \
-        -- \
-        zebrasrv \
-        -v none,fatal,warn \
-        -f "/etc/koha/sites/$name/koha-conf.xml"
+    if is_instance $name ; then
+        if is_enabled $name ; then
+
+            if ! is_zebra_running $name; then
+                warn "Zebra does not appear to have been running for instance $name."
+
+                if ! start_zebra_instance $name ; then
+                    warn "Something went wrong starting Zebra for $name."
+                fi
+            else
+                if ! restart_zebra_instance $name; then
+                  warn "Something went wrong restarting Zebra for $name."
+                fi
+            fi
+        else
+            warn "Instance $name disabled. No action taken."
+        fi
+    else
+        warn "Unknown instance $name."
+    fi
 done
+
+exit 0