revision-diff.txt (109 KB)
Please don’t try and use this yet … I have just discovered bzr clobbers all the correct file permissions which causes a bad deb to be created.
The only solution to this will be to have a script to “manually” fix all the permissions after checking out from bzr. hopefully will get that fixed today.
···
On 28 May 2013 07:07, noreply@launchpad.net wrote:
revno: 11048
committer: Bob Jolliffe bobjolliffe@gmail.com
branch nick: dhis2
timestamp: Tue 2013-05-28 13:06:12 +0100
message:
dhis2-tools ubuntu debian package - WIP
added:
tools/dhis2-tools-deb/
tools/dhis2-tools-deb/.bzrignore
tools/dhis2-tools-deb/Makefile
tools/dhis2-tools-deb/assemble.sh
tools/dhis2-tools-deb/docs/
tools/dhis2-tools-deb/docs/Makefile
tools/dhis2-tools-deb/docs/manual.xml
tools/dhis2-tools-deb/install.sh
tools/dhis2-tools-deb/pkg/
tools/dhis2-tools-deb/pkg/DEBIAN/
tools/dhis2-tools-deb/pkg/DEBIAN/conffiles
tools/dhis2-tools-deb/pkg/DEBIAN/control
tools/dhis2-tools-deb/pkg/DEBIAN/postinst
tools/dhis2-tools-deb/pkg/DEBIAN/postrm
tools/dhis2-tools-deb/pkg/DEBIAN/preinst
tools/dhis2-tools-deb/pkg/etc/
tools/dhis2-tools-deb/pkg/etc/sudoers.d/
tools/dhis2-tools-deb/pkg/etc/sudoers.d/dhis2
tools/dhis2-tools-deb/pkg/usr/
tools/dhis2-tools-deb/pkg/usr/bin/
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-backup
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-create-admin
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-deploy-stable
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-instance-create
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-logview
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-nginx
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-restoredb
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-shutdown
tools/dhis2-tools-deb/pkg/usr/bin/dhis2-startup
tools/dhis2-tools-deb/pkg/usr/share/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/doc/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/doc/copyright
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/dhis2-ssl
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/http-redirect
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/nginx/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/nginx/dhis2
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/backups/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/bin/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/bin/setenv.sh
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/Catalina/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/catalina.properties
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/context.xml
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/logging.properties
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/logrotate.conf
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/server.xml
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/tomcat-users.xml
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/web.xml
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/lib/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/logs/
tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/webapps/
tools/dhis2-tools-deb/pkg/usr/share/doc/
tools/dhis2-tools-deb/pkg/usr/share/doc/dhis2-tools/
tools/dhis2-tools-deb/pkg/usr/share/doc/dhis2-tools/changelog.gz
tools/dhis2-tools-deb/pkg/usr/share/doc/dhis2-tools/copyright
tools/dhis2-tools-deb/pkg/usr/share/man/
tools/dhis2-tools-deb/pkg/usr/share/man/man1/
tools/dhis2-tools-deb/pkg/var/
tools/dhis2-tools-deb/pkg/var/lib/
tools/dhis2-tools-deb/pkg/var/lib/dhis2/
tools/dhis2-tools-deb/pkg/var/log/
tools/dhis2-tools-deb/pkg/var/log/dhis2/
modified:
dhis-2/dhis-services/dhis-service-importexport/src/main/resources/transform/gml2dxf.xsl
dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/exp/ExportDataMartAction.java
–
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file ‘dhis-2/dhis-services/dhis-service-importexport/src/main/resources/transform/gml2dxf.xsl’
— dhis-2/dhis-services/dhis-service-importexport/src/main/resources/transform/gml2dxf.xsl 2011-10-28 12:24:59 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/resources/transform/gml2dxf.xsl 2013-05-28 12:06:12 +0000
@@ -38,7 +38,7 @@
<id>0</id> <uuid/> <name><xsl:value-of select="$name"/></name>
- <xsl:value-of select=“$name”/>
<xsl:value-of select=“substring($name,1,50)”/>
=== modified file ‘dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/exp/ExportDataMartAction.java’
— dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/exp/ExportDataMartAction.java 2011-12-26 10:07:59 +0000
+++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/exp/ExportDataMartAction.java 2013-05-28 12:06:12 +0000
@@ -65,6 +65,9 @@
// TODO: experiment with different sizes for this to stop data dribbling out private static final int GZIPBUFFER = 8192;
// dummy figure to keep legacy mydatamart happy
private static final int DUMMYCOUNT = 100000;
private static final Log log = LogFactory.getLog( ExportDataMartAction.class ); private static final DateFormat dateFormat = new SimpleDateFormat( "yyyyMMdd" );
@@ -233,8 +236,12 @@
OutputStream out = null; // how many rows do we expect
int count = exportPivotViewService.count( requestType, pType, start, end, dataSourceLevel, dataSourceRoot );
// int count = exportPivotViewService.count( requestType, pType, start, end, dataSourceLevel, dataSourceRoot );
// Turns out it is too expensive to count the size of the resultset on large datamarts
// so we just return a dummy value here
int count = DUMMYCOUNT;
ContextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_GZIP, true, filename, true ); // write number of rows to custom header
=== added directory ‘tools/dhis2-tools-deb’
=== added file ‘tools/dhis2-tools-deb/.bzrignore’
— tools/dhis2-tools-deb/.bzrignore 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/.bzrignore 2013-05-28 12:06:12 +0000
@@ -0,0 +1,2 @@
+*.deb
+*~
=== added file ‘tools/dhis2-tools-deb/Makefile’
— tools/dhis2-tools-deb/Makefile 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/Makefile 2013-05-28 12:06:12 +0000
@@ -0,0 +1,17 @@
+TARGET=dhis2-tools_1.0-0ubuntu1_all.deb
+all: deb test
+deb: doc
./assemble.sh $(TARGET)
+doc:
cd docs; make; cd ..
+test:
lintian $(TARGET)
+clean:
rm -f $(TARGET)
rm -rf *~
cd docs; make clean; cd ..
=== added file ‘tools/dhis2-tools-deb/assemble.sh’
— tools/dhis2-tools-deb/assemble.sh 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/assemble.sh 2013-05-28 12:06:12 +0000
@@ -0,0 +1,10 @@
+#!/bin/bash
+cd ./pkg
+find . -iname *~ -exec rm ‘{}’ ‘;’
+find . -type f ! -regex ‘..hg.’ ! -regex ‘.?debian-binary.’ ! -regex ‘.?DEBIAN.’ -printf '%P ’ | xargs md5sum > DEBIAN/md5sums
+chmod 644 DEBIAN/md5sums
+cd …
+fakeroot dpkg -b ./pkg $1
=== added directory ‘tools/dhis2-tools-deb/docs’
=== added file ‘tools/dhis2-tools-deb/docs/Makefile’
— tools/dhis2-tools-deb/docs/Makefile 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/docs/Makefile 2013-05-28 12:06:12 +0000
@@ -0,0 +1,8 @@
+man: manual.xml
docbook2x-man manual.xml
gzip -f -9 *.1
cp -f *.1.gz ../pkg/usr/share/man/man1
chmod 0644 ../pkg/usr/share/man/man1/*
+clean:
rm -f *.gz
=== added file ‘tools/dhis2-tools-deb/docs/manual.xml’
— tools/dhis2-tools-deb/docs/manual.xml 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/docs/manual.xml 2013-05-28 12:06:12 +0000
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC “-//OASIS//DTD DocBook XML V4.5//EN”
"[http://www.docbook.org/xml/4.5/docbookx.dtd](http://www.docbook.org/xml/4.5/docbookx.dtd)">
+
- DHIS2 server tools manual
<firstname>Bob</firstname>
<surname>Jolliffe</surname>
- Overview
Installing and managing DHIS2.
- DHIS2 tools
<refmeta>
<refentrytitle>dhis2-instance-create</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>dhis2-instance-create</refname>
<refpurpose>Creates a new dhis2 instance</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>/usr/bin/dhis2-instance-create</command>
<arg choice="opt">
<option>OPTIONS</option>
</arg>
<arg choice="plain">name</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>Use this tool to create a new dhis2 instance in a tomcat container.</para>
</refsect1>
<refsect1>
<title>OPTIONS</title>
<variablelist>
<varlistentry>
<term>-p</term>
<listitem><para>http port</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Examples</title>
<para>Create it like this</para>
</refsect1>
<refmeta>
<refentrytitle>dhis2-startup</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>dhis2-startup</refname>
<refpurpose>Starts a dhis2 instance</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>/usr/bin/dhis2-startup</command>
<arg choice="opt">instance name</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>Start a dhis2 instance</para>
</refsect1>
<refsect1>
<title>Examples</title>
<para>dhis2-startup myInstance</para>
</refsect1>
<refmeta>
<refentrytitle>dhis2-shutdown</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>dhis2-shutdown</refname>
<refpurpose>Stops a dhis2 instance</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>/usr/bin/dhis2-shutdown</command>
<arg choice="opt">instance name</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>Stop a dhis2 instance</para>
</refsect1>
<refsect1>
<title>Examples</title>
<para>dhis2-shutdown myInstance</para>
</refsect1>
<refmeta>
<refentrytitle>dhis2-deploy-stable</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>dhis2-deploy-stable</refname>
<refpurpose>Deploys a war file</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>/usr/bin/dhis2-deploy-stable</command>
<arg choice="opt">instance name</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>Deploys the latest stable dhis2 war file from [http://stable.dhis2.org](http://stable.dhis2.org).</para>
</refsect1>
<refsect1>
<title>Examples</title>
<para>dhis2-deploy-stable myInstance</para>
</refsect1>
<refmeta>
<refentrytitle>dhis2-logview</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>dhis2-logview</refname>
<refpurpose>Shows log file</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>/usr/bin/dhis2-logview</command>
<arg choice="opt">instance name</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>Use this tool to view log of dhis2 instance using less.</para>
</refsect1>
<refsect1>
<title>Examples</title>
<para>dhis2-logview myInstance</para>
</refsect1>
<refmeta>
<refentrytitle>dhis2-create-admin</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>dhis2-create-admin</refname>
<refpurpose>Create a user for administering dhis2 instances</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>/usr/bin/dhis2-create-admin</command>
<arg choice="opt">username</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>Creates a new dhis2 admin user. If the specified user does not exist, she will be
created on the system. Otherwise an existing user is modified. The dhis2 admin user will
have postgres superuser privileges and wil be a member of the dhis2admin group. </para>
</refsect1>
<refsect1>
<title>Examples</title>
<para>Create it like this</para>
</refsect1>
+
=== added file ‘tools/dhis2-tools-deb/install.sh’
— tools/dhis2-tools-deb/install.sh 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/install.sh 2013-05-28 12:06:12 +0000
@@ -0,0 +1,12 @@
+#!/bin/sh
+# set -e
+# need to use a ppa for postgres 9.2 and nginx
+sudo apt-get -y install python-software-properties -y
+sudo add-apt-repository ppa:pitti/postgresql -y
+sudo add-apt-repository ppa:nginx/stable -y
+sudo apt-get -y update
+# install the dhis2-tools deb
+dpkg -i dhis2-tools*
+apt-get -y install -f
=== added directory ‘tools/dhis2-tools-deb/pkg’
=== added directory ‘tools/dhis2-tools-deb/pkg/DEBIAN’
=== added file ‘tools/dhis2-tools-deb/pkg/DEBIAN/conffiles’
— tools/dhis2-tools-deb/pkg/DEBIAN/conffiles 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/DEBIAN/conffiles 2013-05-28 12:06:12 +0000
@@ -0,0 +1,1 @@
+/etc/sudoers.d/dhis2
=== added file ‘tools/dhis2-tools-deb/pkg/DEBIAN/control’
— tools/dhis2-tools-deb/pkg/DEBIAN/control 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/DEBIAN/control 2013-05-28 12:06:12 +0000
@@ -0,0 +1,14 @@
+Package: dhis2-tools
+Source: dhis2-tools
+Version: 1.0
+Architecture: all
+Maintainer: DHIS2 developers dhis2-devs@lists.launchpad.net
+Installed-Size: 236
+Depends: openjdk-7-jdk,tomcat7-common (>= 7.0.26-1ubuntu1.1),netcat,nginx,ttf-liberation,libtcnative-1,makepasswd,postgresql-9.2
+Section: java
+Priority: optional
+Homepage: http://launchpad.net/dhis2
+Description: Tools for managing dhis2 on ubuntu
This package contains a set of tools to assist with
the installation and maintenance of the dhis2 (http://dhis2.org)
software on ubuntu server.
=== added file ‘tools/dhis2-tools-deb/pkg/DEBIAN/postinst’
— tools/dhis2-tools-deb/pkg/DEBIAN/postinst 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/DEBIAN/postinst 2013-05-28 12:06:12 +0000
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -e
+echo “create group for dhis instances and group for dhis admins”
+addgroup dhis2admin 2>/dev/null || { echo “dhis2admin group exists”; }
+addgroup dhis2 2>/dev/null || { echo “dhis2 group exists”; }
+# echo “apache module setup”
+# a2enmod rewrite headers proxy_ajp disk_cache ssl
+exit 0
=== added file ‘tools/dhis2-tools-deb/pkg/DEBIAN/postrm’
— tools/dhis2-tools-deb/pkg/DEBIAN/postrm 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/DEBIAN/postrm 2013-05-28 12:06:12 +0000
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+# remove dhis2 user groups
+delgroup dhis2 2>dev/null || { echo “dhis2 group doesn’t exist”; }
+delgroup dhis2admin 2>/dev/null || { echo “dhis2admin group doesn’t exist”; }
=== added file ‘tools/dhis2-tools-deb/pkg/DEBIAN/preinst’
— tools/dhis2-tools-deb/pkg/DEBIAN/preinst 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/DEBIAN/preinst 2013-05-28 12:06:12 +0000
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+echo “Some preinstallation tasks …”
+exit 0
=== added directory ‘tools/dhis2-tools-deb/pkg/etc’
=== added directory ‘tools/dhis2-tools-deb/pkg/etc/sudoers.d’
=== added file ‘tools/dhis2-tools-deb/pkg/etc/sudoers.d/dhis2’
— tools/dhis2-tools-deb/pkg/etc/sudoers.d/dhis2 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/etc/sudoers.d/dhis2 2013-05-28 12:06:12 +0000
@@ -0,0 +1,10 @@
+# sudoers file for dhis2 admins
+Cmnd_Alias DHIS2CREATE = /usr/bin/dhis2-instance-create
+Cmnd_Alias DHIS2PROGS = /usr/bin/dhis2-*
+Runas_Alias DHIS2USERS = %dhis2
+# Dhis2 admins can run dhis2-instance-create as root
+%dhis2admin ALL=(root)NOPASSWD:DHIS2CREATE,/usr/sbin/useradd
+# Dhis2 admins can run all dhis2 progs as the dhis2 instance user
+%dhis2admin ALL=(DHIS2USERS) ALL
=== added directory ‘tools/dhis2-tools-deb/pkg/usr’
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/bin’
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-backup’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-backup 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-backup 2013-05-28 12:06:12 +0000
@@ -0,0 +1,73 @@
+#!/usr/bin/env bash
+#########################################################
+# postgres backup script v1.2
+# author: Bob Jolliffe
+# licence: public domain
+#
+# using some ideas from
+# http://wiki.postgresql.org/wiki/Automated_Backup_on_Linux
+#########################################################
+BACKUP_DIR=~/backups/
+# REMOTE="ghbackup@178.79.143.102:./dhis"
+USER=$USER
+DBNAME=$USER
+# Keep Sunday’s backup
+DAY_OF_WEEK_TO_KEEP=7
+WEEKS_TO_KEEP=6
+DAYS_TO_KEEP=7
+EXCLUDED=“-T aggregated* -T analytics* -T completeness*”
+function perform_backups()
+{
SUFFIX=$1
FINAL_BACKUP_DIR=$BACKUP_DIR/backup"
date +\%Y-\%m-\%d
$SUFFIX/"if ! mkdir -p $FINAL_BACKUP_DIR; then
echo "`date` Cannot create backup directory in $FINAL_BACKUP_DIR. Go and fix it!"
exit 1;
fi;
if ! pg_dump -O -Fp $DBNAME $EXCLUDED | gzip > $FINAL_BACKUP_DIR"$DBNAME".sql.gz.in_progress; then
echo "`date` [!!ERROR!!] Failed to produce plain backup of database $DBNAME"
else
mv $FINAL_BACKUP_DIR"$DBNAME".sql.gz.in_progress $FINAL_BACKUP_DIR"$DBNAME".sql.gz
sync to remote server
rsync -avq $BACKUP_DIR $REMOTE
fi
+}
+# MONTHLY BACKUPS
+DAY_OF_MONTH=
date +%d
+if [ $DAY_OF_MONTH = “01” ];
+then
# Delete all expired monthly directories
find $BACKUP_DIR -maxdepth 1 -name "*-monthly" -exec rm -rf '{}' ';'
perform_backups "-monthly"
exit 0;
+fi
+# WEEKLY BACKUPS
+DAY_OF_WEEK=
date +%u
#1-7 (Monday-Sunday)+EXPIRED_DAYS=
expr $((($WEEKS_TO_KEEP * 7) + 1))
+if [ $DAY_OF_WEEK = $DAY_OF_WEEK_TO_KEEP ];
+then
# Delete all expired weekly directories
find $BACKUP_DIR -maxdepth 1 -mtime +$EXPIRED_DAYS -name "*-weekly" -exec rm -rf '{}' ';'
perform_backups "-weekly"
exit 0;
+fi
+# Delete daily backups 7 days old or more
+find $BACKUP_DIR -maxdepth 1 -mtime +$DAYS_TO_KEEP -name “*-daily” -exec rm -rf ‘{}’ ‘;’
+perform_backups “-daily”
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-create-admin’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-create-admin 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-create-admin 2013-05-28 12:06:12 +0000
@@ -0,0 +1,26 @@
+#!/bin/sh
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# DHIS2 instance log viewer
+if [ “$#” -ne 1 ]; then
echo “usage: dhis2-create-admin ”
exit 1
+fi
+ADMINUSER=$1
+# if user doesn’t exist, create
+id -u $ADMINUSER >/dev/null 2>&1 || {
- sudo adduser $ADMINUSER
+}
+# give user superuser access to postgres
+sudo -u postgres dropuser $ADMINUSER 2>/dev/null || { echo “Creating new postgresql role”; }
+sudo -u postgres createuser -s $ADMINUSER
+# join the dhis2admin group
+sudo usermod -a -G dhis2admin $ADMINUSER
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-deploy-stable’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-deploy-stable 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-deploy-stable 2013-05-28 12:06:12 +0000
@@ -0,0 +1,25 @@
+#!/bin/sh
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# DHIS2 instance startup script
+set -e
+if [ “$#” -ne 1 ]; then
echo “usage: dhis2-deploy-stable ”
exit 1
+fi
+INSTANCE=$1
+DHIS2STABLE=“http://stable.dhis2.org”
+dhis2-shutdown $INSTANCE 2>/dev/null || { echo $INSTANCE not running; }
+# clean out existing webapps
+sudo -u $INSTANCE rm -rf /var/lib/dhis2/$INSTANCE/webapps/* 1>/dev/null 2>&1 || { echo “No $INSTANCE webapps”; exit 1; }
+# get the latest stable dhis.war
+sudo -u $INSTANCE wget -O /var/lib/dhis2/$INSTANCE/webapps/$INSTANCE.war $DHIS2STABLE
+dhis2-startup $INSTANCE
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-instance-create’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-instance-create 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-instance-create 2013-05-28 12:06:12 +0000
@@ -0,0 +1,167 @@
+#!/bin/bash
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# Script to deploy a dhis2 instance
+set -e
+#############################################################
+# the user who is running the deploy script
+# should be in dhis2admin group
+if [[ “$(groups $USER)” =~ dhis2admin ]]
+then
- echo “Good. User is in dhis2admin group”
+else
echo “$USER is not in dhis2admin group. You must be in the dhis2admin group to deploy a new instance”
exit 1
+fi
+##############################################################
+# variables and default values
+DHIS2BASEDIR=/var/lib/dhis2
+DHIS2SKEL=/usr/share/dhis2-tools/skel
+PROG=
basename $0
+HTTPPORT=8080
+CREATEDB=true
+###############################################################
+usage() {
echo “Usage: $PROG [options] ”
echo " instance: name of the dhis2 instance to create"
echo “Options:”
echo " -h, --help Display this help message"
echo " -n Do NOT create database for instance"
echo " -p httpport HTTP port to be used by Tomcat (default is $HTTPPORT)"
+}
+###############################################################
+checkport() {
type=$1
port=$2
echo “Checking $type port $port”
Fail if port is non-numeric
num=
expr ${port} + 1 2> /dev/null
if [ $? != 0 ] || [ $num -lt 2 ]; then
echo “Error: ${type} port ‘${port}’ is not a valid TCP port number.”
exit 1
fi
Fail if port is above 65535
if [ ${port} -gt 65535 ]; then
echo “Error: ${type} port ${port} is above TCP port numbers (> 65535).”
exit 1
fi
Fail if port is below 1024
if [ ${port} -lt 1024 ]; then
echo “Error: ports below 1024 are reserved to the super-user.”
exit 1
fi
Fail if port appears to be in use
if nc localhost “${port}” -z > /dev/null; then
echo “Error: ${type} port ${port} appears to be in use.”
exit 1
fi
+}
+###############################################################
+# main entry point
+echo checking options
+while getopts p:nh opt
+do
case $opt in
p) HTTPPORT=$OPTARG ;;
n) CREATEDB=false ;;
h) usage;;
*) echo “Error: Unknown parameter ‘$OPTARG’.”
exit 1;;
esac
+done
+shift $(($OPTIND - 1))
+if [ “$#” -lt 1 ]; then
usage
exit 1
+fi
+if [ “$1” = “-h” ] || [ “$1” = “–help” ]; then
usage
exit 0
+fi
+TARGET=$1
+# TODO: parameterize database name
+DBNAME=$TARGET
+DHIS2HOME=$DHIS2BASEDIR/$TARGET
+# Fail if no target specified
+if [ -z “${TARGET}” ]; then
echo “Error: No Dhis2 instance name specified”
exit 1
+fi
+echo “You are about to create a Dhis2 instance called ‘$TARGET’”
+###############################################################
+# perform some checks before doing anything
+id -u $TARGET >/dev/null 2>&1 && { echo “User $TARGET already exists”; exit 1; }
+checkport HTTP “$HTTPPORT”
+if $CREATEDB; then
- sudo -u postgres psql $DBNAME -c ‘\q’ >/dev/null 2>&1 && { echo “Database $DBNAME exists”; exit 1; }
+fi
+###############################################################
+# Right, we should be good to go …
+# create the system user
+sudo useradd -m -s /bin/bash -b $DHIS2BASEDIR -c “$TARGET dhis2 instance” -g dhis2 -k $DHIS2SKEL $TARGET
+# create the database user with a strong password
+PASSWORD=$(makepasswd --chars=10)
+sudo -u postgres psql -c “CREATE ROLE $TARGET PASSWORD ‘$PASSWORD’ NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN;”
+if $CREATEDB; then
Create the database
sudo -u postgres psql -c “CREATE DATABASE $DBNAME OWNER $TARGET ENCODING ‘UTF-8’ TEMPLATE template0;”
sudo -u postgres psql -c “GRANT ALL ON DATABASE $DBNAME TO $TARGET;”
+fi
+sudo -u $TARGET sh -c “cat > $DHIS2HOME/hibernate.properties” << EOT
+hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
+hibernate.connection.driver_class = org.postgresql.Driver
+hibernate.connection.url = jdbc:postgresql://localhost:5432/$DBNAME
+hibernate.connection.username = $TARGET
+hibernate.connection.password = $PASSWORD
+hibernate.hbm2ddl.auto = update
+EOT
+sudo -u $TARGET chmod 0600 $DHIS2HOME/hibernate.properties
+sudo -u $TARGET sed -i s/HTTPPORT/$HTTPPORT/ $DHIS2HOME/conf/server.xml
+sudo -u $TARGET sh -c “cat > $DHIS2HOME/logrotate.conf” << EOT
+$DHIS2HOME/logs/catalina.out {
rotate 24
dateext
monthly
create
compress
copytruncate
noolddir
+}
+EOT
+###############################################################
+# setup user crontab
+sudo -u $TARGET sh -c “crontab -u $TARGET -” << EOT
+@reboot /usr/bin/dhis2-startup $TARGET
+20 19 * * * /usr/bin/dhis2_backup $TARGET
+21 00 * * * /usr/sbin/logrotate -s $DHIS2HOME/logrotate.status $DHIS2HOME/logrotate.conf
+EOT
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-logview’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-logview 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-logview 2013-05-28 12:06:12 +0000
@@ -0,0 +1,17 @@
+#!/bin/sh
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# DHIS2 instance log viewer
+if [ “$#” -ne 1 ]; then
echo “usage: dhis2-logview ”
exit 1
+fi
+INSTANCE=$1
+sudo -u $INSTANCE less /var/lib/dhis2/$INSTANCE/logs/catalina.out
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-nginx’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-nginx 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-nginx 2013-05-28 12:06:12 +0000
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# DHIS2 instance startup script
+if [ “$#” -lt 1 ]; then
echo “No conf file specifiied - using default”
CONFFILE=/usr/share/dhis2-tools/samples/nginx/dhis2
+else
- CONFFILE=$1
+fi
+BASE=$(basename $CONFFILE)
+# nginx setup
+echo “setting up nginx with $CONFFILE”
+[[ -e /etc/nginx/sites-available/$BASE ]] && { echo “/etc/nginx/sites-available/$BASE already exists”; exit 1; }
+cp $CONFFILE /etc/nginx/sites-available
+unlink /etc/nginx/sites-enabled/* || { echo “no nginx sites configured”; }
+ln -s /etc/nginx/sites-available/$BASE /etc/nginx/sites-enabled/$BASE
+/etc/init.d/nginx restart
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-restoredb’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-restoredb 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-restoredb 2013-05-28 12:06:12 +0000
@@ -0,0 +1,34 @@
+#!/bin/bash
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# Script to restore a database dump
+set -e
+if [ “$#” -ne 2 ]; then
echo “usage: dhis2-restoredb ”
exit 1
+fi
+DHIS2_USER=$INSTANCE
+DHIS2_DB=$INSTANCE
+DHIS2_BASE=/var/lib/dhis2/$DHIS2_USER
+BACKUP=$DHIS2_BASE/backup/snapshot_$(date +%Y%m%d%M%S).sql.bz2
+# stop tomcat and take a snapshot backup of the current database before doing anything
+dhis2-shutdown $INSTANCE
+sudo -u postgres pg_dump -O $INSTANCE | bzip2 > $BACKUP
+# drop and recreate a new blank database
+sudo -u postgres dropdb $DHIS2_DB
+sudo -u postgres createdb -O $DHIS2_USER $DHIS2_DB
+# restore the backup into the new database
+cat $2 | sudo -u postgres psql $DHIS2_DB
+# restart tomcat
+dhis2-startup $INSTANCE
\ No newline at end of file
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-shutdown’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-shutdown 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-shutdown 2013-05-28 12:06:12 +0000
@@ -0,0 +1,18 @@
+#!/bin/sh
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# DHIS2 instance startup script
+if [ “$#” -ne 1 ]; then
echo “usage: dhis2-shutdown ”
exit 1
+fi
+INSTANCE=$1
+PID=$(cat /var/lib/dhis2/$INSTANCE/tomcat.pid)
+echo “Shutting down dhis2 instance”
+sudo -u $INSTANCE kill $PID || sudo -u $INSTANCE rm $PID
=== added file ‘tools/dhis2-tools-deb/pkg/usr/bin/dhis2-startup’
— tools/dhis2-tools-deb/pkg/usr/bin/dhis2-startup 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/bin/dhis2-startup 2013-05-28 12:06:12 +0000
@@ -0,0 +1,18 @@
+#!/bin/sh
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# DHIS2 instance startup script
+if [ “$#” -ne 1 ]; then
echo “usage: dhis2-startup ”
exit 1
+fi
+INSTANCE=$1
+sudo -u $INSTANCE CATALINA_BASE=/var/lib/dhis2/$INSTANCE /usr/share/tomcat7/bin/startup.sh
+echo “DHIS2 instance starting for $INSTANCE”
\ No newline at end of file
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share’
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools’
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/doc’
=== added file ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/doc/copyright’
— tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/doc/copyright 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/doc/copyright 2013-05-28 12:06:12 +0000
@@ -0,0 +1,24 @@
+Copyright (c) 2004-2007, University of Oslo
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
+* Neither the name of the HISP project nor the names of its contributors may
be used to endorse or promote products derived from this software without
specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples’
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2’
=== added file ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/dhis2-ssl’
— tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/dhis2-ssl 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/dhis2-ssl 2013-05-28 12:06:12 +0000
@@ -0,0 +1,78 @@
+
#===========================================================
# tomcat backends
#===========================================================
# ProxyPass /DHISMAIN ajp://localhost:DHISMAINPORT/DHISMAIN
#===========================================================
# try and cache whatever we can
#===========================================================
CacheEnable disk /
#===========================================================
# Rewrite requests for / to main dhis application
#===========================================================
RewriteEngine on
# RewriteRule ^/$ /DHISMAIN/ [R]
#===========================================================
# Logging
#===========================================================
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
#===========================================================
# standard web server document root for serving content
# outside of dhis2 webapp
#===========================================================
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
#===========================================================
# SSL configuration
#===========================================================
SSLEngine on
# set these to match your server certificate and key
SSLCertificateFile /etc/ssl/certs/server.cer
SSLCertificateKeyFile /etc/ssl/private/server.key
# some CA's might also provide you with a CA cert to install
# SSLCACertificateFile /etc/ssl/certs/EV_CA_Bundle.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
+
=== added file ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/http-redirect’
— tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/http-redirect 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/apache2/http-redirect 2013-05-28 12:06:12 +0000
@@ -0,0 +1,5 @@
+<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName SERVERNAME
Redirect permanent / [https://SERVERNAME/](https://SERVERNAME/)
+
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/nginx’
=== added file ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/nginx/dhis2’
— tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/nginx/dhis2 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/samples/nginx/dhis2 2013-05-28 12:06:12 +0000
@@ -0,0 +1,38 @@
+# apply these settings to all backends
+proxy_cache_path /var/cache/nginx keys_zone=dhis:250m inactive=1d;
+proxy_redirect off;
+proxy_set_header Host $host;
+proxy_set_header X-Real-IP $remote_addr;
+proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+proxy_set_header X-Forwarded-Proto https;
+proxy_cache dhis;
+# redirect http to https server
+server {
listen 80;
rewrite ^ https://$host$request_uri? permanent;
+}
+# HTTPS server
+server {
listen 443;
client_max_body_size 10M;
ssl stuff
ssl on;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
ssl_session_timeout 30m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
nominate a backend as the default
rewrite ^/$ /dhis/;
Proxy pass to servlet containers
location /dhis { proxy_pass http://localhost:8080/dhis; }
location /training { proxy_pass http://localhost:8081/training; }
location /demo { proxy_pass http://localhost:8082/demo; }
+}
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel’
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/backups’
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/bin’
=== added file ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/bin/setenv.sh’
— tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/bin/setenv.sh 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/bin/setenv.sh 2013-05-28 12:06:12 +0000
@@ -0,0 +1,32 @@
+#!/bin/sh
+# ____ __ ______________
+# / __ / / / / _/ _/ \
+# / / / / // // / _ __/ /
+# / /_/ / __ // / ___/ / __/
+# /__// //////
+#
+# Environment variables used by tomcat
+#
+# Virtual machine tuning
+# Set heap size according to your available memory.
+# In most cases this will be all you need to set (be sure
+# you have allocated plenty for postgres).
+HEAP=2G
+# venture below here only if you know what you are doing …
+# sets basic memory size parameters
+export CATALINA_OPTS=“-Xms$HEAP -Xmx$HEAP -XX:MaxPermSize=256m -Xss256m”
+# some best practice suggestions from https://gist.github.com/terrancesnyder/986029
+export CATALINA_OPTS=“$CATALINA_OPTS -XX:+UseParallelGC”
+export CATALINA_OPTS=“$CATALINA_OPTS -XX:MaxGCPauseMillis=1500”
+export CATALINA_OPTS=“$CATALINA_OPTS -XX:GCTimeRatio=9”
+export CATALINA_OPTS=“$CATALINA_OPTS -server”
+# You can generally leave these untouched
+export CATALINA_PID=$CATALINA_BASE/tomcat.pid
+export CATALINA_HOME=/usr/share/tomcat7
+export DHIS2_HOME=$CATALINA_BASE
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf’
=== added directory ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/Catalina’
=== added file ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/catalina.properties’
— tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/catalina.properties 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/catalina.properties 2013-05-28 12:06:12 +0000
@@ -0,0 +1,81 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the “License”); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageAccess unless the
+# corresponding RuntimePermission (“accessClassInPackage.”+package) has
+# been granted.
+package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.,sun.beans.
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageDefinition unless the
+# corresponding RuntimePermission (“defineClassInPackage.”+package) has
+# been granted.
+#
+# by default, no packages are restricted for definition, and none of
+# the class loaders supplied with the JDK call checkPackageDefinition.
+#
+package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.
+#
+#
+# List of comma-separated paths defining the contents of the “common”
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
+# If left as blank,the JVM system loader will be used as Catalina’s “common”
+# loader.
+# Examples:
+# “foo”: Add this folder as a class repository
+# “foo/*.jar”: Add all the JARs of the specified folder as class
+# repositories
+# “foo/bar.jar”: Add bar.jar as a class repository
+common.loader=${catalina.base}/lib,${catalina.base}/lib/.jar,${catalina.home}/lib,${catalina.home}/lib/.jar
+#
+# List of comma-separated paths defining the contents of the “server”
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
+# If left as blank, the “common” loader will be used as Catalina’s “server”
+# loader.
+# Examples:
+# “foo”: Add this folder as a class repository
+# “foo/*.jar”: Add all the JARs of the specified folder as class
+# repositories
+# “foo/bar.jar”: Add bar.jar as a class repository
+server.loader=${catalina.home}/server/classes,${catalina.home}/server/*.jar
+#
+# List of comma-separated paths defining the contents of the “shared”
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
+# the “common” loader will be used as Catalina’s “shared” loader.
+# Examples:
+# “foo”: Add this folder as a class repository
+# “foo/*.jar”: Add all the JARs of the specified folder as class
+# repositories
+# “foo/bar.jar”: Add bar.jar as a class repository
+# Please note that for single jars, e.g. bar.jar, you need the URL form
+# starting with file:.
+shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar
+#
+# String cache configuration.
+tomcat.util.buf.StringCache.byte.enabled=true
+#tomcat.util.buf.StringCache.char.enabled=true
+#tomcat.util.buf.StringCache.trainThreshold=500000
+#tomcat.util.buf.StringCache.cacheSize=5000
=== added file ‘tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/context.xml’
— tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/context.xml 1970-01-01 00:00:00 +0000
+++ tools/dhis2-tools-deb/pkg/usr/share/dhis2-tools/skel/conf/context.xml 2013-05-28 12:06:12 +0000
@@ -0,0 +1,38 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!–
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the “License”); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
±->
+
+
WEB-INF/web.xml
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
+<!–
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
±->
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
+<!–
<servlet-name>ssi</servlet-name>
<servlet-class>
org.apache.catalina.ssi.SSIServlet
</servlet-class>
<init-param>
<param-name>buffered</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>expires</param-name>
<param-value>666</param-value>
</init-param>
<init-param>
<param-name>isVirtualWebappRelative</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
±->
+<!–
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
±->
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
+<!–
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
±->
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
+<!–
<servlet-name>ssi</servlet-name>
<url-pattern>*.shtml</url-pattern>
±->
+<!–
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
±->
+<!–
<filter-name>ssi</filter-name>
<filter-class>
org.apache.catalina.ssi.SSIFilter
</filter-class>
<init-param>
<param-name>contentType</param-name>
<param-value>text/x-server-parsed-html(;.*)?</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>expires</param-name>
<param-value>666</param-value>
</init-param>
<init-param>
<param-name>isVirtualWebappRelative</param-name>
<param-value>0</param-value>
</init-param>
±->
+<!–
<filter-name>ssi</filter-name>
<url-pattern>*.shtml</url-pattern>
±->
<session-timeout>30</session-timeout>
<extension>abs</extension>
<mime-type>audio/x-mpeg</mime-type>
<extension>ai</extension>
<mime-type>application/postscript</mime-type>
<extension>aif</extension>
<mime-type>audio/x-aiff</mime-type>
<extension>aifc</extension>
<mime-type>audio/x-aiff</mime-type>
<extension>aiff</extension>
<mime-type>audio/x-aiff</mime-type>
<extension>aim</extension>
<mime-type>application/x-aim</mime-type>
<extension>art</extension>
<mime-type>image/x-jg</mime-type>
<extension>asf</extension>
<mime-type>video/x-ms-asf</mime-type>
<extension>asx</extension>
<mime-type>video/x-ms-asf</mime-type>
<extension>au</extension>
<mime-type>audio/basic</mime-type>
<extension>avi</extension>
<mime-type>video/x-msvideo</mime-type>
<extension>avx</extension>
<mime-type>video/x-rad-screenplay</mime-type>
<extension>bcpio</extension>
<mime-type>application/x-bcpio</mime-type>
<extension>bin</extension>
<mime-type>application/octet-stream</mime-type>
<extension>bmp</extension>
<mime-type>image/bmp</mime-type>
<extension>body</extension>
<mime-type>text/html</mime-type>
<extension>cdf</extension>
<mime-type>application/x-cdf</mime-type>
<extension>cer</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
<extension>class</extension>
<mime-type>application/java</mime-type>
<extension>cpio</extension>
<mime-type>application/x-cpio</mime-type>
<extension>csh</extension>
<mime-type>application/x-csh</mime-type>
<extension>css</extension>
<mime-type>text/css</mime-type>
<extension>dib</extension>
<mime-type>image/bmp</mime-type>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
<extension>dtd</extension>
<mime-type>application/xml-dtd</mime-type>
<extension>dv</extension>
<mime-type>video/x-dv</mime-type>
<extension>dvi</extension>
<mime-type>application/x-dvi</mime-type>
<extension>eps</extension>
<mime-type>application/postscript</mime-type>
<extension>etx</extension>
<mime-type>text/x-setext</mime-type>
<extension>exe</extension>
<mime-type>application/octet-stream</mime-type>
<extension>gif</extension>
<mime-type>image/gif</mime-type>
<extension>gtar</extension>
<mime-type>application/x-gtar</mime-type>
<extension>gz</extension>
<mime-type>application/x-gzip</mime-type>
<extension>hdf</extension>
<mime-type>application/x-hdf</mime-type>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
<extension>htc</extension>
<mime-type>text/x-component</mime-type>
<extension>htm</extension>
<mime-type>text/html</mime-type>
<extension>html</extension>
<mime-type>text/html</mime-type>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
<extension>ief</extension>
<mime-type>image/ief</mime-type>
<extension>jad</extension>
<mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
<extension>jar</extension>
<mime-type>application/java-archive</mime-type>
<extension>java</extension>
<mime-type>text/plain</mime-type>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
<extension>jpe</extension>
<mime-type>image/jpeg</mime-type>
<extension>jpeg</extension>
<mime-type>image/jpeg</mime-type>
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
<extension>js</extension>
<mime-type>text/javascript</mime-type>
<extension>jsf</extension>
<mime-type>text/plain</mime-type>
<extension>jspf</extension>
<mime-type>text/plain</mime-type>
<extension>kar</extension>
<mime-type>audio/x-midi</mime-type>
<extension>latex</extension>
<mime-type>application/x-latex</mime-type>
<extension>m3u</extension>
<mime-type>audio/x-mpegurl</mime-type>
<extension>mac</extension>
<mime-type>image/x-macpaint</mime-type>
<extension>man</extension>
<mime-type>application/x-troff-man</mime-type>
<extension>mathml</extension>
<mime-type>application/mathml+xml</mime-type>
<extension>me</extension>
<mime-type>application/x-troff-me</mime-type>
<extension>mid</extension>
<mime-type>audio/x-midi</mime-type>
<extension>midi</extension>
<mime-type>audio/x-midi</mime-type>
<extension>mif</extension>
<mime-type>application/x-mif</mime-type>
<extension>mov</extension>
<mime-type>video/quicktime</mime-type>
<extension>movie</extension>
<mime-type>video/x-sgi-movie</mime-type>
<extension>mp1</extension>
<mime-type>audio/x-mpeg</mime-type>
<extension>mp2</extension>
<mime-type>audio/x-mpeg</mime-type>
<extension>mp3</extension>
<mime-type>audio/x-mpeg</mime-type>
<extension>mp4</extension>
<mime-type>video/mp4</mime-type>
<extension>mpa</extension>
<mime-type>audio/x-mpeg</mime-type>
<extension>mpe</extension>
<mime-type>video/mpeg</mime-type>
<extension>mpeg</extension>
<mime-type>video/mpeg</mime-type>
<extension>mpega</extension>
<mime-type>audio/x-mpeg</mime-type>
<extension>mpg</extension>
<mime-type>video/mpeg</mime-type>
<extension>mpv2</extension>
<mime-type>video/mpeg2</mime-type>
<extension>ms</extension>
<mime-type>application/x-wais-source</mime-type>
<extension>nc</extension>
<mime-type>application/x-netcdf</mime-type>
<extension>oda</extension>
<mime-type>application/oda</mime-type>
<!-- OpenDocument Database -->
<extension>odb</extension>
<mime-type>application/vnd.oasis.opendocument.database</mime-type>
<!-- OpenDocument Chart -->
<extension>odc</extension>
<mime-type>application/vnd.oasis.opendocument.chart</mime-type>
<!-- OpenDocument Formula -->
<extension>odf</extension>
<mime-type>application/vnd.oasis.opendocument.formula</mime-type>
<!-- OpenDocument Drawing -->
<extension>odg</extension>
<mime-type>application/vnd.oasis.opendocument.graphics</mime-type>
<!-- OpenDocument Image -->
<extension>odi</extension>
<mime-type>application/vnd.oasis.opendocument.image</mime-type>
<!-- OpenDocument Master Document -->
<extension>odm</extension>
<mime-type>application/vnd.oasis.opendocument.text-master</mime-type>
<!-- OpenDocument Presentation -->
<extension>odp</extension>
<mime-type>application/vnd.oasis.opendocument.presentation</mime-type>
<!-- OpenDocument Spreadsheet -->
<extension>ods</extension>
<mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type>
<!-- OpenDocument Text -->
<extension>odt</extension>
<mime-type>application/vnd.oasis.opendocument.text</mime-type>
<extension>ogg</extension>
<mime-type>application/ogg</mime-type>
<!-- OpenDocument Drawing Template -->
<extension>otg </extension>
<mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type>
<!-- HTML Document Template -->
<extension>oth</extension>
<mime-type>application/vnd.oasis.opendocument.text-web</mime-type>
<!-- OpenDocument Presentation Template -->
<extension>otp</extension>
<mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type>
<!-- OpenDocument Spreadsheet Template -->
<extension>ots</extension>
<mime-type>application/vnd.oasis.opendocument.spreadsheet-template </mime-type>
<!-- OpenDocument Text Template -->
<extension>ott</extension>
<mime-type>application/vnd.oasis.opendocument.text-template</mime-type>
<extension>pbm</extension>
<mime-type>image/x-portable-bitmap</mime-type>
<extension>pct</extension>
<mime-type>image/pict</mime-type>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
<extension>pgm</extension>
<mime-type>image/x-portable-graymap</mime-type>
<extension>pic</extension>
<mime-type>image/pict</mime-type>
<extension>pict</extension>
<mime-type>image/pict</mime-type>
<extension>pls</extension>
<mime-type>audio/x-scpls</mime-type>
<extension>png</extension>
<mime-type>image/png</mime-type>
<extension>pnm</extension>
<mime-type>image/x-portable-anymap</mime-type>
<extension>pnt</extension>
<mime-type>image/x-macpaint</mime-type>
<extension>ppm</extension>
<mime-type>image/x-portable-pixmap</mime-type>
<extension>ppt</extension>
<mime-type>application/vnd.ms-powerpoint</mime-type>
<extension>pps</extension>
<mime-type>application/vnd.ms-powerpoint</mime-type>
<extension>ps</extension>
<mime-type>application/postscript</mime-type>
<extension>psd</extension>
<mime-type>image/x-photoshop</mime-type>
<extension>qt</extension>
<mime-type>video/quicktime</mime-type>
<extension>qti</extension>
<mime-type>image/x-quicktime</mime-type>
<extension>qtif</extension>
<mime-type>image/x-quicktime</mime-type>
<extension>ras</extension>
<mime-type>image/x-cmu-raster</mime-type>
<extension>rdf</extension>
<mime-type>application/rdf+xml</mime-type>
<extension>rgb</extension>
<mime-type>image/x-rgb</mime-type>
<extension>rm</extension>
<mime-type>application/vnd.rn-realmedia</mime-type>
<extension>roff</extension>
<mime-type>application/x-troff</mime-type>
<extension>rtf</extension>
<mime-type>application/rtf</mime-type>
<extension>rtx</extension>
<mime-type>text/richtext</mime-type>
<extension>sh</extension>
<mime-type>application/x-sh</mime-type>
<extension>shar</extension>
<mime-type>application/x-shar</mime-type>
+<!–
<extension>shtml</extension>
<mime-type>text/x-server-parsed-html</mime-type>
±->
<extension>smf</extension>
<mime-type>audio/x-midi</mime-type>
<extension>sit</extension>
<mime-type>application/x-stuffit</mime-type>
<extension>snd</extension>
<mime-type>audio/basic</mime-type>
<extension>src</extension>
<mime-type>application/x-wais-source</mime-type>
<extension>sv4cpio</extension>
<mime-type>application/x-sv4cpio</mime-type>
<extension>sv4crc</extension>
<mime-type>application/x-sv4crc</mime-type>
<extension>svg</extension>
<mime-type>image/svg+xml</mime-type>
<extension>svgz</extension>
<mime-type>image/svg+xml</mime-type>
<extension>swf</extension>
<mime-type>application/x-shockwave-flash</mime-type>
<extension>t</extension>
<mime-type>application/x-troff</mime-type>
<extension>tar</extension>
<mime-type>application/x-tar</mime-type>
<extension>tcl</extension>
<mime-type>application/x-tcl</mime-type>
<extension>tex</extension>
<mime-type>application/x-tex</mime-type>
<extension>texi</extension>
<mime-type>application/x-texinfo</mime-type>
<extension>texinfo</extension>
<mime-type>application/x-texinfo</mime-type>
<extension>tif</extension>
<mime-type>image/tiff</mime-type>
<extension>tiff</extension>
<mime-type>image/tiff</mime-type>
<extension>tr</extension>
<mime-type>application/x-troff</mime-type>
<extension>tsv</extension>
<mime-type>text/tab-separated-values</mime-type>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
<extension>ulw</extension>
<mime-type>audio/basic</mime-type>
<extension>ustar</extension>
<mime-type>application/x-ustar</mime-type>
<extension>vxml</extension>
<mime-type>application/voicexml+xml</mime-type>
<extension>xbm</extension>
<mime-type>image/x-xbitmap</mime-type>
<extension>xht</extension>
<mime-type>application/xhtml+xml</mime-type>
<extension>xhtml</extension>
<mime-type>application/xhtml+xml</mime-type>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
<extension>xml</extension>
<mime-type>application/xml</mime-type>
<extension>xpm</extension>
<mime-type>image/x-xpixmap</mime-type>
<extension>xsl</extension>
…
[Message clipped]