--- /dev/null
+#!/bin/sh
+# ianb@erislabs.net 20081122
+# checkpoint code taken from zak's mir-setup
+# $Id: mir-prepare.squeeze,v 1.1.2.1 2010/12/16 18:31:08 ianb Exp $
+
+set -e
+
+CONFDIR="/etc/mir-setup"
+PROG="`basename $0`"
+
+PACKAGES="openssh-server pwgen apache2 ant tomcat6 tomcat6-admin libservlet2.3-java imagemagick postgresql libjmagick6-java libapache2-mod-jk procmail cvs rsync sudo wget"
+
+CUR_CHECKPOINT=0
+checkpoint()
+{
+ CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1))
+ if [ -n "$START_CHECKPOINT" ]; then
+ if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then
+ echo "Skipping checkpoint $CUR_CHECKPOINT: $@"
+ unset RUNNING
+ else
+ echo "Running from checkpoint $CUR_CHECKPOINT: $@"
+ RUNNING=1
+ fi
+ else
+ echo "Checkpoint $CUR_CHECKPOINT: $@"
+ RUNNING=1
+ fi
+}
+
+die()
+{
+ echo >&2 "$@";
+ exit 1;
+}
+
+optdie()
+{
+ echo >&2 "$@";
+ echo >&2 "Try $PROG --help";
+ exit 1;
+}
+
+usage() {
+ echo >&2 "Usage: $PROG options"
+ echo >&2 " Prepares system for a mir install"
+ echo >&2 " Run before mir-setup"
+ echo >&2 " -d|--debug Debugging output, including 'set -x' shell trace"
+ echo >&2 " -p|--checkpoint <start> Run from specified checkpoint after failed run"
+ echo >&2 " -j|--java sun|gcj Select Java implementation. Default: sun"
+}
+
+# default
+JAVA=sun
+while [ $# != 0 ]; do
+ case "$1" in
+ -d|--debug) set -x; DEBUG=1 ;;
+ -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
+ -j|--java) shift; JAVA="$1" ;;
+ -h|-?|--help) usage; exit 0 ;;
+ -*) optdie "$PROG: unknown option $1" ;;
+ *) optdie "$PROG: unexpected argument '$1'" ;;
+ esac
+ shift
+done
+
+checkpoint "Installing mir-setup"
+if [ -n "$RUNNING" ]
+then
+ mkdir -p /etc/mir-setup /usr/local/share/mir-setup
+ cp mir-setup.squeeze /usr/local/sbin/mir-setup
+ cp mir-choose-java.squeeze /usr/local/sbin/mir-choose-java
+ cp munge_config_file.pl /usr/local/share/mir-setup
+ CONFFILES="config config-examplesite config.properties-default env robots.txt site-httpd.conf site-ssl-dedicated-httpd.conf site-ssl-httpd-fragment.conf tomcat-manager.conf"
+ (cd conf && cp $CONFFILES /etc/mir-setup)
+fi
+
+checkpoint "Installing packages"
+if [ -n "$RUNNING" ]
+then
+ apt-get install $PACKAGES
+ echo "You probably want to do 'apt-get clean'"
+fi
+
+checkpoint "Selecting $JAVA java with mir-choose-java"
+if [ -n "$RUNNING" ]
+then
+ mir-choose-java --subprocess $JAVA
+fi
+
+checkpoint "Enabling apache modules"
+if [ -n "$RUNNING" ]
+then
+ a2enmod headers ssl include deflate jk rewrite
+fi
+
+checkpoint "Anonymise apache error log"
+if [ -n "$RUNNING" ]
+then
+ if [ ! -f /etc/apache2/conf.d/mir-anon-error-log ]
+ then
+ echo 'ErrorLog "| /usr/local/bin/strip-ips-from-apache-error-log /var/log/apache2/error.log"' > /etc/apache2/conf.d/mir-anon-error-log
+ fi
+ cp strip-ips-from-apache-error-log /usr/local/bin
+fi
+
+checkpoint "Configure 'anon' log format"
+if [ -n "$RUNNING" ]
+then
+ if [ ! -f /etc/apache2/conf.d/mir-anon-access-log ]
+ then
+ echo 'LogFormat "noip %l %u %t \"%r\" %>s %b" anon' > /etc/apache2/conf.d/mir-anon-access-log
+ fi
+fi
+
+checkpoint "Creating directory for mir sites in apache"
+if [ -n "$RUNNING" ]
+then
+ if [ ! -d /etc/apache2/mir-sites ]
+ then
+ mkdir /etc/apache2/mir-sites
+ fi
+fi
+
+checkpoint "Enabling mir sites in apache"
+if [ -n "$RUNNING" ]
+then
+ if [ ! -f /etc/apache2/sites-available/mir-sites ]
+ then
+ echo "Include /etc/apache2/mir-sites/*.conf" > /etc/apache2/sites-available/mir-sites
+ a2ensite mir-sites
+ fi
+fi
+
+checkpoint "Configuring apache jakarta workers"
+if [ -n "$RUNNING" ]
+then
+ if [ ! -f /etc/apache2/conf.d/mir-jk ]
+ then
+ echo "JkWorkersFile /etc/libapache2-mod-jk/workers.properties" > /etc/apache2/conf.d/mir-jk
+ fi
+fi
+
+checkpoint "Configuring tomcat ajp13 listener"
+if [ -n "$RUNNING" ]
+then
+ perl -pi.bak -e "s/(.*Service\s*name=\"Catalina\".*)/\$1\n <Connector port=\"8009\" protocol=\"AJP\/1.3\" redirectPort=\"8443\" \/>/;" /etc/tomcat6/server.xml
+fi
+
+checkpoint "Disabling tomcat security (yes, this is bad)"
+if [ -n "$RUNNING" ]
+then
+ if ! grep -q "^TOMCAT6_SECURITY=no" /etc/default/tomcat6
+ then
+ echo "TOMCAT6_SECURITY=no" >> /etc/default/tomcat6
+ fi
+fi
+
+checkpoint "Configuring password for tomcat manager"
+if [ -n "$RUNNING" ]
+then
+ if ! grep -q 'user username="mir-setup"' /etc/tomcat6/tomcat-users.xml
+ then
+ PASSWORD=$(pwgen -n 10 1)
+ ROLE=' <role rolename="manager"\/>'
+ USERNAME=' <user username="mir-setup" password="'"$PASSWORD"'" roles="manager"\/>'
+ perl -pi.bak -e 's/(mir-setup:)[^@]+/$1'"$PASSWORD"'/;' /etc/mir-setup/tomcat-manager.conf
+ perl -pi.bak -e 's/(<tomcat-users>)/$1\n'"$ROLE"'\n'"$USERNAME"'\n/;' /etc/tomcat6/tomcat-users.xml
+ fi
+fi
+
+checkpoint "Creating directory for SSL certs"
+if [ -n "$RUNNING" ]
+then
+ if [ ! -d /etc/apache2/ssl ]
+ then
+ mkdir /etc/apache2/ssl
+ fi
+fi
+
+checkpoint "Restarting apache and tomcat"
+if [ -n "$RUNNING" ]
+then
+ invoke-rc.d tomcat6 force-reload
+ invoke-rc.d apache2 force-reload
+fi
+
+checkpoint "All done!"