From f7cceb6e78ef4d6008de8b63135bd5987c327f70 Mon Sep 17 00:00:00 2001 From: Robin Sheat <robin@catalyst.net.nz> Date: Mon, 10 Dec 2012 18:57:04 +1300 Subject: [PATCH] Bug 9250 - provide commands to manage the SIP server This adds commands required to control the SIP server. These commands are: * koha-enable-sip - copies the SIP config to the sites directory * koha-start-sip - starts the SIP server processes * koha-stop-sip - stops the SIP server processes It also calls these as appropriate from the koha-common init script. To use: 1) sudo koha-enable-sip instancename 2) sudo vim /etc/koha/sites/instancename/SIPconfig.xml Do whatever is needed for your site's SIP configuration 3) sudo koha-start-sip instancename To test: 1) Build packages with this patch 2) Ensure that sudo koha-start-sip instancename doesn't do anything 3) Run sudo koha-enable-sip instancename 4) Edit /etc/koha/sites/instancename/SIPconfig.xml if needed (probably not required for testing) 5) Run sudo koha-start-sip instancename 6) Note that the sip processes are now running 7) Run sudo koha-stop-sip instancename 8) Note that the sip processes have gone 9) Reboot your Koha server 10) Note that the sip processes are back Sponsored-By: Waitaki District Council Libraries Sponsored-By: South Taranaki District Council Libraries Sponsored-By: Horowhenua District Council Libraries Sponsored-By: Rangitikei District Council Libraries --- debian/docs/koha-enable-sip.xml | 58 +++++++++++++++++++++++++++++++++++++++ debian/docs/koha-start-sip.xml | 53 +++++++++++++++++++++++++++++++++++ debian/docs/koha-stop-sip.xml | 53 +++++++++++++++++++++++++++++++++++ debian/koha-common.init | 4 +++ debian/koha-common.install | 3 ++ debian/scripts/koha-enable-sip | 38 +++++++++++++++++++++++++ debian/scripts/koha-start-sip | 49 +++++++++++++++++++++++++++++++++ debian/scripts/koha-stop-sip | 52 +++++++++++++++++++++++++++++++++++ 8 files changed, 310 insertions(+) create mode 100644 debian/docs/koha-enable-sip.xml create mode 100644 debian/docs/koha-start-sip.xml create mode 100644 debian/docs/koha-stop-sip.xml create mode 100755 debian/scripts/koha-enable-sip create mode 100755 debian/scripts/koha-start-sip create mode 100755 debian/scripts/koha-stop-sip diff --git a/debian/docs/koha-enable-sip.xml b/debian/docs/koha-enable-sip.xml new file mode 100644 index 0000000..c9c0d7c --- /dev/null +++ b/debian/docs/koha-enable-sip.xml @@ -0,0 +1,58 @@ +<article xmlns='http://docbook.org/ns/docbook'> +<title>koha-enable-sip</title> +<info> + <productname>Koha</productname> is the first free software library automation package. + <author> + <personname> + <firstname>Robin</firstname> + <surname>Sheat</surname> + </personname> + <affiliation> + <orgname>Catalyst IT</orgname> + <uri>http://www.catalyst.net.nz</uri> + </affiliation> + <contrib>Author</contrib> + </author> +</info> + +<refentry xml:id="koha-enable-sip"> + + <refmeta> + <refentrytitle>koha-enable-sip</refentrytitle> + <manvolnum>8</manvolnum> + </refmeta> + + <refnamediv> + <refname>koha-enable-sip</refname> + <refpurpose>Copies the SIP configuration file to allow SIP to be controlled by init scripts.</refpurpose> + <refclass>UNIX/Linux</refclass> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>koha-enable-sip</command> + <arg choice="req" rep="repeat"><replaceable>instancename</replaceable></arg> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1><title>Description</title> + <para>This copies the default SIP configuration file /etc/koha/SIPconfig.xml to the + /etc/koha/sites/instancename directory. This allows it to be started by + <command>koha-start-sip(8)</command>, and <command>koha-stop-sip</command>. In turn, + this means that it will be started on boot and stopped on shutdown.</para> + <para>After running this, you will need to edit the newly created file to configure it + for your site.</para> + <para>To disable SIP again, delete or rename the configuration file.</para> + </refsect1> + + <refsect1><title>See also</title> + <simplelist type="inline"> + <member><command>koha-start-sip(8)</command></member> + <member><command>koha-stop-sip(8)</command></member> + </simplelist> + </refsect1> + +</refentry> + +</article> + diff --git a/debian/docs/koha-start-sip.xml b/debian/docs/koha-start-sip.xml new file mode 100644 index 0000000..e49eb41 --- /dev/null +++ b/debian/docs/koha-start-sip.xml @@ -0,0 +1,53 @@ +<article xmlns='http://docbook.org/ns/docbook'> +<title>koha-start-sip</title> +<info> + <productname>Koha</productname> is the first free software library automation package. + <author> + <personname> + <firstname>Robin</firstname> + <surname>Sheat</surname> + </personname> + <affiliation> + <orgname>Catalyst IT</orgname> + <uri>http://www.catalyst.net.nz</uri> + </affiliation> + <contrib>Author</contrib> + </author> +</info> + +<refentry xml:id="koha-start-sip"> + + <refmeta> + <refentrytitle>koha-start-sip</refentrytitle> + <manvolnum>8</manvolnum> + </refmeta> + + <refnamediv> + <refname>koha-start-sip</refname> + <refpurpose>Starts the SIP daemon for the specified Koha instances.</refpurpose> + <refclass>UNIX/Linux</refclass> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>koha-start-sip</command> + <arg choice="req" rep="repeat"><replaceable>instancename</replaceable></arg> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1><title>Description</title> + <para>This will start the SIP daemon for the Koha instance specified by <arg>instancename</arg>.</para> + <para>If the SIP configuration is not present for the supplied instance, it will be silently skipped.</para> + <para>To enable SIP support for an instance, refer to <command>koha-enable-sip(8)</command>.</para> + </refsect1> + + <refsect1><title>See also</title> + <simplelist type="inline"> + <member><command>koha-stop-sip(8)</command></member> + <member><command>koha-enable-sip(8)</command></member> + </simplelist> + </refsect1> + +</refentry> + +</article> diff --git a/debian/docs/koha-stop-sip.xml b/debian/docs/koha-stop-sip.xml new file mode 100644 index 0000000..1c72a47 --- /dev/null +++ b/debian/docs/koha-stop-sip.xml @@ -0,0 +1,53 @@ +<article xmlns='http://docbook.org/ns/docbook'> +<title>koha-stop-sip</title> +<info> + <productname>Koha</productname> is the first free software library automation package. + <author> + <personname> + <firstname>Robin</firstname> + <surname>Sheat</surname> + </personname> + <affiliation> + <orgname>Catalyst IT</orgname> + <uri>http://www.catalyst.net.nz</uri> + </affiliation> + <contrib>Author</contrib> + </author> +</info> + +<refentry xml:id="koha-stop-sip"> + + <refmeta> + <refentrytitle>koha-stop-sip</refentrytitle> + <manvolnum>8</manvolnum> + </refmeta> + + <refnamediv> + <refname>koha-stop-sip</refname> + <refpurpose>Stops the SIP daemon for the specified Koha instances.</refpurpose> + <refclass>UNIX/Linux</refclass> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>koha-stop-sip</command> + <arg choice="req" rep="repeat"><replaceable>instancename</replaceable></arg> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1><title>Description</title> + <para>This will stop the SIP daemon for the Koha instance specified by <arg>instancename</arg>.</para> + <para>If it's not running, an note will be displayed.</para> + </refsect1> + + <refsect1><title>See also</title> + <simplelist type="inline"> + <member><command>koha-start-sip(8)</command></member> + <member><command>koha-enable-sip(8)</command></member> + </simplelist> + </refsect1> + +</refentry> + +</article> + diff --git a/debian/koha-common.init b/debian/koha-common.init index 5be77d3..9a285a3 100755 --- a/debian/koha-common.init +++ b/debian/koha-common.init @@ -45,6 +45,7 @@ do_start() # We insure all required directories exist, including disabled ones. koha-create-dirs $(koha-list) koha-start-zebra $(koha-list --enabled) + koha-start-sip $(koha-list --enabled) } # @@ -54,6 +55,7 @@ do_stop() { # We stop everything, including disabled ones. koha-stop-zebra $(koha-list) || true + koha-stop-sip $(koha-list) || true } # @@ -61,6 +63,8 @@ do_stop() # do_reload() { koha-restart-zebra $(koha-list --enabled) + koha-stop-sip $(koha-list) || true + koha-start-sip $(koha-list --enabled) } case "$1" in diff --git a/debian/koha-common.install b/debian/koha-common.install index 50affbd..7ad13ee 100644 --- a/debian/koha-common.install +++ b/debian/koha-common.install @@ -28,4 +28,7 @@ debian/scripts/koha-start-zebra usr/sbin debian/scripts/koha-stop-zebra usr/sbin debian/scripts/koha-upgrade-schema usr/sbin debian/scripts/koha-upgrade-to-3.4 usr/sbin +debian/scripts/koha-start-sip usr/sbin +debian/scripts/koha-stop-sip usr/sbin +debian/scripts/koha-enable-sip usr/sbin debian/tmp_docbook/*.8 usr/share/man/man8 diff --git a/debian/scripts/koha-enable-sip b/debian/scripts/koha-enable-sip new file mode 100755 index 0000000..1bcdd97 --- /dev/null +++ b/debian/scripts/koha-enable-sip @@ -0,0 +1,38 @@ +#!/bin/sh +# +# koha-enable-sip -- Set up the config files to allow SIP to run +# Copyright 2012 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 <http://www.gnu.org/licenses/>. + +set -e + +for name in "$@" +do + if [ ! -e /etc/koha/sites/${name}/koha-conf.xml ] ; + then + echo "No such instance: ${name}" > /dev/stderr + continue; + fi + sipfile=/etc/koha/sites/${name}/SIPconfig.xml + if [ -e ${sipfile} ] + then + echo "SIP already enabled for $name" + else + echo "Enabling SIP for $name - edit ${sipfile} to configure" + cp -v /etc/koha/SIPconfig.xml ${sipfile} + chown ${name}-koha:${name}-koha ${sipfile} + chmod 600 ${sipfile} + fi +done diff --git a/debian/scripts/koha-start-sip b/debian/scripts/koha-start-sip new file mode 100755 index 0000000..c104af3 --- /dev/null +++ b/debian/scripts/koha-start-sip @@ -0,0 +1,49 @@ +#!/bin/sh +# +# koha-start-sip -- Start SIP server for named Koha instance +# Copyright 2012 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 <http://www.gnu.org/licenses/>. + +set -e + +for name in "$@" +do + if [ ! -e /etc/koha/sites/${name}/koha-conf.xml ] ; + then + echo "No such instance: ${name}" > /dev/stderr + continue; + fi + [ -e /etc/koha/sites/${name}/SIPconfig.xml ] || continue + echo "Starting SIP server for $name" + mkdir -p /var/run/koha/${name} + chown "${name}-koha:${name}-koha" /var/run/koha/${name} + export KOHA_CONF PERL5LIB + KOHA_CONF=/etc/koha/sites/${name}/koha-conf.xml + PERL5LIB=/usr/share/koha/lib + daemon \ + --name="$name-koha-sip" \ + --errlog="/var/log/koha/$name/sip-error.log" \ + --stdout="/var/log/koha/$name/sip.log" \ + --output="/var/log/koha/$name/sip-output.log" \ + --verbose=1 \ + --respawn \ + --delay=30 \ + --pidfiles="/var/run/koha/${name}" \ + --user="$name-koha.$name-koha" \ + -- \ + perl \ + "/usr/share/koha/lib/C4/SIP/SIPServer.pm" \ + "/etc/koha/sites/${name}/SIPconfig.xml" +done diff --git a/debian/scripts/koha-stop-sip b/debian/scripts/koha-stop-sip new file mode 100755 index 0000000..a6110e4 --- /dev/null +++ b/debian/scripts/koha-stop-sip @@ -0,0 +1,52 @@ +#!/bin/sh +# +# koha-stop-sip -- Stop SIP server for named Koha instance +# Copyright 2012 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 <http://www.gnu.org/licenses/>. + +set -e + +for name in "$@" +do + if [ ! -e /etc/koha/sites/${name}/koha-conf.xml ] ; + then + echo "No such instance: ${name}" > /dev/stderr + continue; + fi + if [ ! -e /var/run/koha/${name}/${name}-koha-sip.pid ] ; + then + echo "SIP server for ${name} not running." + continue; + fi + echo "Stopping SIP server for $name" + KOHA_CONF=/etc/koha/sites/${name}/koha-conf.xml + PERL5LIB=/usr/share/koha/lib + export KOHA_CONF PERL5LIB + daemon \ + --name="$name-koha-sip" \ + --errlog="/var/log/koha/$name/sip-error.log" \ + --stdout="/var/log/koha/$name/sip.log" \ + --output="/var/log/koha/$name/sip-output.log" \ + --verbose=1 \ + --respawn \ + --delay=30 \ + --pidfiles="/var/run/koha/${name}" \ + --user="$name-koha.$name-koha" \ + --stop \ + -- \ + perl \ + "/usr/share/koha/lib/C4/SIP/SIPServer.pm" \ + "/etc/koha/sites/${name}/SIPconfig.xml" +done -- 1.7.9.5