Initial commit
authorChris Sharp <csharp@georgialibraries.org>
Fri, 22 Sep 2017 12:59:54 +0000 (08:59 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Fri, 22 Sep 2017 12:59:54 +0000 (08:59 -0400)
17 files changed:
.gitignore [new file with mode: 0644]
build_opensrf_debs [new file with mode: 0755]
files_for_build/CONTROL [new file with mode: 0644]
files_for_build/CONTROL.cluster [new file with mode: 0644]
files_for_build/checkdeps [new file with mode: 0644]
files_for_build/config [new file with mode: 0755]
files_for_build/control [new file with mode: 0644]
files_for_build/control.cluster [new file with mode: 0644]
files_for_build/eg_opensrf [new file with mode: 0755]
files_for_build/postinst [new file with mode: 0755]
files_for_build/postinst.cluster [new file with mode: 0755]
files_for_build/postinst.cluster-14.04 [new file with mode: 0755]
files_for_build/postinst.cluster-16.04 [new file with mode: 0755]
files_for_build/postrm [new file with mode: 0755]
files_for_build/prerm [new file with mode: 0755]
files_for_build/rules [new file with mode: 0755]
files_for_build/templates [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..8ee25e5
--- /dev/null
@@ -0,0 +1,2 @@
+*.deb
+Last_Build_Type.txt
diff --git a/build_opensrf_debs b/build_opensrf_debs
new file mode 100755 (executable)
index 0000000..b9367e0
--- /dev/null
@@ -0,0 +1,227 @@
+#!/bin/bash
+#TODO: insert license GPLv3 tag copyright gpls/emerald data
+VERSION_=2.5.2
+
+## Set work directory to current directory
+WORKDIR="$(dirname $(readlink -f $0))"
+
+# Customized files need to build the package.
+BUILDFILESDIR="${WORKDIR}/files_for_build"
+
+PKGFILE="opensrf-${VERSION_}.tar.gz"
+
+## OpenSRF install prefix
+OPENSRF_PREFIX="/openils"
+
+## OpenSRF config directory.
+OPENSRF_CONF_DIR="${OPENSRF_PREFIX}/conf"
+
+## Resulting .deb file
+DEB_FILE="opensrf_${VERSION_}_amd64.deb"
+
+ORIG_PKGFILE="../${PKGFILE}"
+SOURCE_FOLDER="${WORKDIR}/$(echo $PKGFILE|awk -F".tar" '{ print $1 }')"
+DEST_ROOT="${SOURCE_FOLDER}/debian/opensrf"
+# the following environment variables are required by dh_make
+export DEBEMAIL="$(grep @ ${BUILDFILESDIR}/control|awk -F"[<>]" '{ print $2 }')"
+export DEBFULLNAME="$(grep @ ${BUILDFILESDIR}/control|awk -F"[<>:]" '{ print $2 }')"
+
+echo
+echo "Select the build type."
+echo "Standalone: For single server installation."
+echo "Cluster: For clustered installations."
+echo "Clean: To clean this directory leaving the build files and  the deb file."
+echo
+select BUILDTYPE in Standalone Cluster Clean
+do
+        case $BUILDTYPE in
+                Standalone ) echo You selected $BUILDTYPE; echo; sleep 1; break ;;
+                Cluster ) echo You selected $BUILDTYPE; echo; sleep 1; break ;;
+               Clean ) echo You selected $BUILDTYPE; echo; sleep 1; break ;;
+                * ) echo; echo "You must select 1 or 2";;
+        esac
+done
+
+if [ "$BUILDTYPE" = "Clean" ]
+then
+       # preserve the deb file, if it exists
+       if [ -e "$DEB_FILE" ]; then
+               mv "$DEB_FILE" "/tmp" && \
+               rm -rf opensrf*
+               mv "/tmp/$DEB_FILE" "$WORKDIR"  
+       else
+               rm -rf opensrf*
+       fi
+       exit
+fi
+
+echo Building $BUILDTYPE version..;echo
+
+STANDALONE=true
+
+cd $WORKDIR
+
+if [ ! -e "$ORIG_PKGFILE" ] 
+       then
+       echo "$ORIG_PKGFILE not found exiting..."
+       echo
+       exit 1
+fi
+
+#TODO: this chunk might not be needed anymore
+if [ "$1" = "b" ] || [ "$1" = "-b" ]
+       then
+               echo
+               echo "Not including Source"
+               echo
+               BuildPackage () {
+                       echo
+                       echo "Running dpkg-buildpackage -b -nc"
+                       dpkg-buildpackage -b -nc
+               }
+       else
+               BuildPackage () {
+                       echo
+                       echo "Running dpkg-buildpackage -F -nc"
+                       dpkg-buildpackage -F -nc
+               }
+fi
+
+## Remove everything for fresh start
+rm -f ${WORKDIR}/*.changes
+rm -f ${WORKDIR}/*.dsc
+rm -f ${WORKDIR}/*.deb 
+rm -f ${WORKDIR}/*.gz && echo "Removed old package files"
+rm -rf $SOURCE_FOLDER && echo "Removed $SOURCE_FOLDER" && \
+
+## Start over fresh
+tar zxf ${ORIG_PKGFILE} -C ${WORKDIR} && \
+cp -f ${ORIG_PKGFILE} ${WORKDIR} && \
+cd $SOURCE_FOLDER && \
+echo "Running dh_make on $PKGFILE" && \
+## dh_make -s -f ../${PKGFILE} && \
+dh_make -s -n && \
+echo "Restoring rules file." && \
+mkdir -p ${SOURCE_FOLDER}/DEBIAN && \
+
+#TODO: Add conditional logic copy over the cluster version of these files
+
+## copy our modified files to the debian folder in the source folder.
+
+#rules is the same in both
+#control will differ with respect to memcached and postgresql (multiple packages)
+#post install will not execute the config functions
+#should postrm be more leniant about removing files?
+#templates can stay the same
+#we don't do much of anything in prerm. pretty sure it's just stock
+
+
+cp ${BUILDFILESDIR}/rules ${SOURCE_FOLDER}/debian/rules && \
+cp ${BUILDFILESDIR}/config ${SOURCE_FOLDER}/debian/config && \
+cp ${BUILDFILESDIR}/config ${SOURCE_FOLDER}/DEBIAN/config && \
+#cp ${BUILDFILESDIR}/postinst ${SOURCE_FOLDER}/debian/postinst && \
+#cp ${BUILDFILESDIR}/postinst ${SOURCE_FOLDER}/DEBIAN/postinst && \
+cp ${BUILDFILESDIR}/postrm ${SOURCE_FOLDER}/debian/postrm && \
+cp ${BUILDFILESDIR}/postrm ${SOURCE_FOLDER}/DEBIAN/postrm && \
+cp ${BUILDFILESDIR}/prerm ${SOURCE_FOLDER}/debian/prerm && \
+cp ${BUILDFILESDIR}/prerm ${SOURCE_FOLDER}/DEBIAN/prerm && \
+cp ${BUILDFILESDIR}/templates ${SOURCE_FOLDER}/debian/templates && \
+cp ${BUILDFILESDIR}/templates ${SOURCE_FOLDER}/DEBIAN/templates 
+echo 
+if [ "$BUILDTYPE" = "Standalone" ]
+       then
+       cp ${BUILDFILESDIR}/postinst ${SOURCE_FOLDER}/debian/postinst && \
+       cp ${BUILDFILESDIR}/postinst ${SOURCE_FOLDER}/DEBIAN/postinst && \
+       cp ${BUILDFILESDIR}/control ${SOURCE_FOLDER}/debian/control && \
+       cp ${BUILDFILESDIR}/CONTROL ${SOURCE_FOLDER}/DEBIAN/control 
+       echo "Build Date: $(date)" > $WORKDIR/Last_Build_Type.txt
+        echo "Build Type: $BUILDTYPE" >> $WORKDIR/Last_Build_Type.txt
+fi
+
+if [ "$BUILDTYPE" = "Cluster" ]
+       then
+       cp ${BUILDFILESDIR}/postinst.cluster ${SOURCE_FOLDER}/debian/postinst && \
+       cp ${BUILDFILESDIR}/postinst.cluster ${SOURCE_FOLDER}/DEBIAN/postinst && \
+       cp ${BUILDFILESDIR}/control.cluster ${SOURCE_FOLDER}/debian/control && \
+       cp ${BUILDFILESDIR}/CONTROL.cluster ${SOURCE_FOLDER}/DEBIAN/control
+       echo "Build Date: $(date)" > $WORKDIR/Last_Build_Type.txt
+        echo "Build Type: $BUILDTYPE" >> $WORKDIR/Last_Build_Type.txt
+       sed -i 's/^STANDALONE=1 #/STANDALONE=0 #/g' ${SOURCE_FOLDER}/debian/postinst
+fi
+
+##  Put perl stuff in /openils/ on the INSTALL system instead of  /usr/local/ on the BUILD system. 
+# sed -i "s^perl Build.PL^perl Build.PL install_base='../../debian/opensrf/$OPENSRF_PREFIX'^g" ${SOURCE_FOLDER}/src/perl/Makefile.am #Disabled for 2.0.1
+#sed -i "s^perl Build.PL^perl Build.PL install_base='../../debian/opensrf/usr/local/share/perl/5.10.1'^g" ${SOURCE_FOLDER}/src/perl/Makefile.am
+
+#TODO: include this in the chunk above
+## copy init script for opensrf. dpkg changes the init.d file to the name of the package, in this case opensrf.
+cp -v ${BUILDFILESDIR}/eg_opensrf ${SOURCE_FOLDER}/debian/init.d
+
+## set conf files
+#echo "$OPENSRF_CONF_DIR/opensrf.xml" > ${SOURCE_FOLDER}/debian/conffiles
+#echo "$OPENSRF_CONF_DIR/opensrf_core.xml" > ${SOURCE_FOLDER}/debian/conffiles
+
+
+## fix apxs2 install stuff
+APACHE_CONF=${DEST_ROOT}/etc/apache2/
+APACHE_MODS=${DEST_ROOT}/usr/lib/apache2/modules/
+mkdir -pv $APACHE_CONF
+mkdir -pv $APACHE_MODS
+mkdir -pv ${DEST_ROOT}/etc/apache2/mods-available
+#TODO: check if these seds are still needed
+sed -i "s^(APXS2) -i -a @srcdir@/osrf_json_gateway.la^(APXS2) -S LIBEXECDIR='$APACHE_MODS' -S SYSCONFDIR='$APACHE_CONF' -i -a @srcdir@/osrf_json_gateway.la^g" ${SOURCE_FOLDER}/src/gateway/Makefile.in
+sed -i "s^(APXS2) -i -a @srcdir@/osrf_json_gateway.la^(APXS2) -S LIBEXECDIR='$APACHE_MODS' -S SYSCONFDIR='$APACHE_CONF' -i -a @srcdir@/osrf_json_gateway.la^g" ${SOURCE_FOLDER}/src/gateway/Makefile.am
+sed -i "s^(APXS2) -i -a @srcdir@/osrf_http_translator.la^(APXS2) -S LIBEXECDIR='$APACHE_MODS' -S SYSCONFDIR='$APACHE_CONF' -i -a @srcdir@/osrf_http_translator.la^g" ${SOURCE_FOLDER}/src/gateway/Makefile.in
+sed -i "s^(APXS2) -i -a @srcdir@/osrf_http_translator.la^(APXS2) -S LIBEXECDIR='$APACHE_MODS' -S SYSCONFDIR='$APACHE_CONF' -i -a @srcdir@/osrf_http_translator.la^g" ${SOURCE_FOLDER}/src/gateway/Makefile.am
+
+
+#TODO: check to see if this test actually means if something is broken or not.
+#hack to disable a particular test
+
+#Just delete the lines that run check_transport_message
+#sed -i '8d' ${SOURCE_FOLDER}/tests/Makefile.am 
+#sed -i '6d' ${SOURCE_FOLDER}/tests/Makefile.am 
+sed -i 's/SUBDIRS = src tests/SUBDIRS = src/g' ${SOURCE_FOLDER}/Makefile.am
+sed -i 's/SUBDIRS = src tests/SUBDIRS = src/g' ${SOURCE_FOLDER}/Makefile.in
+
+echo "#MARK"
+#sed -i "s^@bindir@/opensrf-perl.pl @bindir@/osrf_control^${DEST_ROOT}/opensrf-perl.pl ${DEST_ROOT}/osrf_control^g" ${SOURCE_FOLDER}/Makefile.in
+#sed -i "s^@bindir@/opensrf-perl.pl @bindir@/osrf_control^${DEST_ROOT}/opensrf-perl.pl ${DEST_ROOT}/osrf_control^g" ${SOURCE_FOLDER}/Makefile.am
+
+
+#ln -s @bindir@/opensrf-perl.pl @bindir@/osrf_control; \
+
+
+
+
+sed -i 's|TESTS = check_osrf_message check_osrf_json_object check_osrf_list check_osrf_stack check_transport_client \\|TESTS = check_osrf_message check_osrf_json_object check_osrf_list check_osrf_stack \\|g' ${SOURCE_FOLDER}/tests/Makefile.am 
+sed -i 's|check_PROGRAMS = check_osrf_message check_osrf_json_object check_osrf_list check_osrf_stack check_transport_client \\|check_PROGRAMS = check_osrf_message check_osrf_json_object check_osrf_list check_osrf_stack \\|g' ${SOURCE_FOLDER}/tests/Makefile.am
+
+
+#TESTS = check_osrf_message$(EXEEXT) check_osrf_json_object$(EXEEXT) \
+#        check_osrf_list$(EXEEXT) check_osrf_stack$(EXEEXT) \
+#        check_transport_client$(EXEEXT) \
+#        check_transport_message$(EXEEXT)
+#check_PROGRAMS = check_osrf_message$(EXEEXT) \
+#        check_osrf_json_object$(EXEEXT) check_osrf_list$(EXEEXT) \
+#        check_osrf_stack$(EXEEXT) check_transport_client$(EXEEXT) \
+#        check_transport_message$(EXEEXT)
+
+
+#TESTS = check_osrf_message check_osrf_json_object check_osrf_list check_osrf_stack \
+#check_PROGRAMS = check_osrf_message check_osrf_json_object check_osrf_list check_osrf_stack \
+
+
+#The original lines from tests/Makefile.am
+#TESTS = check_osrf_message check_osrf_json_object check_osrf_list check_osrf_stack \
+#                check_transport_message
+#check_PROGRAMS = check_osrf_message check_osrf_json_object check_osrf_list check_osrf_stack \
+#                                 check_transport_message
+
+
+
+
+
+BuildPackage
+
+cd $WORKDIR
diff --git a/files_for_build/CONTROL b/files_for_build/CONTROL
new file mode 100644 (file)
index 0000000..f18c535
--- /dev/null
@@ -0,0 +1,16 @@
+Package: opensrf
+Source: opensrf
+Version: 2.5.2
+Section: devel
+Priority: extra
+Architecture: amd64
+Maintainer: Pines Admins <pines-admins@georgialibraries.org>
+Homepage: http://evergreen-ils.org
+Architecture: amd64
+Depends: ${shlibs:Depends}, ${misc:Depends},apache2, check, ejabberd, less, libapache2-mod-perl2, libcache-memcached-perl, libclass-dbi-abstractsearch-perl, libclass-dbi-sqlite-perl, libdatetime-format-builder-perl, libdatetime-format-iso8601-perl, libdatetime-format-mail-perl, libdatetime-perl, libdatetime-timezone-perl, liberror-perl, libexpat1-dev, libfile-find-rule-perl, libgcrypt11-dev, libgdbm-dev, libjson-xs-perl, liblog-log4perl-perl, libmemcached-dev, libmemcached-tools, libmodule-build-perl, libnet-dns-perl, libnet-server-perl, libreadline-dev, libtemplate-perl, libtest-pod-perl, libtie-ixhash-perl, libtool, libuniversal-require-perl, libunix-syslog-perl, libwww-perl, libxml-libxml-perl, libxml-libxslt-perl, libxml-simple-perl, memcached, ntpdate, pkg-config, psmisc, python-coverage, python-libxml2, python-memcache, python-nose, python-pyxmpp, python-setuptools, python-simplejson, tar
+
+Description: OpenSRF Message Routing Framework (standalone)
+ Open Service Request Framework (OpenSRF, pronounced "open surf")
+ OpenSRF is a message routing network that offers scalability and
+ failover support for individual services and entire servers with
+ minimal development and deployment overhead.
diff --git a/files_for_build/CONTROL.cluster b/files_for_build/CONTROL.cluster
new file mode 100644 (file)
index 0000000..f59a1cf
--- /dev/null
@@ -0,0 +1,16 @@
+Package: opensrf
+Source: opensrf
+Version: 2.5.2
+Section: devel
+Priority: extra
+Architecture: amd64
+Maintainer: Joshua Lamos <jlamos@georgialibraries.org>
+Homepage: http://open-ils.org
+Architecture: amd64
+Depends: ${shlibs:Depends}, ${misc:Depends}, apache2, check, ejabberd, less, libapache2-mod-perl2, libcache-memcached-perl, libclass-dbi-abstractsearch-perl, libclass-dbi-sqlite-perl, libdatetime-format-builder-perl, libdatetime-format-iso8601-perl, libdatetime-format-mail-perl, libdatetime-perl, libdatetime-timezone-perl, liberror-perl, libexpat1-dev, libfile-find-rule-perl, libgcrypt11-dev, libgdbm-dev, libjson-xs-perl, liblog-log4perl-perl, libmemcached-dev, libmemcached-tools, libmodule-build-perl, libnet-dns-perl, libnet-server-perl, libreadline-dev, libtemplate-perl, libtest-pod-perl, libtie-ixhash-perl, libtool, libuniversal-require-perl, libunix-syslog-perl, libwww-perl, libxml-libxml-perl, libxml-libxslt-perl, libxml-simple-perl, memcached, ntpdate, pkg-config, psmisc, python-coverage, python-libxml2, python-memcache, python-nose, python-pyxmpp, python-setuptools, python-simplejson, tar
+
+Description: OpenSRF Message Routing Framework (clustered)
+ Open Service Request Framework (OpenSRF, pronounced "open surf")
+ OpenSRF is a message routing network that offers scalability and
+ failover support for individual services and entire servers with
+ minimal development and deployment overhead.
diff --git a/files_for_build/checkdeps b/files_for_build/checkdeps
new file mode 100644 (file)
index 0000000..c3ded4e
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+if [ -z "$1" ]
+then
+       echo;echo "You must enter the file to check"
+       echo "eg. $0 filename"
+       echo
+       exit 1
+fi     
+
+for DEP in $(cat $1) 
+do 
+       if ! grep -q "$DEP" control.cluster
+       then
+               if echo $DEP | grep -q '\-dev'
+               then
+                       echo "Development Library: $DEP"
+               else
+                       echo "missing: $DEP"
+               fi
+       fi
+done
diff --git a/files_for_build/config b/files_for_build/config
new file mode 100755 (executable)
index 0000000..b7be3ad
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/sh
+#TODO: insert license GPLv3 tag copyright gpls
+#TODO: rewrite password sections with random generation
+set -e
+get_user_password()
+{
+  db_input high opensrf/user_password || true
+  db_input high opensrf/verify_user_password || true
+  db_go || true
+  db_get opensrf/user_password
+  PASSWORD="$RET"
+  db_get opensrf/verify_user_password
+  VERIFY="$RET"
+  if [ "$PASSWORD" != "$VERIFY" ]; then
+    db_input critical opensrf/user_nomatch || true
+    db_go || true
+    get_user_password
+  fi
+}
+get_ejabber_password()
+{
+  db_input high opensrf/ejabber_password || true
+  db_input high opensrf/verify_ejabber_password || true
+  db_go || true
+  db_get opensrf/ejabber_password
+  PASSWORD="$RET"
+  db_get opensrf/verify_ejabber_password
+  VERIFY="$RET"
+  if [ "$PASSWORD" != "$VERIFY" ]; then
+    db_input critical opensrf/ejabber_nomatch || true
+    db_go || true
+    get_ejabber_password
+  fi
+}
+
+get_host_fqdn()
+{
+       db_input medium opensrf/fqdn || true
+       db_go || true
+       db_get opensrf/fqdn
+       if [ ! $RET ]; then
+               HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+               db_set opensrf/fqdn $HFQDN
+       fi
+
+}
+
+. /usr/share/debconf/confmodule
+
+get_user_password
+get_ejabber_password
+get_host_fqdn
+exit 0
+
diff --git a/files_for_build/control b/files_for_build/control
new file mode 100644 (file)
index 0000000..9039ebe
--- /dev/null
@@ -0,0 +1,16 @@
+Source: opensrf
+Section: net
+Priority: extra
+Maintainer: Pines Admins <pines-admins@georgialibraries.org>
+Build-Depends: apache2, apache2-dev, autoconf, automake, autotools-dev, build-essential, check, debconf (>= 0.5), debhelper (>= 7.0.50~), libc6 (>= 2.3), libcache-memcached-perl, libclass-dbi-perl, libdatetime-format-iso8601-perl, libdatetime-perl, libexpat1-dev, libgcrypt11-dev, libgdbm-dev, libjson-xs-perl, libmemcached11, libmemcached-dev, libmodule-build-perl, libncurses5 (>= 5.7+20100313), libncurses5-dev, libnet-dns-perl, libnet-server-perl, libperl-dev, libreadline6 | libreadline5 (>= 5.2), libreadline-dev, libtool, libuniversal-require-perl, libunix-syslog-perl, libxml2 (>= 2.7.4), libxml2-dev, libxml-libxml-perl, libxslt1-dev, ncurses-dev, pkg-config, python-dev, zlib1g-dev
+Standards-Version: 3.8.4
+Homepage: http://evergreen-ils.org
+
+Package: opensrf
+Architecture: amd64
+Depends: ${shlibs:Depends}, ${misc:Depends}, apache2, check, ejabberd, less, libapache2-mod-perl2, libcache-memcached-perl, libclass-dbi-abstractsearch-perl, libclass-dbi-sqlite-perl, libdatetime-format-builder-perl, libdatetime-format-iso8601-perl, libdatetime-format-mail-perl, libdatetime-perl, libdatetime-timezone-perl, liberror-perl, libexpat1-dev, libfile-find-rule-perl, libgcrypt11-dev, libgdbm-dev, libjson-xs-perl, liblog-log4perl-perl, libmemcached-dev, libmemcached-tools, libmodule-build-perl, libnet-dns-perl, libnet-server-perl, libreadline-dev, libtemplate-perl, libtest-pod-perl, libtie-ixhash-perl, libtool, libuniversal-require-perl, libunix-syslog-perl, libwww-perl, libxml-libxml-perl, libxml-libxslt-perl, libxml-simple-perl, memcached, ntpdate, pkg-config, psmisc, python-coverage, python-libxml2, python-memcache, python-nose, python-pyxmpp, python-setuptools, python-simplejson, tar
+Description: OpenSRF Message Routing Network (standalone)
+ Open Service Request Framework (OpenSRF, pronounced "open surf")
+ OpenSRF is a message routing network that offers scalability and
+ failover support for individual services and entire servers with
+ minimal development and deployment overhead.
diff --git a/files_for_build/control.cluster b/files_for_build/control.cluster
new file mode 100644 (file)
index 0000000..55f2296
--- /dev/null
@@ -0,0 +1,16 @@
+Source: opensrf
+Section: devel
+Priority: extra
+Maintainer: Pines Admins <pines-admins@georgialibraries.org>
+Build-Depends: apache2, apache2-dev, autoconf, automake, autotools-dev, build-essential, check, debconf (>= 0.5), debhelper (>= 7.0.50~), libc6 (>= 2.3), libcache-memcached-perl, libclass-dbi-perl, libdatetime-format-iso8601-perl, libdatetime-perl, libexpat1-dev, libgcrypt11-dev, libgdbm-dev, libjson-xs-perl, libmemcached11, libmemcached-dev, libmodule-build-perl, libncurses5 (>= 5.7+20100313), libncurses5-dev, libnet-dns-perl, libnet-server-perl, libperl-dev, libreadline6 | libreadline5 (>= 5.2), libreadline-dev, libtool, libuniversal-require-perl, libunix-syslog-perl, libxml2 (>= 2.7.4), libxml2-dev, libxml-libxml-perl, libxslt1-dev, ncurses-dev, pkg-config, python-dev, zlib1g-dev
+Standards-Version: 3.8.4
+Homepage: http://evergreen-ils.org
+
+Package: opensrf
+Architecture: amd64
+Depends: ${shlibs:Depends}, ${misc:Depends}, apache2, check, ejabberd, less, libapache2-mod-perl2, libcache-memcached-perl, libclass-dbi-abstractsearch-perl, libclass-dbi-sqlite-perl, libdatetime-format-builder-perl, libdatetime-format-iso8601-perl, libdatetime-format-mail-perl, libdatetime-perl, libdatetime-timezone-perl, liberror-perl, libexpat1-dev, libfile-find-rule-perl, libgcrypt11-dev, libgdbm-dev, libjson-xs-perl, liblog-log4perl-perl, libmemcached-dev, libmemcached-tools, libmodule-build-perl, libnet-dns-perl, libnet-server-perl, libreadline-dev, libtemplate-perl, libtest-pod-perl, libtie-ixhash-perl, libtool, libuniversal-require-perl, libunix-syslog-perl, libwww-perl, libxml-libxml-perl, libxml-libxslt-perl, libxml-simple-perl, memcached, ntpdate, pkg-config, psmisc, python-coverage, python-libxml2, python-memcache, python-nose, python-pyxmpp, python-setuptools, python-simplejson, tar
+Description: OpenSRF Message Routing Network (clustered)
+ Open Service Request Framework (OpenSRF, pronounced "open surf")
+ OpenSRF is a message routing network that offers scalability and
+ failover support for individual services and entire servers with
+ minimal development and deployment overhead.
diff --git a/files_for_build/eg_opensrf b/files_for_build/eg_opensrf
new file mode 100755 (executable)
index 0000000..e4f4202
--- /dev/null
@@ -0,0 +1,89 @@
+#!/bin/bash
+#TODO: properly attribute the original authors of this file
+#TODO: add a 'status' command
+#TODO: create an upstart job instead?
+
+### BEGIN INIT INFO
+# Provides:          opensrf
+# Required-Start:    $local_fs $remote_fs $network $syslog
+# Required-Stop:     $local_fs $remote_fs $network $syslog 
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# X-Interactive:     true
+# Short-Description: Start/stop OpenSRF Services
+### END INIT INFO
+. /lib/lsb/init-functions
+
+OPENILS_BASE="/openils"
+OPENILS_CORE="${OPENILS_BASE}/conf/opensrf_core.xml"
+SRU_LOG="${OPENILS_BASE}/var/log/sru.log"
+
+PIDFILES="${OPENILS_BASE}/var/run"
+SIP_CONF="${OPENILS_BASE}/conf/oils_sip.xml"
+
+REP_LOCK="${OPENILS_BASE}/var/lock/reporter-LOCK"
+REP_NAME="Clark Kent, waiting for trouble"
+
+sru_name='simple2zoom'
+
+export PATH=$PATH:${OPENILS_BASE}/bin
+
+if [ $(whoami) != 'opensrf' ]; then
+ PERL5LIB='/openils/lib/perl5:$PERL5LIB';
+fi;
+
+start_opensrf() {
+        sleep 3
+       log_daemon_msg "Starting Evergreen OpenSRF:"
+       su - opensrf -c /bin/bash -c "PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 PATH=${PATH}:${OPENILS_BASE}/bin osrf_control --start-all"
+       if [ ! -e ${OPENILS_BASE}/var/web/eg_cache_hash ]
+       then
+               if dpkg -l | grep "evergreen-ils" | grep "ii"
+                       then
+                       log_daemon_msg "Running Autogen...:"
+                       su - opensrf /bin/bash -c "PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 PATH=${PATH}:${OPENILS_BASE}/bin autogen.sh -u"
+               fi
+       fi
+}
+
+stop_opensrf() {
+       log_daemon_msg "Stopping Evergreen OpenSRF:"
+       su - opensrf -c /bin/bash -c "PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 PATH=${PATH}:${OPENILS_BASE}/bin osrf_control --stop-all"
+       sleep 3
+       rm -f $PIDFILES/*.pid
+}
+
+autogen() {
+        echo "Running Autogen Update"
+        su - opensrf /bin/bash -c "PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 PATH=${PATH}:${OPENILS_BASE}/bin autogen.sh -u"
+}
+
+
+case "$1" in
+    start)
+        start_opensrf
+       /etc/init.d/apache2-websockets stop
+       /etc/init.d/apache2 restart
+       /etc/init.d/apache2-websockets start
+    ;;
+    stop)
+        stop_opensrf
+    ;;
+    restart)
+       /etc/init.d/apache2-websockets stop
+       /etc/init.d/apache2 stop
+       log_daemon_msg "Restarting Evergreen OpenSRF:"
+        stop_opensrf
+       sleep 2
+        start_opensrf
+       /etc/init.d/apache2-websockets start
+       /etc/init.d/apache2 start
+    ;;
+    autogen)
+        autogen
+    ;;
+*)
+        echo " * Usage: /etc/init.d/eg_opensrf {start|stop|restart|autogen}"
+        exit 1
+    ;;
+esac;
diff --git a/files_for_build/postinst b/files_for_build/postinst
new file mode 100755 (executable)
index 0000000..086a259
--- /dev/null
@@ -0,0 +1,272 @@
+#!/bin/bash
+set -e
+set +x
+#TODO: insert license GPLv3 tag copyright gpls
+STANDALONE=1 # 
+#Can this be fetched from dpkg?
+OPENSRF_PREFIX="/openils"
+. /usr/share/debconf/confmodule
+HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+DEBUG()
+{
+       if [ $_DEBUG > 0 ]; then  $@;fi
+}
+modify_hosts_file() 
+{
+HOSTS_FILE_TAG="OPENSRF_DEB Addresses"
+if ! grep -q "$HOSTS_FILE_TAG" /etc/hosts
+       then 
+               cp -f /etc/hosts /etc/hosts.orig
+               DEBUG echo "Adding entries to /etc/hosts..."
+               sed -i "2i\#$HOSTS_FILE_TAG" /etc/hosts
+               sed -i "3i\127.0.1.2\tpublic.$HFQDN\tpublic #OPENSRF_DEB" /etc/hosts
+               sed -i "4i\127.0.1.3\tprivate.$HFQDN\tprivate #OPENSRF_DEB" /etc/hosts
+               sed -i '5i\ ' /etc/hosts
+       else
+               DEBUG echo "Hosts file has already been modified!"
+               
+fi
+} #modify_hosts_file()
+add_opensrf_user() {
+if ! grep -q "^opensrf:" /etc/passwd 
+       then
+               DEBUG echo "Opensrf user does not exist! Creating..."
+               if ! grep -q "x:2000" /etc/passwd; then
+                        useradd -m -s /bin/bash -u 2000 opensrf
+                else
+                        useradd -m -s /bin/bash opensrf
+                fi
+
+               db_get opensrf/user_password || true
+               PASS=$RET
+               tfile=`mktemp`
+               if [ ! -f "$tfile" ]; then
+                       echo "ERROR Creating temp file!"
+                       return 1
+               fi
+               
+               DEBUG echo "creating tmp pw file as $tfile"
+cat << EOF > $tfile
+opensrf:$PASS
+EOF
+DEBUG echo "about to change"
+               cat $tfile | chpasswd   
+DEBUG echo "about to rm"
+               rm $tfile
+               DEBUG echo "Set user opensrf's password"
+       else
+               DEBUG echo "Opensrf user already exists, so not doing anything!"
+               
+
+fi  
+
+
+
+if ! grep -q "$OPENSRF_PREFIX/bin" /home/opensrf/.bashrc
+       then
+               DEBUG echo "Adding path for opensrf user..."
+               sed -i "2i\export PATH=$OPENSRF_PREFIX/bin:\$PATH" /home/opensrf/.bashrc
+               sed -i '3i\export PERL5LIB=/openils/lib/perl5:$PERL5LIB' /home/opensrf/.bashrc
+       else
+               DEBUG echo "OpenSRF Path already added!"
+fi
+} #add_opensrf_user()
+
+#EJABBERD SECTION
+reconfigure_ejabberd()
+{
+#if grep -q "^{hosts, \[\"localhost\"]}" /etc/ejabberd/ejabberd.cfg 
+if ! grep -q "$HFQDN" /etc/ejabberd/ejabberd.yml
+       then
+               #TODO: make sure these values are current
+               DEBUG echo "Stock ejabberd detecting. Stopping and modifying config!"
+               EJABBERD_CONFIG_FILE="/etc/ejabberd/ejabberd.yml"
+               /etc/init.d/ejabberd stop
+               cp /etc/ejabberd/ejabberd.yml /etc/ejabberd/ejabberd.yml.orig
+               sed -i "/^  \- \"localhost\"/a \  \- \"private.$HFQDN\"" $EJABBERD_CONFIG_FILE
+                sed -i "/^  \- \"localhost\"/a \  \- \"public.$HFQDN\"" $EJABBERD_CONFIG_FILE
+
+                #max_user_sessions
+                sed -i 's/\<all: 10\>/all: 10000/g' $EJABBERD_CONFIG_FILE
+
+                #max_stanza_size
+                sed -i 's/max_stanza_size: 65536/max_stanza_size: 2000000/g' $EJABBERD_CONFIG_FILE
+
+                #shaper_normal
+                sed -i 's/normal: 1000/normal: 500000/g' $EJABBERD_CONFIG_FILE
+
+                #shaper_fast
+                sed -i 's/fast: 50000/fast: 500000/g' $EJABBERD_CONFIG_FILE
+
+                #mod_offline
+                sed -i 's/mod_offline:/#mod_offline:/g' $EJABBERD_CONFIG_FILE
+                sed -i 's/access_max_user_messages/#access_max_user_messages/g' $EJABBERD_CONFIG_FILE
+
+                #auth_password_format
+                sed -i 's/auth_password_format: scram/auth_password_format: plain/g' $EJABBERD_CONFIG_FILE
+               #sed -i "s/^{hosts, \[\"localhost\"\]}/{hosts, [\"localhost\", \"private.$HFQDN\", \"public.$HFQDN\"]}/g" /etc/ejabberd/ejabberd.cfg
+               #sed -i "s/max_user_sessions,\ \[{10,/max_user_sessions,\ \[{10000,/g" /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{max_stanza_size, 65536}/{max_stanza_size, 2000000}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{max_stanza_size, 131072}/{max_stanza_size, 2000000}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{shaper, normal, {maxrate, 1000}}/{shaper, normal, {maxrate, 500000}}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{shaper, fast, {maxrate, 50000}}/{shaper, fast, {maxrate, 500000}}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{mod_offline/%%{mod_offline/g' /etc/ejabberd/ejabberd.cfg
+               chown ejabberd.ejabberd /etc/ejabberd/ejabberd.yml
+               /etc/init.d/ejabberd start
+       else
+               DEBUG echo "Ejabberd has already been modified (or atleast the hosts line has). No Changes made."
+fi
+} #reconfigure_ejabberd()
+add_ejabber_user()
+{
+               USER=$1
+               HOST=$2
+               PASSWD=$3
+                if ! status=$(ejabberdctl register "$USER" "$HOST" "$PASSWD") ; then
+                    if echo $status | grep -q "already registered" ; then
+                       DEBUG echo "User \"$USER@$HOST\" is already registered. Password IS NOT changed."
+                    else
+                        echo "Can't register user \"$USER@$HOST\"."
+                    fi
+                else
+                    DEBUG echo "User \"$USER@$HOST\" is registered successfully."
+                fi
+
+
+}
+
+register_ejabberd_users()
+{
+#TODO: check the ejabberd scripts to make sure none of this code was borrowed from it. may need to rewrite the block to make sure it's on the level.
+    db_get opensrf/ejabber_password
+    EJABBER_PASS=$RET
+    #if [ -n "$USER" -a -n "$PASSWD" ]; then
+        DEBUG echo -n "Waiting for ejabberd to register admin user"
+
+        if ejabberdctl status >/dev/null || test $? = 1 ; then
+            # Ejabberd is starting ($? = 1) or running ($? = 0) already.
+            cnt=0
+            flag=1
+            while ! ejabberdctl status >/dev/null ; do
+                DEBUG echo -n "."
+                cnt=`expr $cnt + 1`
+                if [ $cnt -ge 60 ] ; then
+                    echo
+                    echo "Can't register Ejabberd users."
+                    echo -n "Ejabberd is taking too long to start!"
+                    flag=0
+                    break
+                fi
+                sleep 1
+            done
+
+            echo
+            if [ $flag -eq 1 ] ; then
+                       add_ejabber_user router private.$HFQDN $EJABBER_PASS
+                        add_ejabber_user opensrf private.$HFQDN $EJABBER_PASS
+                        add_ejabber_user router public.$HFQDN $EJABBER_PASS
+                        add_ejabber_user opensrf public.$HFQDN $EJABBER_PASS
+
+            fi
+        else
+            echo
+            echo "Can't register Ejabberd users!"
+            echo "Ejabberd server is not started."
+        fi
+} #register_ejabberd_users()
+
+
+#END EJABBERD SECTION
+
+modify_apache() 
+{
+#TODO: check license on Makefile.install to make sure it's compatible with ours.
+#CODE SOURCE: Makefile.install
+
+for m in ssl osrf_http_translator osrf_json_gateway; do a2enmod $m > /dev/null; done;
+# adds a placeholder module so apxs will be happy
+if [ ! "$(grep mod_placeholder /etc/apache2/httpd.conf)" ]; then 
+                echo -e "#\n#LoadModule mod_placeholder /usr/lib/apache2/modules/mod_placeholder.so" >> /etc/apache2/httpd.conf
+               /etc/init.d/apache2 restart
+        fi
+
+} #modify_apache()
+
+configure_ld() 
+{
+LD_CONF_FILE="/etc/ld.so.conf.d/osrf.conf"
+#TODO: decide if this should be opensrf.conf instead of an abbreviation.
+if ! test -e $LD_CONF_FILE
+       then
+               DEBUG echo "Confgiuring library paths..."
+               echo "$OPENSRF_PREFIX/lib" > $LD_CONF_FILE
+               echo "/usr/local/lib" >> $LD_CONF_FILE
+               export LDCONFIG_NOTRIGGER=y
+               ldconfig 
+       else
+               DEBUG echo "Library paths already configured!"
+fi
+} #configure_ld()
+
+fix_osrf_perms()
+{
+DEBUG echo "Changing ownership of $OPENSRF_PREFIX (and everything in it) to opensrf..."
+mkdir -p $OPENSRF_PREFIX/var/run
+mkdir -p $OPENSRF_PREFIX/var/log
+mkdir -p $OPENSRF_PREFIX/var/lock
+chown -R opensrf:opensrf $OPENSRF_PREFIX
+}
+configure_opensrf_xml()
+{
+       db_get opensrf/ejabber_password
+       EJABBERPASS=$RET
+       cp -n $OPENSRF_PREFIX/conf/opensrf.xml.example $OPENSRF_PREFIX/conf/opensrf.xml
+       cp -n $OPENSRF_PREFIX/conf/opensrf_core.xml.example $OPENSRF_PREFIX/conf/opensrf_core.xml
+       cp -n $OPENSRF_PREFIX/conf/srfsh.xml.example $OPENSRF_PREFIX/conf/srfsh.xml
+       sed -i "s|d>password|d>$RET|g" $OPENSRF_PREFIX/conf/*.xml
+       cp -n $OPENSRF_PREFIX/conf/srfsh.xml /home/opensrf/.srfsh.xml && \
+       chown opensrf /home/opensrf/.srfsh.xml && chmod 600 /home/opensrf/.srfsh.xml
+        HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+       sed -i "s/<localhost>/<$HFQDN>/g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/<\/localhost>/<\/$HFQDN>/g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" $OPENSRF_PREFIX/conf/opensrf_core.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" /home/opensrf/.srfsh.xml
+
+
+}
+
+update_rcd()
+{
+       update-rc.d opensrf defaults > /dev/null
+}
+osrf_control_symlink()
+{
+       if [ -e /openils/bin/osrf_control ]
+       then
+               rm /openils/bin/osrf_control
+               ln -s /openils/bin/opensrf-perl.pl /openils/bin/osrf_control
+       else
+               ln -s /openils/bin/opensrf-perl.pl /openils/bin/osrf_control
+       fi
+}
+
+modify_hosts_file
+add_opensrf_user
+reconfigure_ejabberd
+register_ejabberd_users
+modify_apache
+configure_ld
+fix_osrf_perms
+configure_opensrf_xml
+osrf_control_symlink
+
+update_rcd
+#ldconfig
+db_stop
+DEBUG echo "Installation of OpenSRF completed!"
+#DEBUG echo "Starting OpenSRF:"
+echo "To start opensrf, run /etc/init.d/opensrf start"
+echo "Please make sure any pending network changes have taken place before attempting this"
+#/etc/init.d/opensrf start
+exit 0
diff --git a/files_for_build/postinst.cluster b/files_for_build/postinst.cluster
new file mode 100755 (executable)
index 0000000..28e7887
--- /dev/null
@@ -0,0 +1,272 @@
+#!/bin/bash
+set -e
+set +x
+#TODO: insert license GPLv3 tag copyright gpls
+STANDALONE=1 # 
+#Can this be fetched from dpkg?
+OPENSRF_PREFIX="/openils"
+. /usr/share/debconf/confmodule
+HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+DEBUG()
+{
+       if [ $_DEBUG > 0 ]; then  $@;fi
+}
+modify_hosts_file() 
+{
+HOSTS_FILE_TAG="OPENSRF_DEB Addresses"
+if ! grep -q "$HOSTS_FILE_TAG" /etc/hosts
+       then 
+               cp -f /etc/hosts /etc/hosts.orig
+               DEBUG echo "Adding entries to /etc/hosts..."
+               sed -i "2i\#$HOSTS_FILE_TAG" /etc/hosts
+               sed -i "3i\127.0.1.2\tpublic.$HFQDN\tpublic #OPENSRF_DEB" /etc/hosts
+               sed -i "4i\127.0.1.3\tprivate.$HFQDN\tprivate #OPENSRF_DEB" /etc/hosts
+               sed -i '5i\ ' /etc/hosts
+       else
+               DEBUG echo "Hosts file has already been modified!"
+               
+fi
+} #modify_hosts_file()
+add_opensrf_user() {
+if ! grep -q "^opensrf:" /etc/passwd 
+       then
+               DEBUG echo "Opensrf user does not exist! Creating..."
+               if ! grep -q "x:2000" /etc/passwd; then
+                        useradd -m -s /bin/bash -u 2000 opensrf
+                else
+                        useradd -m -s /bin/bash opensrf
+                fi
+
+               db_get opensrf/user_password || true
+               PASS=$RET
+               tfile=`mktemp`
+               if [ ! -f "$tfile" ]; then
+                       echo "ERROR Creating temp file!"
+                       return 1
+               fi
+               
+               DEBUG echo "creating tmp pw file as $tfile"
+cat << EOF > $tfile
+opensrf:$PASS
+EOF
+DEBUG echo "about to change"
+               cat $tfile | chpasswd   
+DEBUG echo "about to rm"
+               rm $tfile
+               DEBUG echo "Set user opensrf's password"
+       else
+               DEBUG echo "Opensrf user already exists, so not doing anything!"
+               
+
+fi  
+
+
+
+if ! grep -q "$OPENSRF_PREFIX/bin" /home/opensrf/.bashrc
+       then
+               DEBUG echo "Adding path for opensrf user..."
+               sed -i "2i\export PATH=$OPENSRF_PREFIX/bin:\$PATH" /home/opensrf/.bashrc
+               sed -i '3i\export PERL5LIB=/openils/lib/perl5:$PERL5LIB' /home/opensrf/.bashrc
+       else
+               DEBUG echo "OpenSRF Path already added!"
+fi
+} #add_opensrf_user()
+
+#EJABBERD SECTION
+reconfigure_ejabberd()
+{
+if ! grep -q "$HFQDN" /etc/ejabberd/ejabberd.yml 
+       then
+               #TODO: make sure these values are current
+               DEBUG echo "Stock ejabberd detecting. Stopping and modifying config!"
+               EJABBERD_CONFIG_FILE="/etc/ejabberd/ejabberd.yml"
+               /etc/init.d/ejabberd stop
+               cp /etc/ejabberd/ejabberd.yml /etc/ejabberd/ejabberd.yml.orig
+               #hosts
+               sed -i "/^  \- \"localhost\"/a \  \- \"private.$HFQDN\"" $EJABBERD_CONFIG_FILE
+               sed -i "/^  \- \"localhost\"/a \  \- \"public.$HFQDN\"" $EJABBERD_CONFIG_FILE
+
+               #max_user_sessions
+               sed -i 's/\<all: 10\>/all: 10000/g' $EJABBERD_CONFIG_FILE
+
+               #max_stanza_size
+               sed -i 's/max_stanza_size: 65536/max_stanza_size: 2000000/g' $EJABBERD_CONFIG_FILE
+
+               #shaper_normal
+               sed -i 's/normal: 1000/normal: 500000/g' $EJABBERD_CONFIG_FILE
+
+               #shaper_fast
+               sed -i 's/fast: 50000/fast: 500000/g' $EJABBERD_CONFIG_FILE
+
+               #mod_offline
+               sed -i 's/mod_offline:/#mod_offline:/g' $EJABBERD_CONFIG_FILE
+               sed -i 's/access_max_user_messages/#access_max_user_messages/g' $EJABBERD_CONFIG_FILE
+               
+               #auth_password_format
+               sed -i 's/auth_password_format: scram/auth_password_format: plain/g' $EJABBERD_CONFIG_FILE
+               #sed -i "s/^{hosts, \[\"localhost\"\]}/{hosts, [\"localhost\", \"private.$HFQDN\", \"public.$HFQDN\"]}/g" /etc/ejabberd/ejabberd.cfg
+               #sed -i "s/max_user_sessions,\ \[{10,/max_user_sessions,\ \[{10000,/g" /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{max_stanza_size, 65536}/{max_stanza_size, 2000000}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{max_stanza_size, 131072}/{max_stanza_size, 2000000}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{shaper, normal, {maxrate, 1000}}/{shaper, normal, {maxrate, 500000}}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{shaper, fast, {maxrate, 50000}}/{shaper, fast, {maxrate, 500000}}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{mod_offline/%%{mod_offline/g' /etc/ejabberd/ejabberd.cfg
+               chown ejabberd.ejabberd /etc/ejabberd/ejabberd.yml
+               /etc/init.d/ejabberd start
+       else
+               DEBUG echo "Ejabberd has already been modified (or atleast the hosts line has). No Changes made."
+fi
+} #reconfigure_ejabberd()
+add_ejabber_user()
+{
+               USER=$1
+               HOST=$2
+               PASSWD=$3
+                if ! status=$(ejabberdctl register "$USER" "$HOST" "$PASSWD") ; then
+                    if echo $status | grep -q "already registered" ; then
+                       DEBUG echo "User \"$USER@$HOST\" is already registered. Password IS NOT changed."
+                    else
+                        echo "Can't register user \"$USER@$HOST\"."
+                    fi
+                else
+                    DEBUG echo "User \"$USER@$HOST\" is registered successfully."
+                fi
+
+
+}
+
+register_ejabberd_users()
+{
+#TODO: check the ejabberd scripts to make sure none of this code was borrowed from it. may need to rewrite the block to make sure it's on the level.
+    db_get opensrf/ejabber_password
+    EJABBER_PASS=$RET
+    #if [ -n "$USER" -a -n "$PASSWD" ]; then
+        DEBUG echo -n "Waiting for ejabberd to register admin user"
+
+        if ejabberdctl status >/dev/null || test $? = 1 ; then
+            # Ejabberd is starting ($? = 1) or running ($? = 0) already.
+            cnt=0
+            flag=1
+            while ! ejabberdctl status >/dev/null ; do
+                DEBUG echo -n "."
+                cnt=`expr $cnt + 1`
+                if [ $cnt -ge 60 ] ; then
+                    echo
+                    echo "Can't register Ejabberd users."
+                    echo -n "Ejabberd is taking too long to start!"
+                    flag=0
+                    break
+                fi
+                sleep 1
+            done
+
+            echo
+            if [ $flag -eq 1 ] ; then
+                       add_ejabber_user router private.$HFQDN $EJABBER_PASS
+                        add_ejabber_user opensrf private.$HFQDN $EJABBER_PASS
+                        add_ejabber_user router public.$HFQDN $EJABBER_PASS
+                        add_ejabber_user opensrf public.$HFQDN $EJABBER_PASS
+
+            fi
+        else
+            echo
+            echo "Can't register Ejabberd users!"
+            echo "Ejabberd server is not started."
+        fi
+} #register_ejabberd_users()
+
+
+#END EJABBERD SECTION
+
+modify_apache() 
+{
+#TODO: check license on Makefile.install to make sure it's compatible with ours.
+#CODE SOURCE: Makefile.install
+
+for m in ssl osrf_http_translator osrf_json_gateway; do a2enmod $m > /dev/null; done;
+# adds a placeholder module so apxs will be happy
+if [ ! "$(grep mod_placeholder /etc/apache2/httpd.conf)" ]; then 
+                echo -e "#\n#LoadModule mod_placeholder /usr/lib/apache2/modules/mod_placeholder.so" >> /etc/apache2/httpd.conf
+               /etc/init.d/apache2 restart
+        fi
+
+} #modify_apache()
+
+configure_ld() 
+{
+LD_CONF_FILE="/etc/ld.so.conf.d/osrf.conf"
+#TODO: decide if this should be opensrf.conf instead of an abbreviation.
+if ! test -e $LD_CONF_FILE
+       then
+               DEBUG echo "Confgiuring library paths..."
+               echo "$OPENSRF_PREFIX/lib" > $LD_CONF_FILE
+               echo "/usr/local/lib" >> $LD_CONF_FILE
+               export LDCONFIG_NOTRIGGER=y
+               ldconfig 
+       else
+               DEBUG echo "Library paths already configured!"
+fi
+} #configure_ld()
+
+fix_osrf_perms()
+{
+DEBUG echo "Changing ownership of $OPENSRF_PREFIX (and everything in it) to opensrf..."
+mkdir -p $OPENSRF_PREFIX/var/run
+mkdir -p $OPENSRF_PREFIX/var/log
+mkdir -p $OPENSRF_PREFIX/var/lock
+chown -R opensrf:opensrf $OPENSRF_PREFIX
+}
+configure_opensrf_xml()
+{
+       db_get opensrf/ejabber_password
+       EJABBERPASS=$RET
+       cp -n $OPENSRF_PREFIX/conf/opensrf.xml.example $OPENSRF_PREFIX/conf/opensrf.xml
+       cp -n $OPENSRF_PREFIX/conf/opensrf_core.xml.example $OPENSRF_PREFIX/conf/opensrf_core.xml
+       cp -n $OPENSRF_PREFIX/conf/srfsh.xml.example $OPENSRF_PREFIX/conf/srfsh.xml
+       sed -i "s|d>password|d>$RET|g" $OPENSRF_PREFIX/conf/*.xml
+       cp -n $OPENSRF_PREFIX/conf/srfsh.xml /home/opensrf/.srfsh.xml && \
+       chown opensrf /home/opensrf/.srfsh.xml && chmod 600 /home/opensrf/.srfsh.xml
+        HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+       sed -i "s/<localhost>/<$HFQDN>/g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/<\/localhost>/<\/$HFQDN>/g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" $OPENSRF_PREFIX/conf/opensrf_core.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" /home/opensrf/.srfsh.xml
+
+
+}
+
+update_rcd()
+{
+       update-rc.d opensrf defaults > /dev/null
+}
+osrf_control_symlink()
+{
+       if [ -e /openils/bin/osrf_control ]
+       then
+               rm /openils/bin/osrf_control
+               ln -s /openils/bin/opensrf-perl.pl /openils/bin/osrf_control
+       else
+               ln -s /openils/bin/opensrf-perl.pl /openils/bin/osrf_control
+       fi
+}
+
+modify_hosts_file
+add_opensrf_user
+reconfigure_ejabberd
+register_ejabberd_users
+modify_apache
+configure_ld
+fix_osrf_perms
+configure_opensrf_xml
+osrf_control_symlink
+
+update_rcd
+#ldconfig
+db_stop
+DEBUG echo "Installation of OpenSRF completed!"
+#DEBUG echo "Starting OpenSRF:"
+echo "To start opensrf, run /etc/init.d/opensrf start"
+echo "Please make sure any pending network changes have taken place before attempting this"
+#/etc/init.d/opensrf start
+exit 0
diff --git a/files_for_build/postinst.cluster-14.04 b/files_for_build/postinst.cluster-14.04
new file mode 100755 (executable)
index 0000000..fa6eae1
--- /dev/null
@@ -0,0 +1,250 @@
+#!/bin/bash
+set -e
+set +x
+#TODO: insert license GPLv3 tag copyright gpls
+STANDALONE=1 # 
+#Can this be fetched from dpkg?
+OPENSRF_PREFIX="/openils"
+. /usr/share/debconf/confmodule
+HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+DEBUG()
+{
+       if [ $_DEBUG > 0 ]; then  $@;fi
+}
+modify_hosts_file() 
+{
+HOSTS_FILE_TAG="OPENSRF_DEB Addresses"
+if ! grep -q "$HOSTS_FILE_TAG" /etc/hosts
+       then 
+               cp -f /etc/hosts /etc/hosts.orig
+               DEBUG echo "Adding entries to /etc/hosts..."
+               sed -i "2i\#$HOSTS_FILE_TAG" /etc/hosts
+               sed -i "3i\127.0.1.2\tpublic.$HFQDN\tpublic #OPENSRF_DEB" /etc/hosts
+               sed -i "4i\127.0.1.3\tprivate.$HFQDN\tprivate #OPENSRF_DEB" /etc/hosts
+               sed -i '5i\ ' /etc/hosts
+       else
+               DEBUG echo "Hosts file has already been modified!"
+               
+fi
+} #modify_hosts_file()
+add_opensrf_user() {
+if ! grep -q "^opensrf:" /etc/passwd 
+       then
+               DEBUG echo "Opensrf user does not exist! Creating..."
+               if ! grep -q "x:2000" /etc/passwd; then
+                        useradd -m -s /bin/bash -u 2000 opensrf
+                else
+                        useradd -m -s /bin/bash opensrf
+                fi
+
+               db_get opensrf/user_password || true
+               PASS=$RET
+               tfile=`mktemp`
+               if [ ! -f "$tfile" ]; then
+                       echo "ERROR Creating temp file!"
+                       return 1
+               fi
+               
+               DEBUG echo "creating tmp pw file as $tfile"
+cat << EOF > $tfile
+opensrf:$PASS
+EOF
+DEBUG echo "about to change"
+               cat $tfile | chpasswd   
+DEBUG echo "about to rm"
+               rm $tfile
+               DEBUG echo "Set user opensrf's password"
+       else
+               DEBUG echo "Opensrf user already exists, so not doing anything!"
+               
+
+fi  
+
+
+
+if ! grep -q "$OPENSRF_PREFIX/bin" /home/opensrf/.bashrc
+       then
+               DEBUG echo "Adding path for opensrf user..."
+               sed -i "2i\export PATH=$OPENSRF_PREFIX/bin:\$PATH" /home/opensrf/.bashrc
+               sed -i '3i\export PERL5LIB=/openils/lib/perl5:$PERL5LIB' /home/opensrf/.bashrc
+       else
+               DEBUG echo "OpenSRF Path already added!"
+fi
+} #add_opensrf_user()
+
+#EJABBERD SECTION
+reconfigure_ejabberd()
+{
+if grep -q "^{hosts, \[\"localhost\"]}" /etc/ejabberd/ejabberd.cfg 
+       then
+               #TODO: make sure these values are current
+               DEBUG echo "Stock ejabberd detecting. Stopping and modifying config!"
+               EJABBERD_CONFIG_FILE="/etc/ejabberd/ejabberd.yml"
+               /etc/init.d/ejabberd stop
+               cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig
+               sed -i "s/^{hosts, \[\"localhost\"\]}/{hosts, [\"localhost\", \"private.$HFQDN\", \"public.$HFQDN\"]}/g" /etc/ejabberd/ejabberd.cfg
+               sed -i "s/max_user_sessions,\ \[{10,/max_user_sessions,\ \[{10000,/g" /etc/ejabberd/ejabberd.cfg
+               sed -i 's/{max_stanza_size, 65536}/{max_stanza_size, 2000000}/g' /etc/ejabberd/ejabberd.cfg
+               sed -i 's/{max_stanza_size, 131072}/{max_stanza_size, 2000000}/g' /etc/ejabberd/ejabberd.cfg
+               sed -i 's/{shaper, normal, {maxrate, 1000}}/{shaper, normal, {maxrate, 500000}}/g' /etc/ejabberd/ejabberd.cfg
+               sed -i 's/{shaper, fast, {maxrate, 50000}}/{shaper, fast, {maxrate, 500000}}/g' /etc/ejabberd/ejabberd.cfg
+               sed -i 's/{mod_offline/%%{mod_offline/g' /etc/ejabberd/ejabberd.cfg
+               chown ejabberd.ejabberd /etc/ejabberd/ejabberd.cfg
+               /etc/init.d/ejabberd start
+       else
+               DEBUG echo "Ejabberd has already been modified (or atleast the hosts line has). No Changes made."
+fi
+} #reconfigure_ejabberd()
+add_ejabber_user()
+{
+               USER=$1
+               HOST=$2
+               PASSWD=$3
+                if ! status=$(ejabberdctl register "$USER" "$HOST" "$PASSWD") ; then
+                    if echo $status | grep -q "already registered" ; then
+                       DEBUG echo "User \"$USER@$HOST\" is already registered. Password IS NOT changed."
+                    else
+                        echo "Can't register user \"$USER@$HOST\"."
+                    fi
+                else
+                    DEBUG echo "User \"$USER@$HOST\" is registered successfully."
+                fi
+
+
+}
+
+register_ejabberd_users()
+{
+#TODO: check the ejabberd scripts to make sure none of this code was borrowed from it. may need to rewrite the block to make sure it's on the level.
+    db_get opensrf/ejabber_password
+    EJABBER_PASS=$RET
+    #if [ -n "$USER" -a -n "$PASSWD" ]; then
+        DEBUG echo -n "Waiting for ejabberd to register admin user"
+
+        if ejabberdctl status >/dev/null || test $? = 1 ; then
+            # Ejabberd is starting ($? = 1) or running ($? = 0) already.
+            cnt=0
+            flag=1
+            while ! ejabberdctl status >/dev/null ; do
+                DEBUG echo -n "."
+                cnt=`expr $cnt + 1`
+                if [ $cnt -ge 60 ] ; then
+                    echo
+                    echo "Can't register Ejabberd users."
+                    echo -n "Ejabberd is taking too long to start!"
+                    flag=0
+                    break
+                fi
+                sleep 1
+            done
+
+            echo
+            if [ $flag -eq 1 ] ; then
+                       add_ejabber_user router private.$HFQDN $EJABBER_PASS
+                        add_ejabber_user opensrf private.$HFQDN $EJABBER_PASS
+                        add_ejabber_user router public.$HFQDN $EJABBER_PASS
+                        add_ejabber_user opensrf public.$HFQDN $EJABBER_PASS
+
+            fi
+        else
+            echo
+            echo "Can't register Ejabberd users!"
+            echo "Ejabberd server is not started."
+        fi
+} #register_ejabberd_users()
+
+
+#END EJABBERD SECTION
+
+modify_apache() 
+{
+#TODO: check license on Makefile.install to make sure it's compatible with ours.
+#CODE SOURCE: Makefile.install
+
+for m in ssl osrf_http_translator osrf_json_gateway; do a2enmod $m > /dev/null; done;
+# adds a placeholder module so apxs will be happy
+if [ ! "$(grep mod_placeholder /etc/apache2/httpd.conf)" ]; then 
+                echo -e "#\n#LoadModule mod_placeholder /usr/lib/apache2/modules/mod_placeholder.so" >> /etc/apache2/httpd.conf
+               /etc/init.d/apache2 restart
+        fi
+
+} #modify_apache()
+
+configure_ld() 
+{
+LD_CONF_FILE="/etc/ld.so.conf.d/osrf.conf"
+#TODO: decide if this should be opensrf.conf instead of an abbreviation.
+if ! test -e $LD_CONF_FILE
+       then
+               DEBUG echo "Confgiuring library paths..."
+               echo "$OPENSRF_PREFIX/lib" > $LD_CONF_FILE
+               echo "/usr/local/lib" >> $LD_CONF_FILE
+               export LDCONFIG_NOTRIGGER=y
+               ldconfig 
+       else
+               DEBUG echo "Library paths already configured!"
+fi
+} #configure_ld()
+
+fix_osrf_perms()
+{
+DEBUG echo "Changing ownership of $OPENSRF_PREFIX (and everything in it) to opensrf..."
+mkdir -p $OPENSRF_PREFIX/var/run
+mkdir -p $OPENSRF_PREFIX/var/log
+mkdir -p $OPENSRF_PREFIX/var/lock
+chown -R opensrf:opensrf $OPENSRF_PREFIX
+}
+configure_opensrf_xml()
+{
+       db_get opensrf/ejabber_password
+       EJABBERPASS=$RET
+       cp -n $OPENSRF_PREFIX/conf/opensrf.xml.example $OPENSRF_PREFIX/conf/opensrf.xml
+       cp -n $OPENSRF_PREFIX/conf/opensrf_core.xml.example $OPENSRF_PREFIX/conf/opensrf_core.xml
+       cp -n $OPENSRF_PREFIX/conf/srfsh.xml.example $OPENSRF_PREFIX/conf/srfsh.xml
+       sed -i "s|d>password|d>$RET|g" $OPENSRF_PREFIX/conf/*.xml
+       cp -n $OPENSRF_PREFIX/conf/srfsh.xml /home/opensrf/.srfsh.xml && \
+       chown opensrf /home/opensrf/.srfsh.xml && chmod 600 /home/opensrf/.srfsh.xml
+        HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+       sed -i "s/<localhost>/<$HFQDN>/g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/<\/localhost>/<\/$HFQDN>/g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" $OPENSRF_PREFIX/conf/opensrf_core.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" /home/opensrf/.srfsh.xml
+
+
+}
+
+update_rcd()
+{
+       update-rc.d opensrf defaults > /dev/null
+}
+osrf_control_symlink()
+{
+       if [ -e /openils/bin/osrf_control ]
+       then
+               rm /openils/bin/osrf_control
+               ln -s /openils/bin/opensrf-perl.pl /openils/bin/osrf_control
+       else
+               ln -s /openils/bin/opensrf-perl.pl /openils/bin/osrf_control
+       fi
+}
+
+modify_hosts_file
+add_opensrf_user
+reconfigure_ejabberd
+register_ejabberd_users
+modify_apache
+configure_ld
+fix_osrf_perms
+configure_opensrf_xml
+osrf_control_symlink
+
+update_rcd
+#ldconfig
+db_stop
+DEBUG echo "Installation of OpenSRF completed!"
+#DEBUG echo "Starting OpenSRF:"
+echo "To start opensrf, run /etc/init.d/opensrf start"
+echo "Please make sure any pending network changes have taken place before attempting this"
+#/etc/init.d/opensrf start
+exit 0
diff --git a/files_for_build/postinst.cluster-16.04 b/files_for_build/postinst.cluster-16.04
new file mode 100755 (executable)
index 0000000..e96efca
--- /dev/null
@@ -0,0 +1,272 @@
+#!/bin/bash
+set -e
+set +x
+#TODO: insert license GPLv3 tag copyright gpls
+STANDALONE=1 # 
+#Can this be fetched from dpkg?
+OPENSRF_PREFIX="/openils"
+. /usr/share/debconf/confmodule
+HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+DEBUG()
+{
+       if [ $_DEBUG > 0 ]; then  $@;fi
+}
+modify_hosts_file() 
+{
+HOSTS_FILE_TAG="OPENSRF_DEB Addresses"
+if ! grep -q "$HOSTS_FILE_TAG" /etc/hosts
+       then 
+               cp -f /etc/hosts /etc/hosts.orig
+               DEBUG echo "Adding entries to /etc/hosts..."
+               sed -i "2i\#$HOSTS_FILE_TAG" /etc/hosts
+               sed -i "3i\127.0.1.2\tpublic.$HFQDN\tpublic #OPENSRF_DEB" /etc/hosts
+               sed -i "4i\127.0.1.3\tprivate.$HFQDN\tprivate #OPENSRF_DEB" /etc/hosts
+               sed -i '5i\ ' /etc/hosts
+       else
+               DEBUG echo "Hosts file has already been modified!"
+               
+fi
+} #modify_hosts_file()
+add_opensrf_user() {
+if ! grep -q "^opensrf:" /etc/passwd 
+       then
+               DEBUG echo "Opensrf user does not exist! Creating..."
+               if ! grep -q "x:2000" /etc/passwd; then
+                        useradd -m -s /bin/bash -u 2000 opensrf
+                else
+                        useradd -m -s /bin/bash opensrf
+                fi
+
+               db_get opensrf/user_password || true
+               PASS=$RET
+               tfile=`mktemp`
+               if [ ! -f "$tfile" ]; then
+                       echo "ERROR Creating temp file!"
+                       return 1
+               fi
+               
+               DEBUG echo "creating tmp pw file as $tfile"
+cat << EOF > $tfile
+opensrf:$PASS
+EOF
+DEBUG echo "about to change"
+               cat $tfile | chpasswd   
+DEBUG echo "about to rm"
+               rm $tfile
+               DEBUG echo "Set user opensrf's password"
+       else
+               DEBUG echo "Opensrf user already exists, so not doing anything!"
+               
+
+fi  
+
+
+
+if ! grep -q "$OPENSRF_PREFIX/bin" /home/opensrf/.bashrc
+       then
+               DEBUG echo "Adding path for opensrf user..."
+               sed -i "2i\export PATH=$OPENSRF_PREFIX/bin:\$PATH" /home/opensrf/.bashrc
+               sed -i '3i\export PERL5LIB=/openils/lib/perl5:$PERL5LIB' /home/opensrf/.bashrc
+       else
+               DEBUG echo "OpenSRF Path already added!"
+fi
+} #add_opensrf_user()
+
+#EJABBERD SECTION
+reconfigure_ejabberd()
+{
+if grep -q "^{hosts, \[\"localhost\"]}" /etc/ejabberd/ejabberd.cfg 
+       then
+               #TODO: make sure these values are current
+               DEBUG echo "Stock ejabberd detecting. Stopping and modifying config!"
+               EJABBERD_CONFIG_FILE="/etc/ejabberd/ejabberd.yml"
+               /etc/init.d/ejabberd stop
+               cp /etc/ejabberd/ejabberd.yml /etc/ejabberd/ejabberd.yml.orig
+               #hosts
+               sed -i "/^  \- \"localhost\"/a \  \- \"private.$HFQDN\"" $EJABBERD_CONFIG_FILE
+               sed -i "/^  \- \"localhost\"/a \  \- \"public.$HFQDN\"" $EJABBERD_CONFIG_FILE
+
+               #max_user_sessions
+               sed -i 's/\<all: 10\>/all: 10000/g' $EJABBERD_CONFIG_FILE
+
+               #max_stanza_size
+               sed -i 's/max_stanza_size: 65536/max_stanza_size: 2000000/g' $EJABBERD_CONFIG_FILE
+
+               #shaper_normal
+               sed -i 's/normal: 1000/normal: 500000/g' $EJABBERD_CONFIG_FILE
+
+               #shaper_fast
+               sed -i 's/fast: 50000/fast: 500000/g' $EJABBERD_CONFIG_FILE
+
+               #mod_offline
+               sed -i 's/mod_offline:/#mod_offline:/g' $EJABBERD_CONFIG_FILE
+               sed -i 's/access_max_user_messages/#access_max_user_messages/g' $EJABBERD_CONFIG_FILE
+               
+               #auth_password_format
+               sed -i 's/auth_password_format: scram/auth_password_format: plain/g' $EJABBERD_CONFIG_FILE
+               #sed -i "s/^{hosts, \[\"localhost\"\]}/{hosts, [\"localhost\", \"private.$HFQDN\", \"public.$HFQDN\"]}/g" /etc/ejabberd/ejabberd.cfg
+               #sed -i "s/max_user_sessions,\ \[{10,/max_user_sessions,\ \[{10000,/g" /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{max_stanza_size, 65536}/{max_stanza_size, 2000000}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{max_stanza_size, 131072}/{max_stanza_size, 2000000}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{shaper, normal, {maxrate, 1000}}/{shaper, normal, {maxrate, 500000}}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{shaper, fast, {maxrate, 50000}}/{shaper, fast, {maxrate, 500000}}/g' /etc/ejabberd/ejabberd.cfg
+               #sed -i 's/{mod_offline/%%{mod_offline/g' /etc/ejabberd/ejabberd.cfg
+               chown ejabberd.ejabberd /etc/ejabberd/ejabberd.cfg
+               /etc/init.d/ejabberd start
+       else
+               DEBUG echo "Ejabberd has already been modified (or atleast the hosts line has). No Changes made."
+fi
+} #reconfigure_ejabberd()
+add_ejabber_user()
+{
+               USER=$1
+               HOST=$2
+               PASSWD=$3
+                if ! status=$(ejabberdctl register "$USER" "$HOST" "$PASSWD") ; then
+                    if echo $status | grep -q "already registered" ; then
+                       DEBUG echo "User \"$USER@$HOST\" is already registered. Password IS NOT changed."
+                    else
+                        echo "Can't register user \"$USER@$HOST\"."
+                    fi
+                else
+                    DEBUG echo "User \"$USER@$HOST\" is registered successfully."
+                fi
+
+
+}
+
+register_ejabberd_users()
+{
+#TODO: check the ejabberd scripts to make sure none of this code was borrowed from it. may need to rewrite the block to make sure it's on the level.
+    db_get opensrf/ejabber_password
+    EJABBER_PASS=$RET
+    #if [ -n "$USER" -a -n "$PASSWD" ]; then
+        DEBUG echo -n "Waiting for ejabberd to register admin user"
+
+        if ejabberdctl status >/dev/null || test $? = 1 ; then
+            # Ejabberd is starting ($? = 1) or running ($? = 0) already.
+            cnt=0
+            flag=1
+            while ! ejabberdctl status >/dev/null ; do
+                DEBUG echo -n "."
+                cnt=`expr $cnt + 1`
+                if [ $cnt -ge 60 ] ; then
+                    echo
+                    echo "Can't register Ejabberd users."
+                    echo -n "Ejabberd is taking too long to start!"
+                    flag=0
+                    break
+                fi
+                sleep 1
+            done
+
+            echo
+            if [ $flag -eq 1 ] ; then
+                       add_ejabber_user router private.$HFQDN $EJABBER_PASS
+                        add_ejabber_user opensrf private.$HFQDN $EJABBER_PASS
+                        add_ejabber_user router public.$HFQDN $EJABBER_PASS
+                        add_ejabber_user opensrf public.$HFQDN $EJABBER_PASS
+
+            fi
+        else
+            echo
+            echo "Can't register Ejabberd users!"
+            echo "Ejabberd server is not started."
+        fi
+} #register_ejabberd_users()
+
+
+#END EJABBERD SECTION
+
+modify_apache() 
+{
+#TODO: check license on Makefile.install to make sure it's compatible with ours.
+#CODE SOURCE: Makefile.install
+
+for m in ssl osrf_http_translator osrf_json_gateway; do a2enmod $m > /dev/null; done;
+# adds a placeholder module so apxs will be happy
+if [ ! "$(grep mod_placeholder /etc/apache2/httpd.conf)" ]; then 
+                echo -e "#\n#LoadModule mod_placeholder /usr/lib/apache2/modules/mod_placeholder.so" >> /etc/apache2/httpd.conf
+               /etc/init.d/apache2 restart
+        fi
+
+} #modify_apache()
+
+configure_ld() 
+{
+LD_CONF_FILE="/etc/ld.so.conf.d/osrf.conf"
+#TODO: decide if this should be opensrf.conf instead of an abbreviation.
+if ! test -e $LD_CONF_FILE
+       then
+               DEBUG echo "Confgiuring library paths..."
+               echo "$OPENSRF_PREFIX/lib" > $LD_CONF_FILE
+               echo "/usr/local/lib" >> $LD_CONF_FILE
+               export LDCONFIG_NOTRIGGER=y
+               ldconfig 
+       else
+               DEBUG echo "Library paths already configured!"
+fi
+} #configure_ld()
+
+fix_osrf_perms()
+{
+DEBUG echo "Changing ownership of $OPENSRF_PREFIX (and everything in it) to opensrf..."
+mkdir -p $OPENSRF_PREFIX/var/run
+mkdir -p $OPENSRF_PREFIX/var/log
+mkdir -p $OPENSRF_PREFIX/var/lock
+chown -R opensrf:opensrf $OPENSRF_PREFIX
+}
+configure_opensrf_xml()
+{
+       db_get opensrf/ejabber_password
+       EJABBERPASS=$RET
+       cp -n $OPENSRF_PREFIX/conf/opensrf.xml.example $OPENSRF_PREFIX/conf/opensrf.xml
+       cp -n $OPENSRF_PREFIX/conf/opensrf_core.xml.example $OPENSRF_PREFIX/conf/opensrf_core.xml
+       cp -n $OPENSRF_PREFIX/conf/srfsh.xml.example $OPENSRF_PREFIX/conf/srfsh.xml
+       sed -i "s|d>password|d>$RET|g" $OPENSRF_PREFIX/conf/*.xml
+       cp -n $OPENSRF_PREFIX/conf/srfsh.xml /home/opensrf/.srfsh.xml && \
+       chown opensrf /home/opensrf/.srfsh.xml && chmod 600 /home/opensrf/.srfsh.xml
+        HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+       sed -i "s/<localhost>/<$HFQDN>/g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/<\/localhost>/<\/$HFQDN>/g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" $OPENSRF_PREFIX/conf/opensrf_core.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" $OPENSRF_PREFIX/conf/opensrf.xml
+       sed -i "s/\.localhost</\.$HFQDN</g" /home/opensrf/.srfsh.xml
+
+
+}
+
+update_rcd()
+{
+       update-rc.d opensrf defaults > /dev/null
+}
+osrf_control_symlink()
+{
+       if [ -e /openils/bin/osrf_control ]
+       then
+               rm /openils/bin/osrf_control
+               ln -s /openils/bin/opensrf-perl.pl /openils/bin/osrf_control
+       else
+               ln -s /openils/bin/opensrf-perl.pl /openils/bin/osrf_control
+       fi
+}
+
+modify_hosts_file
+add_opensrf_user
+reconfigure_ejabberd
+register_ejabberd_users
+modify_apache
+configure_ld
+fix_osrf_perms
+configure_opensrf_xml
+osrf_control_symlink
+
+update_rcd
+#ldconfig
+db_stop
+DEBUG echo "Installation of OpenSRF completed!"
+#DEBUG echo "Starting OpenSRF:"
+echo "To start opensrf, run /etc/init.d/opensrf start"
+echo "Please make sure any pending network changes have taken place before attempting this"
+#/etc/init.d/opensrf start
+exit 0
diff --git a/files_for_build/postrm b/files_for_build/postrm
new file mode 100755 (executable)
index 0000000..6927aad
--- /dev/null
@@ -0,0 +1,75 @@
+#! /bin/sh
+#TODO: insert license tag for gplv3 copyright gpls
+set -e
+
+OPENSRF_PREFIX=/openils
+OPENSRF_CONFIG_TARGET=$OPENSRF_PREFIX/conf
+HFQDN=$(perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";')
+
+
+if [ -f /usr/share/debconf/confmodule ]; then
+    . /usr/share/debconf/confmodule
+fi
+case "$1" in
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    purge)
+
+
+
+#########TODO: look into 'ucf' for managing the config files
+# i.e. this was taken from the ejabberd scripts as an example:
+#      if which ucf >/dev/null ; then
+#          ucf --purge $EJABBER_CONFIG_TARGET
+#      fi
+
+#until then, do it the ugly way:
+       rm -Rf $OPENSRF_CONFIG_TARGET || true
+       rm -Rf $OPENSRF_PREFIX || true
+
+
+       if which deluser >/dev/null ; then
+           deluser opensrf >/dev/null 2>&1 || true
+           delgroup opensrf >/dev/null 2>&1 || true
+           [ -e /home/opensrf ] && rm -rf /home/opensrf || true
+       fi
+       sed -i '/#OPENSRF_DEB/d' /etc/hosts
+       ejabberdctl unregister router private.$HFQDN
+       ejabberdctl unregister opensrf private.$HFQDN
+       ejabberdctl unregister router public.$HFQDN
+       ejabberdctl unregister opensrf public.$HFQDN
+       [ -e /etc/ejabberd/ejabberd.cfg.orig ] && \
+       mv -f /etc/ejabberd/ejabberd.cfg.orig /etc/ejabberd/ejabberd.cfg && \
+       chown ejabberd /etc/ejabberd/ejabberd.cfg
+       /etc/init.d/ejabberd restart
+       rm /etc/ld.so.conf.d/osrf.conf
+       ldconfig
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+# Automatically added by dh_installinit
+if [ "$1" = "purge" ] || [ "$1" = "remove" ]; then
+       update-rc.d eg_opensrf remove
+fi
+# End automatically added section
+# Automatically added by dh_installdebconf
+if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
+       #. /usr/share/debconf/confmodule
+       echo purging database
+       db_purge
+fi
+echo purged database
+# End automatically added section
+
+db_stop
+
+exit 0
diff --git a/files_for_build/prerm b/files_for_build/prerm
new file mode 100755 (executable)
index 0000000..d527323
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+#TODO: insert license GPLv3 tag copyright gpls
+
+set -e
+
+if [ -f /usr/share/debconf/confmodule ]; then
+    . /usr/share/debconf/confmodule
+fi
+
+/etc/init.d/opensrf stop || true
diff --git a/files_for_build/rules b/files_for_build/rules
new file mode 100755 (executable)
index 0000000..cbdcd64
--- /dev/null
@@ -0,0 +1,28 @@
+#!/usr/bin/make -f
+#TODO: insert license GPLv3 tag copyright gpls
+
+
+export DH_VERBOSE=1
+export DEB_CFLAGS_MAINT_APPEND= -Wno-error=format-security
+
+%:
+       dh $@ 
+override_dh_auto_configure:
+       autoreconf -ivf
+       ./configure --prefix=/openils --sysconfdir=/openils/conf
+       #TACOS FOR LUNCH!
+override_dh_usrlocal:
+       echo "Skipping dh_usrlocal!"
+
+override_dh_prep:
+       rm -f debian/opensrf.substvars
+       rm -f debian/opensrf.*.debhelper
+override_dh_auto_install:
+       dh_auto_install
+       #mv ./debian/opensrf/usr/local/share/perl/5.10.1/lib/perl5/* ./debian/opensrf/usr/local/share/perl/5.10.1/
+       #/home/opensrf/develop/opensrf-cluster/2.0.1/opensrf-2.0.1
+       #/debian/opensrf/usr/local/share/perl/5.10.1/lib/perl5/OpenSRF/Utils/Logger.pm^M
+override_dh_install:
+       mkdir -p debian/opensrf/etc/apache2/mods-available/
+       echo "LoadModule osrf_http_translator_module /usr/lib/apache2/modules/osrf_http_translator.so" > "debian/opensrf/etc/apache2/mods-available/osrf_http_translator.load"  
+       echo "LoadModule osrf_json_gateway_module /usr/lib/apache2/modules/osrf_json_gateway.so" > "debian/opensrf/etc/apache2/mods-available/osrf_json_gateway.load"
diff --git a/files_for_build/templates b/files_for_build/templates
new file mode 100644 (file)
index 0000000..724d74c
--- /dev/null
@@ -0,0 +1,59 @@
+Template: opensrf/user_password
+Type: password
+Description: The password for user account opensrf:
+ Please provide the password for the opensrf Linux account. 
+ You will log into the system as user opensrf with this password
+
+Template: opensrf/verify_user_password
+Type: password
+Description: The password for user account opensrf:
+ Please reenter the password for the opensrf user for verification.
+
+Template: opensrf/ejabber_pub_router_pw
+Type: password
+Description: The password for the public router user:
+ Please enter the password for the public router user in ejabberd.
+
+Template: opensrf/ejabber_priv_router_pw
+Type: password
+Description: The password for the private router user:
+ Please enter the password for the private router user in ejabberd.
+
+Template: opensrf/ejabber_pub_opensrf_pw
+Type: password
+Description: The password for the public opensrf user:
+ Please enter the password for the public opensrf user in ejabberd.
+
+Template: opensrf/ejabber_priv_opensrf_pw
+Type: password
+Description: The password for the private opensrf user:
+ Please enter the password for the private opensrf user in ejabberd.
+
+Template: opensrf/ejabber_password
+Type: password
+Description: The password for opensrf within EJabberd:
+ Please provide the password for the opensrf and router users within Ejabberd.
+ You will use these crendentials within opensrf.xml.
+
+Template: opensrf/verify_ejabber_password
+Type: password
+Description: The password for opensrf within EJabberd:
+ Please reenter the password for the opensrf and router users within Ejabberd.
+ You will use these crendentials within opensrf.xml.
+
+Template: opensrf/fqdn
+Type: string
+Description: The fully qualified domain name to use:
+ Please enter the fully qualified domain name to use.
+ This will be used within the various opensrf config files.
+
+Template: opensrf/user_nomatch
+Type: error
+Description: The passwords do not match!
+ The passwords you have typed do not match. Please try again.
+
+Template: opensrf/ejabber_nomatch
+Type: error
+Description: The passwords do not match!
+ The passwords you have typed do not match. Please try again.
+