Rename mir-prepare, mir-setup, mir-choose-java to mir-*.lenny.
authorianb <ianb>
Thu, 16 Dec 2010 18:31:08 +0000 (18:31 +0000)
committerianb <ianb>
Thu, 16 Dec 2010 18:31:08 +0000 (18:31 +0000)
Copied them to mir-*.squeeze, and updated them to
work with Debian Squeeze.

scripts/mir-setup/mir-choose-java [deleted file]
scripts/mir-setup/mir-choose-java.lenny [new file with mode: 0755]
scripts/mir-setup/mir-choose-java.squeeze [new file with mode: 0755]
scripts/mir-setup/mir-prepare [deleted file]
scripts/mir-setup/mir-prepare.lenny [new file with mode: 0755]
scripts/mir-setup/mir-prepare.squeeze [new file with mode: 0755]
scripts/mir-setup/mir-setup [deleted file]
scripts/mir-setup/mir-setup.lenny [new file with mode: 0755]
scripts/mir-setup/mir-setup.squeeze [new file with mode: 0755]

diff --git a/scripts/mir-setup/mir-choose-java b/scripts/mir-setup/mir-choose-java
deleted file mode 100755 (executable)
index b6899b6..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/bin/sh
-# ianb@erislabs.net 20081202
-# configure a mir system for sun or gcj java
-# checkpoint code taken from zak's mir-setup
-
-set -e
-
-# NAME is used when called from mir-prepare
-NAME=""
-
-CUR_CHECKPOINT=0
-checkpoint()
-{
-  CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1))
-  if [ -n "$START_CHECKPOINT" ]; then
-    if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then
-      echo "${NAME}Skipping checkpoint $CUR_CHECKPOINT: $@"
-      unset RUNNING
-    else
-      echo "${NAME}Running from checkpoint $CUR_CHECKPOINT: $@"
-      RUNNING=1
-    fi
-  else
-    echo "${NAME}Checkpoint $CUR_CHECKPOINT: $@"
-    RUNNING=1
-  fi
-}
-
-optdie()
-{
-  echo >&2 "$@";
-  echo >&2 "Try $PROG --help";
-  exit 1;
-}
-
-usage() {
-    echo >&2 "Usage: $PROG [options] sun|gcj"
-    echo >&2 "  Configures java implementation to use with mir"
-    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 "    sun                       Use Sun Java (non-free)" 
-    echo >&2 "    gcj                       Use the GNU Java Compiler"
-}
-
-if [ $# -lt 1 ]
-then
-    usage
-    exit 1
-fi
-
-while [ $# != 0 ]; do
-    case "$1" in
-       -d|--debug)  set -x; DEBUG=1 ;;
-       -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
-       --subprocess) NAME="[mir-choose-java] " ;;
-       -h|-?|--help) usage; exit 0 ;;
-        -*) optdie "$PROG: unknown option $1" ;;
-        sun) JAVA=sun ; break;;
-        gcj) JAVA=gcj ; break;;
-       *) optdie "$PROG: unexpected argument '$1'" ;;
-    esac
-    shift
-done
-
-if [ $JAVA = sun ]
-then
-    JAVANAME=java-6-sun
-    PACKAGES="sun-java6-jdk sun-java6-jre"
-    RTPATH=/usr/lib/jvm/java-6-sun/jre/lib/rt.jar
-else
-    JAVANAME=java-gcj
-    PACKAGES=gcj
-    RTPATH=/usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0/jre/lib/rt.jar
-fi
-
-JAVAHOME="/usr/lib/jvm/$JAVANAME"
-
-if [ $JAVA = sun ]
-then
-    checkpoint "Adding non-free archive for sun java"
-    if [ -n "$RUNNING" ]
-    then
-       perl -pi.bak -e \
-           'if(/^deb/ && !/security\.debian\.org/ && !/non-free/) { s/(main)/$1 contrib non-free/; }' \
-           /etc/apt/sources.list
-       apt-get update
-    fi
-else
-    # so checkpoint numbers don't differ
-    checkpoint "Skipping non-free archive configuration - gcj is in main"
-fi
-
-checkpoint "Installing packages"
-if [ -n "$RUNNING" ]
-then
-    apt-get install $PACKAGES
-    echo "You probably want to do 'apt-get clean'"
-fi
-
-checkpoint "Selecting JDK"
-if [ -n "$RUNNING" ]
-then
-    update-java-alternatives --set $JAVANAME || true
-fi
-
-checkpoint "Configuring apache jakarta JVM"
-if [ -n "$RUNNING" ]
-then
-    if grep -q '^workers.java_home' /etc/libapache2-mod-jk/workers.properties
-    then
-       perl -pi.bak -e 's,workers.java_home.*,workers.java_home='"$JAVAHOME"',;' \
-         /etc/libapache2-mod-jk/workers.properties
-    fi
-fi
-
-checkpoint "Configuring tomcat JVM"
-if [ -n "$RUNNING" ]
-then
-    TOMCATDEFAULTS=/etc/default/tomcat5.5
-    if grep -q '^#\?JAVA_HOME' $TOMCATDEFAULTS
-    then
-       perl -pi.bak -e 's,^\#?JAVA_HOME.*,JAVA_HOME='"$JAVAHOME"',;' $TOMCATDEFAULTS
-    else
-       echo "JAVA_HOME=$JAVAHOME" >> $TOMCATDEFAULTS
-    fi
-fi
-
-checkpoint "Configuring /etc/mir-setup/lib/rt.jar symlink"
-if [ -n "$RUNNING" ]
-then
-    mkdir -p /etc/mir-setup/lib
-    ln -sf $RTPATH /etc/mir-setup/lib/rt.jar
-fi
-
-checkpoint "Restarting tomcat and apache"
-if [ -n "$RUNNING" ]
-then
-    invoke-rc.d tomcat5.5 force-reload
-    invoke-rc.d apache2   force-reload
-fi
-
-checkpoint "Finished!"
diff --git a/scripts/mir-setup/mir-choose-java.lenny b/scripts/mir-setup/mir-choose-java.lenny
new file mode 100755 (executable)
index 0000000..b6899b6
--- /dev/null
@@ -0,0 +1,142 @@
+#!/bin/sh
+# ianb@erislabs.net 20081202
+# configure a mir system for sun or gcj java
+# checkpoint code taken from zak's mir-setup
+
+set -e
+
+# NAME is used when called from mir-prepare
+NAME=""
+
+CUR_CHECKPOINT=0
+checkpoint()
+{
+  CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1))
+  if [ -n "$START_CHECKPOINT" ]; then
+    if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then
+      echo "${NAME}Skipping checkpoint $CUR_CHECKPOINT: $@"
+      unset RUNNING
+    else
+      echo "${NAME}Running from checkpoint $CUR_CHECKPOINT: $@"
+      RUNNING=1
+    fi
+  else
+    echo "${NAME}Checkpoint $CUR_CHECKPOINT: $@"
+    RUNNING=1
+  fi
+}
+
+optdie()
+{
+  echo >&2 "$@";
+  echo >&2 "Try $PROG --help";
+  exit 1;
+}
+
+usage() {
+    echo >&2 "Usage: $PROG [options] sun|gcj"
+    echo >&2 "  Configures java implementation to use with mir"
+    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 "    sun                       Use Sun Java (non-free)" 
+    echo >&2 "    gcj                       Use the GNU Java Compiler"
+}
+
+if [ $# -lt 1 ]
+then
+    usage
+    exit 1
+fi
+
+while [ $# != 0 ]; do
+    case "$1" in
+       -d|--debug)  set -x; DEBUG=1 ;;
+       -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
+       --subprocess) NAME="[mir-choose-java] " ;;
+       -h|-?|--help) usage; exit 0 ;;
+        -*) optdie "$PROG: unknown option $1" ;;
+        sun) JAVA=sun ; break;;
+        gcj) JAVA=gcj ; break;;
+       *) optdie "$PROG: unexpected argument '$1'" ;;
+    esac
+    shift
+done
+
+if [ $JAVA = sun ]
+then
+    JAVANAME=java-6-sun
+    PACKAGES="sun-java6-jdk sun-java6-jre"
+    RTPATH=/usr/lib/jvm/java-6-sun/jre/lib/rt.jar
+else
+    JAVANAME=java-gcj
+    PACKAGES=gcj
+    RTPATH=/usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0/jre/lib/rt.jar
+fi
+
+JAVAHOME="/usr/lib/jvm/$JAVANAME"
+
+if [ $JAVA = sun ]
+then
+    checkpoint "Adding non-free archive for sun java"
+    if [ -n "$RUNNING" ]
+    then
+       perl -pi.bak -e \
+           'if(/^deb/ && !/security\.debian\.org/ && !/non-free/) { s/(main)/$1 contrib non-free/; }' \
+           /etc/apt/sources.list
+       apt-get update
+    fi
+else
+    # so checkpoint numbers don't differ
+    checkpoint "Skipping non-free archive configuration - gcj is in main"
+fi
+
+checkpoint "Installing packages"
+if [ -n "$RUNNING" ]
+then
+    apt-get install $PACKAGES
+    echo "You probably want to do 'apt-get clean'"
+fi
+
+checkpoint "Selecting JDK"
+if [ -n "$RUNNING" ]
+then
+    update-java-alternatives --set $JAVANAME || true
+fi
+
+checkpoint "Configuring apache jakarta JVM"
+if [ -n "$RUNNING" ]
+then
+    if grep -q '^workers.java_home' /etc/libapache2-mod-jk/workers.properties
+    then
+       perl -pi.bak -e 's,workers.java_home.*,workers.java_home='"$JAVAHOME"',;' \
+         /etc/libapache2-mod-jk/workers.properties
+    fi
+fi
+
+checkpoint "Configuring tomcat JVM"
+if [ -n "$RUNNING" ]
+then
+    TOMCATDEFAULTS=/etc/default/tomcat5.5
+    if grep -q '^#\?JAVA_HOME' $TOMCATDEFAULTS
+    then
+       perl -pi.bak -e 's,^\#?JAVA_HOME.*,JAVA_HOME='"$JAVAHOME"',;' $TOMCATDEFAULTS
+    else
+       echo "JAVA_HOME=$JAVAHOME" >> $TOMCATDEFAULTS
+    fi
+fi
+
+checkpoint "Configuring /etc/mir-setup/lib/rt.jar symlink"
+if [ -n "$RUNNING" ]
+then
+    mkdir -p /etc/mir-setup/lib
+    ln -sf $RTPATH /etc/mir-setup/lib/rt.jar
+fi
+
+checkpoint "Restarting tomcat and apache"
+if [ -n "$RUNNING" ]
+then
+    invoke-rc.d tomcat5.5 force-reload
+    invoke-rc.d apache2   force-reload
+fi
+
+checkpoint "Finished!"
diff --git a/scripts/mir-setup/mir-choose-java.squeeze b/scripts/mir-setup/mir-choose-java.squeeze
new file mode 100755 (executable)
index 0000000..2560f97
--- /dev/null
@@ -0,0 +1,142 @@
+#!/bin/sh
+# ianb@erislabs.net 20081202
+# configure a mir system for sun or gcj java
+# checkpoint code taken from zak's mir-setup
+
+set -e
+
+# NAME is used when called from mir-prepare
+NAME=""
+
+CUR_CHECKPOINT=0
+checkpoint()
+{
+  CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1))
+  if [ -n "$START_CHECKPOINT" ]; then
+    if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then
+      echo "${NAME}Skipping checkpoint $CUR_CHECKPOINT: $@"
+      unset RUNNING
+    else
+      echo "${NAME}Running from checkpoint $CUR_CHECKPOINT: $@"
+      RUNNING=1
+    fi
+  else
+    echo "${NAME}Checkpoint $CUR_CHECKPOINT: $@"
+    RUNNING=1
+  fi
+}
+
+optdie()
+{
+  echo >&2 "$@";
+  echo >&2 "Try $PROG --help";
+  exit 1;
+}
+
+usage() {
+    echo >&2 "Usage: $PROG [options] sun|gcj"
+    echo >&2 "  Configures java implementation to use with mir"
+    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 "    sun                       Use Sun Java (non-free)" 
+    echo >&2 "    gcj                       Use the GNU Java Compiler"
+}
+
+if [ $# -lt 1 ]
+then
+    usage
+    exit 1
+fi
+
+while [ $# != 0 ]; do
+    case "$1" in
+       -d|--debug)  set -x; DEBUG=1 ;;
+       -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
+       --subprocess) NAME="[mir-choose-java] " ;;
+       -h|-?|--help) usage; exit 0 ;;
+        -*) optdie "$PROG: unknown option $1" ;;
+        sun) JAVA=sun ; break;;
+        gcj) JAVA=gcj ; break;;
+       *) optdie "$PROG: unexpected argument '$1'" ;;
+    esac
+    shift
+done
+
+if [ $JAVA = sun ]
+then
+    JAVANAME=java-6-sun
+    PACKAGES="sun-java6-jdk sun-java6-jre"
+    RTPATH=/usr/lib/jvm/java-6-sun/jre/lib/rt.jar
+else
+    JAVANAME=java-gcj
+    PACKAGES=gcj
+    RTPATH=/usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0/jre/lib/rt.jar
+fi
+
+JAVAHOME="/usr/lib/jvm/$JAVANAME"
+
+if [ $JAVA = sun ]
+then
+    checkpoint "Adding non-free archive for sun java"
+    if [ -n "$RUNNING" ]
+    then
+       perl -pi.bak -e \
+           'if(/^deb/ && !/security\.debian\.org/ && !/non-free/) { s/(main)/$1 contrib non-free/; }' \
+           /etc/apt/sources.list
+       apt-get update
+    fi
+else
+    # so checkpoint numbers don't differ
+    checkpoint "Skipping non-free archive configuration - gcj is in main"
+fi
+
+checkpoint "Installing packages"
+if [ -n "$RUNNING" ]
+then
+    apt-get install $PACKAGES
+    echo "You probably want to do 'apt-get clean'"
+fi
+
+checkpoint "Selecting JDK"
+if [ -n "$RUNNING" ]
+then
+    update-java-alternatives --set $JAVANAME || true
+fi
+
+checkpoint "Configuring apache jakarta JVM"
+if [ -n "$RUNNING" ]
+then
+    if grep -q '^workers.java_home' /etc/libapache2-mod-jk/workers.properties
+    then
+       perl -pi.bak -e 's,workers.java_home.*,workers.java_home='"$JAVAHOME"',;' \
+         /etc/libapache2-mod-jk/workers.properties
+    fi
+fi
+
+checkpoint "Configuring tomcat JVM"
+if [ -n "$RUNNING" ]
+then
+    TOMCATDEFAULTS=/etc/default/tomcat6
+    if grep -q '^#\?JAVA_HOME' $TOMCATDEFAULTS
+    then
+       perl -pi.bak -e 's,^\#?JAVA_HOME.*,JAVA_HOME='"$JAVAHOME"',;' $TOMCATDEFAULTS
+    else
+       echo "JAVA_HOME=$JAVAHOME" >> $TOMCATDEFAULTS
+    fi
+fi
+
+checkpoint "Configuring /etc/mir-setup/lib/rt.jar symlink"
+if [ -n "$RUNNING" ]
+then
+    mkdir -p /etc/mir-setup/lib
+    ln -sf $RTPATH /etc/mir-setup/lib/rt.jar
+fi
+
+checkpoint "Restarting tomcat and apache"
+if [ -n "$RUNNING" ]
+then
+    invoke-rc.d tomcat6   force-reload
+    invoke-rc.d apache2   force-reload
+fi
+
+checkpoint "Finished!"
diff --git a/scripts/mir-setup/mir-prepare b/scripts/mir-setup/mir-prepare
deleted file mode 100755 (executable)
index ace2b82..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-#!/bin/sh
-# ianb@erislabs.net 20081122
-# checkpoint code taken from zak's mir-setup
-# $Id: mir-prepare,v 1.1.2.2 2009/01/18 04:43:02 ianb Exp $
-
-set -e
-
-CONFDIR="/etc/mir-setup"
-PROG="`basename $0`"
-
-PACKAGES="openssh-server pwgen apache2 ant tomcat5.5 tomcat5.5-admin 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 mir-choose-java /usr/local/sbin
-    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 "Disabling tomcat security (yes, this is bad)"
-if [ -n "$RUNNING" ]
-then
-    if ! grep -q "^TOMCAT5_SECURITY=no" /etc/default/tomcat5.5
-    then
-       echo "TOMCAT5_SECURITY=no" >> /etc/default/tomcat5.5
-    fi
-fi
-
-checkpoint "Configuring password for tomcat manager"
-if [ -n "$RUNNING" ]
-then
-    if ! grep -q 'user username="mir-setup"' /etc/tomcat5.5/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/tomcat5.5/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 tomcat5.5 force-reload
-    invoke-rc.d apache2 force-reload
-fi
-
-checkpoint "All done!"
diff --git a/scripts/mir-setup/mir-prepare.lenny b/scripts/mir-setup/mir-prepare.lenny
new file mode 100755 (executable)
index 0000000..8a1d0f3
--- /dev/null
@@ -0,0 +1,182 @@
+#!/bin/sh
+# ianb@erislabs.net 20081122
+# checkpoint code taken from zak's mir-setup
+# $Id: mir-prepare.lenny,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 tomcat5.5 tomcat5.5-admin 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.lenny /usr/local/sbin/mir-setup
+    cp mir-choose-java.lenny /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 "Disabling tomcat security (yes, this is bad)"
+if [ -n "$RUNNING" ]
+then
+    if ! grep -q "^TOMCAT5_SECURITY=no" /etc/default/tomcat5.5
+    then
+       echo "TOMCAT5_SECURITY=no" >> /etc/default/tomcat5.5
+    fi
+fi
+
+checkpoint "Configuring password for tomcat manager"
+if [ -n "$RUNNING" ]
+then
+    if ! grep -q 'user username="mir-setup"' /etc/tomcat5.5/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/tomcat5.5/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 tomcat5.5 force-reload
+    invoke-rc.d apache2 force-reload
+fi
+
+checkpoint "All done!"
diff --git a/scripts/mir-setup/mir-prepare.squeeze b/scripts/mir-setup/mir-prepare.squeeze
new file mode 100755 (executable)
index 0000000..e4c0c53
--- /dev/null
@@ -0,0 +1,188 @@
+#!/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!"
diff --git a/scripts/mir-setup/mir-setup b/scripts/mir-setup/mir-setup
deleted file mode 100755 (executable)
index 401567e..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-#!/bin/bash
-# $Id: mir-setup,v 1.2.2.2 2009/01/18 04:28:49 ianb Exp $
-
-# Script to install a new Mir site
-
-# Initial version -zak 2005-01-23
-# Moved to traven -zak 2005-04-05
-# Added to CVS    -zak 2005-06-13
-
-set -e
-
-CONFDIR="/etc/mir-setup"
-SHAREDIR="/usr/local/share/mir-setup"
-PROG="`basename $0`"
-
-die()
-{
-  echo >&2 "$@";
-  exit 1;
-}
-
-optdie()
-{
-  echo >&2 "$@";
-  echo >&2 "Try $PROG --help";
-  exit 1;
-}
-
-manage()
-{
-  (
-    source "$CONFDIR/tomcat-manager.conf"
-
-    if [ -z "$TOMCAT_MANAGER_URL" ]; then die "No TOMCAT_MANAGER_URL specified"; fi
-
-    echo "$TOMCAT_MANAGER_URL/html/$1?path=/$2" | wget -q -O /dev/null -i -
-  )
-}
-
-usage() {
-    echo >&2 "Usage: $PROG options"
-    echo >&2
-    echo >&2 "  Exactly one of the following is required:"
-    echo >&2 "    -f|--config <file>        mir-setup site config file"
-    echo >&2 "       --start  <site>        start the given site's webapp"
-    echo >&2 "       --stop   <site>        stop the given site's webapp"
-    echo >&2 "       --reload <site>        reload the given site's webapp"
-    echo >&2
-    echo >&2 "  Debugging options:"
-    echo >&2 "    -d|--debug                Debugging output, including 'set -x' shell trace"
-    echo >&2 "    -p|--checkpoint <start>   Run from specified checkpoint after failed run"
-}
-
-while [ $# != 0 ]; do
-    case "$1" in
-        -f|--config) shift; CONFIGFILE="$1" ;;
-        --start|--stop|--reload) ACTION="$1"; shift; SITE="$1" ;;
-       -d|--debug)  set -x; DEBUG=1 ;;
-       -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
-       -h|-?|--help) usage; exit 0 ;;
-        -*) optdie "$PROG: unknown option $1" ;;
-       *) optdie "$PROG: unexpected argument '$1'" ;;
-    esac
-    shift
-done
-
-case "$ACTION" in
-    --start|--stop|--reload)
-        if [ -n "$CONFIGFILE" ]; then optdie "$PROG: config file specified with $ACTION"; fi
-       echo -n "$ACTION"ing "$SITE..."
-       manage "`echo "$ACTION" | sed -e 's/^--//'`" "$SITE"
-       echo " done."
-       exit 0
-        ;;
-esac
-
-if [ -z "$CONFIGFILE" ]; then optdie "$PROG: no site config file; use -f"; fi
-
-source "$CONFIGFILE"
-
-if [ -z "$SITE" ]; then optdie "$PROG: no site name"; fi
-if [ -z "$FQDN" ]; then optdie "$PROG: no site fqdn"; fi
-if [ -z "$USER" ]; then optdie "$PROG: no user"; fi
-
-OWNER="$USER:$GROUP"
-TOMCATOWNER="$USER:$TOMCATGROUP"
-
-if [ -n "$GROUP" ]; then
-    umask 002
-    PRIVMODE=660
-else
-    umask 022
-    PRIVMODE=600
-fi
-
-if [ -n "$MIRVERSION" ]; then MIRVERSIONOPT="-r$MIRVERSION"; fi
-if [ -n "$SITEVERSION" ]; then SITEVERSIONOPT="-r$SITEVERSION"; fi
-
-if [ -n "$SHAREDB" ]; then
-  if [ -n "$DBNAME" ]; then optdie "$PROG: SHAREDB and DBNAME set"; fi
-  if [ -n "$DBUSER" ]; then optdie "$PROG: SHAREDB and DBUSER set"; fi
-  if [ -n "$DBPASS" ]; then optdie "$PROG: SHAREDB and DBPASS set"; fi
-
-  DBNAME="`perl -ne 'if (/\s*Database\.Name\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
-  DBUSER="`perl -ne 'if (/\s*Database\.Username\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
-  DBPASS="`perl -ne 'if (/\s*Database\.Password\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
-else
-  if [ -z "$DBNAME" ]; then DBNAME="$SITE"; fi
-  if [ -z "$DBUSER" ]; then DBUSER="$SITE"; fi
-  if [ -z "$DBPASS" ]; then DBPASS="`pwgen -s 8 1`"; fi
-fi
-
-if [ -z "$CONFIGPROPERTIES" ]; then CONFIGPROPERTIES="$CONFDIR/config.properties"; fi
-if [ ! -e "$CONFIGPROPERTIES" ]; then
-  optdie "$CONFIGPROPERTIES does not exist"
-fi
-
-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
-}
-
-checkpoint "Create user $USER and groups"
-if [ -n "$RUNNING" ]; then
-  if ! id $USER >/dev/null 2>&1 ;then
-    adduser --disabled-login --gecos "$SITE mir user,,,"  $USER
-  fi
-  if ! getent group $TOMCATGROUP >/dev/null 2>&1  ;then
-    addgroup $TOMCATGROUP
-  fi
-  if id $TOMCATUSER >/dev/null 2>&1 ;then
-    adduser $TOMCATUSER $TOMCATGROUP
-  else
-    die "User $TOMCATUSER does not exist"
-  fi
-  adduser $USER $TOMCATGROUP
-fi
-
-checkpoint "Prepare install directory: $INSTALLDIR"
-if [ -n "$RUNNING" ]; then
-  mkdir -p "$INSTALLDIR"
-  chown "$OWNER" "$INSTALLDIR"
-  chmod g+s "$INSTALLDIR"
-fi
-
-if [ -n "$MIRGITROOT" ]; then
-  checkpoint "Check out Mir [$MIRVERSION] from git $MIRGITROOT"
-  if [ -n "$RUNNING" ]; then
-    cd "$INSTALLDIR"
-    sudo -u "$USER" git clone "$MIRGITROOT"
-    sudo -u "$USER" sh -c "(cd mir && git checkout $MIRVERSION)"
-    chown -R "$OWNER" mir
-  fi
-else
-  checkpoint "Check out Mir [$MIRVERSION] from CVS $MIRCVSROOT"
-  if [ -n "$RUNNING" ]; then
-    cd "$INSTALLDIR"
-    sudo -u "$USER" cvs -z3 -d"$MIRCVSROOT" checkout $MIRVERSIONOPT mir
-    chown -R "$OWNER" mir
-  fi
-fi
-
-if [ -n "$SITEGITROOT" ]; then
-  checkpoint "Check out site templates [$SITEVERSION] from git $SITEGITROOT"
-  if [ -n "$RUNNING" ]; then
-    cd "$INSTALLDIR"
-    sudo -u "$USER" git clone "$SITEGITROOT"
-    sudo -u "$USER" sh -c "(cd $SITEOVERLAYDIR && git checkout $SITEGITVERSION)"
-    chown -R "$OWNER" "$SITEOVERLAYDIR"
-  fi
-else
-  checkpoint "Check out site templates [$SITEVERSION] from CVS $SITECVSROOT"
-  if [ -n "$RUNNING" ]; then
-    cd "$INSTALLDIR"
-    sudo -u "$USER" cvs -z3 -d"$SITECVSROOT" checkout $SITEVERSIONOPT "$SITEOVERLAYDIR"
-    chown -R "$OWNER" "$SITEOVERLAYDIR"
-  fi
-fi
-
-checkpoint "Prepare production directory: $PRODUCTIONDIR"
-if [ -n "$RUNNING" ]; then
-  mkdir -p "$PRODUCTIONDIR"
-  chown "$TOMCATOWNER" "$PRODUCTIONDIR"
-  chmod g+s "$PRODUCTIONDIR"
-  cd "$PRODUCTIONDIR"
-  PRODUCTIONSUBDIRS="abstract comments content de en img inc style"
-  mkdir -p $PRODUCTIONSUBDIRS
-  chown "$TOMCATOWNER" $PRODUCTIONSUBDIRS
-  ln -snf en/index.html
-fi
-
-munge_config_file()
-{
-  (
-    export SITE
-    export FQDN
-    export MIRRORFQDN
-    export SECUREFQDN
-    export ALIASES
-    export USER
-    export DBNAME
-    export DBUSER
-    export DBPASS
-    export PRODUCTIONDIR
-
-    perl -w "$SHAREDIR/munge_config_file.pl" <"$1" >"$2"
-    chown "$OWNER" "$2"
-  )
-}
-
-checkpoint "Install robots.txt file"
-if [ -n "$RUNNING" ]; then
-  munge_config_file "$CONFDIR/robots.txt" "$PRODUCTIONDIR/robots.txt"
-fi
-
-checkpoint "Fetch cities.inc"
-if [ -n "$RUNNING" ]; then
-  wget -O - http://www.indymedia.org/cities.inc |
-    sed -e 's/<br \/>/<br>/gi' >  "$PRODUCTIONDIR/cities.inc"
-  chown $USER:$TOMCATGROUP  "$PRODUCTIONDIR/cities.inc"
-fi
-
-checkpoint "Install site-specific Apache configuration file (non-SSL)"
-if [ -n "$RUNNING" ]; then
-  mkdir -p "$APACHECONFDIR"
-  munge_config_file "$CONFDIR/site-httpd.conf" "$APACHECONFDIR/$SITE.conf"
-fi
-
-checkpoint "Install site-specific Apache configuration file (SSL on dedicated IP)"
-if [ -n "$RUNNING" ]; then
-  mkdir -p "$APACHECONFDIR/ssl-dedicated"
-  munge_config_file "$CONFDIR/site-ssl-dedicated-httpd.conf" "$APACHECONFDIR/ssl-dedicated/$SITE.conf"
-fi
-
-checkpoint "Install site-specific Apache configuration file (SSL fragment for webapp via canonical host)"
-if [ -n "$RUNNING" ]; then
-  mkdir -p "$APACHECONFDIR/ssl-fragments"
-  munge_config_file "$CONFDIR/site-ssl-httpd-fragment.conf" "$APACHECONFDIR/ssl-fragments/$SITE.conf"
-fi
-
-checkpoint "Configure temporary snake-oil SSL cert"
-if [ -n "$RUNNING" ]; then
-  if [ ! -f /etc/apache2/ssl/$SECUREFQDN.crt ]; then
-    ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/apache2/ssl/$SECUREFQDN.crt
-    ln -s /etc/ssl/private/ssl-cert-snakeoil.key /etc/apache2/ssl/$SECUREFQDN.key
-  fi
-fi
-
-checkpoint "Restart Apache with new configuration"
-if [ -n "$RUNNING" ]; then
-  "$APACHECTL" configtest
-  "$APACHECTL" graceful
-fi
-
-checkpoint "Overlay /etc from site template"
-if [ -n "$RUNNING" ]; then
-  cd "$INSTALLDIR/mir"
-  mv etc etc.orig
-  ln -snf "../$SITEOVERLAYDIR/etc"
-fi
-
-if [ -n "$SHAREDB" ]; then
-  checkpoint "Sharing existing database (not creating)"
-  checkpoint "Sharing existing database (not importing/installing)"
-  checkpoint "Sharing existing database (not setting permissions)"
-else
-  checkpoint "Create database"
-  if [ -n "$RUNNING" ]; then
-    sudo -u postgres createdb --encoding=unicode "$DBNAME"
-    sudo -u postgres psql "$DBNAME" <<EOF
-CREATE USER $DBUSER WITH PASSWORD '$DBPASS' NOCREATEDB NOCREATEUSER;
-UPDATE pg_database SET datdba=(SELECT usesysid FROM pg_user WHERE usename='$DBUSER') WHERE datname='$DBNAME';
-EOF
-  fi
-
-  if [ -n "$DBDUMP" ]; then
-    checkpoint "Import database dump"
-    if [ -n "$RUNNING" ]; then
-      zcat "$DBDUMP" | sudo -u postgres pg_restore -d "$DBNAME" -O -x
-    fi
-  else
-    checkpoint "Install default database"
-    if [ -n "$RUNNING" ]; then
-      for i in "$INSTALLDIR"/mir/dbscripts/{create_pg,help*,populate*}.sql; do
-        sudo -u postgres psql -f $i "$DBNAME"
-      done
-    fi
-  fi
-
-  checkpoint "Set database permissions"
-  if [ -n "$RUNNING" ]; then
-    # Clumsy -- produces errors which we should ignore
-    echo >&2 "Don't worry about errors from some of the GRANTs here"
-    sudo -u postgres psql -qto "|psql \"$DBNAME\"" "$DBNAME" <<EOF
-SELECT 'GRANT ALL ON '||relname||' TO $DBUSER;'
-FROM pg_class
-WHERE relname not like 'pg%'
-ORDER by relname;
-EOF
-  fi
-fi
-
-checkpoint "Creating links to needed jar files in mir/lib"
-if [ -n "$RUNNING" ]; then
-  if [ -f /usr/share/java/servlet-2.3.jar ]; then
-    ln -sf /usr/share/java/servlet-2.3.jar "$INSTALLDIR/mir/lib"
-  else
-    die "/usr/share/java/servlet-2.3.jar not found"
-  fi
-  ln -sf /etc/mir-setup/lib/rt.jar "$INSTALLDIR/mir/lib"
-fi
-
-checkpoint "Installing config.properties"
-if [ -n "$RUNNING" ]; then
-  PROPERTIESFILE="$INSTALLDIR/mir/etc/config.properties"
-  touch "$PROPERTIESFILE"
-  chmod "$PRIVMODE" "$PROPERTIESFILE"
-  munge_config_file "$CONFIGPROPERTIES" "$PROPERTIESFILE"
-fi
-
-checkpoint "Running ant to build Mir"
-if [ -n "$RUNNING" ]; then
-  cd "$INSTALLDIR/mir"
-  sudo -u "$USER" TOMCAT_HOME="$TOMCAT_HOME" ant
-fi
-
-checkpoint "Fixing up jar links in mir deployment"
-if [ -n "RUNNING" ]; then
-  rm -f "$INSTALLDIR/mir/bin/mir/WEB-INF/lib/rt.jar"
-  rm -f "$INSTALLDIR/mir/bin/mir/WEB-INF/lib/servlet-2.3.jar"
-  ln -sf /usr/share/java/servlet-2.3.jar "$INSTALLDIR/mir/bin/mir/WEB-INF/lib"
-  ln -sf /etc/mir-setup/lib/rt.jar       "$INSTALLDIR/mir/bin/mir/WEB-INF/lib"
-fi
-
-checkpoint "Creating empty abuse.properties"
-if [ -n "$RUNNING" ]; then
-  touch "$INSTALLDIR/mir/bin/mir/WEB-INF/abuse.properties"
-fi
-
-checkpoint "Fixing file permissions"
-if [ -n "$RUNNING" ]; then
-  cd "$INSTALLDIR/mir"
-  sed -e "s/^GROUP=.*\$/GROUP=$TOMCATGROUP/" perms.sh-dist >perms.sh
-  chmod +x perms.sh
-  ./perms.sh
-fi
-
-checkpoint "Linking into Tomcat Web apps directory"
-if [ -n "$RUNNING" ]; then
-  cd "$WEBAPPSDIR"
-  ln -snf "$INSTALLDIR/mir/bin/mir" "$SITE"
-fi
-
-checkpoint "Restarting tomcat"
-if [ -n "$RUNNING" ]; then
-  if   [ -x /etc/init.d/tomcat5.5 ]; then
-    /etc/init.d/tomcat5.5 force-reload
-  elif [ -x /etc/init.d/tomcat4 ]; then
-    /etc/init.d/tomcat4   force-reload
-  else
-      echo tomcat NOT reloaded, reload manually
-  fi
-fi
-
-checkpoint "All done!"
diff --git a/scripts/mir-setup/mir-setup.lenny b/scripts/mir-setup/mir-setup.lenny
new file mode 100755 (executable)
index 0000000..a3382bd
--- /dev/null
@@ -0,0 +1,378 @@
+#!/bin/bash
+# $Id: mir-setup.lenny,v 1.1.2.1 2010/12/16 18:31:08 ianb Exp $
+
+# Script to install a new Mir site
+
+# Initial version -zak 2005-01-23
+# Moved to traven -zak 2005-04-05
+# Added to CVS    -zak 2005-06-13
+
+set -e
+
+CONFDIR="/etc/mir-setup"
+SHAREDIR="/usr/local/share/mir-setup"
+PROG="`basename $0`"
+
+die()
+{
+  echo >&2 "$@";
+  exit 1;
+}
+
+optdie()
+{
+  echo >&2 "$@";
+  echo >&2 "Try $PROG --help";
+  exit 1;
+}
+
+manage()
+{
+  (
+    source "$CONFDIR/tomcat-manager.conf"
+
+    if [ -z "$TOMCAT_MANAGER_URL" ]; then die "No TOMCAT_MANAGER_URL specified"; fi
+
+    echo "$TOMCAT_MANAGER_URL/html/$1?path=/$2" | wget -q -O /dev/null -i -
+  )
+}
+
+usage() {
+    echo >&2 "Usage: $PROG options"
+    echo >&2
+    echo >&2 "  Exactly one of the following is required:"
+    echo >&2 "    -f|--config <file>        mir-setup site config file"
+    echo >&2 "       --start  <site>        start the given site's webapp"
+    echo >&2 "       --stop   <site>        stop the given site's webapp"
+    echo >&2 "       --reload <site>        reload the given site's webapp"
+    echo >&2
+    echo >&2 "  Debugging options:"
+    echo >&2 "    -d|--debug                Debugging output, including 'set -x' shell trace"
+    echo >&2 "    -p|--checkpoint <start>   Run from specified checkpoint after failed run"
+}
+
+while [ $# != 0 ]; do
+    case "$1" in
+        -f|--config) shift; CONFIGFILE="$1" ;;
+        --start|--stop|--reload) ACTION="$1"; shift; SITE="$1" ;;
+       -d|--debug)  set -x; DEBUG=1 ;;
+       -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
+       -h|-?|--help) usage; exit 0 ;;
+        -*) optdie "$PROG: unknown option $1" ;;
+       *) optdie "$PROG: unexpected argument '$1'" ;;
+    esac
+    shift
+done
+
+case "$ACTION" in
+    --start|--stop|--reload)
+        if [ -n "$CONFIGFILE" ]; then optdie "$PROG: config file specified with $ACTION"; fi
+       echo -n "$ACTION"ing "$SITE..."
+       manage "`echo "$ACTION" | sed -e 's/^--//'`" "$SITE"
+       echo " done."
+       exit 0
+        ;;
+esac
+
+if [ -z "$CONFIGFILE" ]; then optdie "$PROG: no site config file; use -f"; fi
+
+source "$CONFIGFILE"
+
+if [ -z "$SITE" ]; then optdie "$PROG: no site name"; fi
+if [ -z "$FQDN" ]; then optdie "$PROG: no site fqdn"; fi
+if [ -z "$USER" ]; then optdie "$PROG: no user"; fi
+
+OWNER="$USER:$GROUP"
+TOMCATOWNER="$USER:$TOMCATGROUP"
+
+if [ -n "$GROUP" ]; then
+    umask 002
+    PRIVMODE=660
+else
+    umask 022
+    PRIVMODE=600
+fi
+
+if [ -n "$MIRVERSION" ]; then MIRVERSIONOPT="-r$MIRVERSION"; fi
+if [ -n "$SITEVERSION" ]; then SITEVERSIONOPT="-r$SITEVERSION"; fi
+
+if [ -n "$SHAREDB" ]; then
+  if [ -n "$DBNAME" ]; then optdie "$PROG: SHAREDB and DBNAME set"; fi
+  if [ -n "$DBUSER" ]; then optdie "$PROG: SHAREDB and DBUSER set"; fi
+  if [ -n "$DBPASS" ]; then optdie "$PROG: SHAREDB and DBPASS set"; fi
+
+  DBNAME="`perl -ne 'if (/\s*Database\.Name\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
+  DBUSER="`perl -ne 'if (/\s*Database\.Username\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
+  DBPASS="`perl -ne 'if (/\s*Database\.Password\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
+else
+  if [ -z "$DBNAME" ]; then DBNAME="$SITE"; fi
+  if [ -z "$DBUSER" ]; then DBUSER="$SITE"; fi
+  if [ -z "$DBPASS" ]; then DBPASS="`pwgen -s 8 1`"; fi
+fi
+
+if [ -z "$CONFIGPROPERTIES" ]; then CONFIGPROPERTIES="$CONFDIR/config.properties"; fi
+if [ ! -e "$CONFIGPROPERTIES" ]; then
+  optdie "$CONFIGPROPERTIES does not exist"
+fi
+
+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
+}
+
+checkpoint "Create user $USER and groups"
+if [ -n "$RUNNING" ]; then
+  if ! id $USER >/dev/null 2>&1 ;then
+    adduser --disabled-login --gecos "$SITE mir user,,,"  $USER
+  fi
+  if ! getent group $TOMCATGROUP >/dev/null 2>&1  ;then
+    addgroup $TOMCATGROUP
+  fi
+  if id $TOMCATUSER >/dev/null 2>&1 ;then
+    adduser $TOMCATUSER $TOMCATGROUP
+  else
+    die "User $TOMCATUSER does not exist"
+  fi
+  adduser $USER $TOMCATGROUP
+fi
+
+checkpoint "Prepare install directory: $INSTALLDIR"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$INSTALLDIR"
+  chown "$OWNER" "$INSTALLDIR"
+  chmod g+s "$INSTALLDIR"
+fi
+
+if [ -n "$MIRGITROOT" ]; then
+  checkpoint "Check out Mir [$MIRVERSION] from git $MIRGITROOT"
+  if [ -n "$RUNNING" ]; then
+    cd "$INSTALLDIR"
+    sudo -u "$USER" git clone "$MIRGITROOT"
+    sudo -u "$USER" sh -c "(cd mir && git checkout $MIRVERSION)"
+    chown -R "$OWNER" mir
+  fi
+else
+  checkpoint "Check out Mir [$MIRVERSION] from CVS $MIRCVSROOT"
+  if [ -n "$RUNNING" ]; then
+    cd "$INSTALLDIR"
+    sudo -u "$USER" cvs -z3 -d"$MIRCVSROOT" checkout $MIRVERSIONOPT mir
+    chown -R "$OWNER" mir
+  fi
+fi
+
+if [ -n "$SITEGITROOT" ]; then
+  checkpoint "Check out site templates [$SITEVERSION] from git $SITEGITROOT"
+  if [ -n "$RUNNING" ]; then
+    cd "$INSTALLDIR"
+    sudo -u "$USER" git clone "$SITEGITROOT"
+    sudo -u "$USER" sh -c "(cd $SITEOVERLAYDIR && git checkout $SITEGITVERSION)"
+    chown -R "$OWNER" "$SITEOVERLAYDIR"
+  fi
+else
+  checkpoint "Check out site templates [$SITEVERSION] from CVS $SITECVSROOT"
+  if [ -n "$RUNNING" ]; then
+    cd "$INSTALLDIR"
+    sudo -u "$USER" cvs -z3 -d"$SITECVSROOT" checkout $SITEVERSIONOPT "$SITEOVERLAYDIR"
+    chown -R "$OWNER" "$SITEOVERLAYDIR"
+  fi
+fi
+
+checkpoint "Prepare production directory: $PRODUCTIONDIR"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$PRODUCTIONDIR"
+  chown "$TOMCATOWNER" "$PRODUCTIONDIR"
+  chmod g+s "$PRODUCTIONDIR"
+  cd "$PRODUCTIONDIR"
+  PRODUCTIONSUBDIRS="abstract comments content de en img inc style"
+  mkdir -p $PRODUCTIONSUBDIRS
+  chown "$TOMCATOWNER" $PRODUCTIONSUBDIRS
+  ln -snf en/index.html
+fi
+
+munge_config_file()
+{
+  (
+    export SITE
+    export FQDN
+    export MIRRORFQDN
+    export SECUREFQDN
+    export ALIASES
+    export USER
+    export DBNAME
+    export DBUSER
+    export DBPASS
+    export PRODUCTIONDIR
+
+    perl -w "$SHAREDIR/munge_config_file.pl" <"$1" >"$2"
+    chown "$OWNER" "$2"
+  )
+}
+
+checkpoint "Install robots.txt file"
+if [ -n "$RUNNING" ]; then
+  munge_config_file "$CONFDIR/robots.txt" "$PRODUCTIONDIR/robots.txt"
+fi
+
+checkpoint "Fetch cities.inc"
+if [ -n "$RUNNING" ]; then
+  wget -O - http://www.indymedia.org/cities.inc |
+    sed -e 's/<br \/>/<br>/gi' >  "$PRODUCTIONDIR/cities.inc"
+  chown $USER:$TOMCATGROUP  "$PRODUCTIONDIR/cities.inc"
+fi
+
+checkpoint "Install site-specific Apache configuration file (non-SSL)"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$APACHECONFDIR"
+  munge_config_file "$CONFDIR/site-httpd.conf" "$APACHECONFDIR/$SITE.conf"
+fi
+
+checkpoint "Install site-specific Apache configuration file (SSL on dedicated IP)"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$APACHECONFDIR/ssl-dedicated"
+  munge_config_file "$CONFDIR/site-ssl-dedicated-httpd.conf" "$APACHECONFDIR/ssl-dedicated/$SITE.conf"
+fi
+
+checkpoint "Install site-specific Apache configuration file (SSL fragment for webapp via canonical host)"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$APACHECONFDIR/ssl-fragments"
+  munge_config_file "$CONFDIR/site-ssl-httpd-fragment.conf" "$APACHECONFDIR/ssl-fragments/$SITE.conf"
+fi
+
+checkpoint "Configure temporary snake-oil SSL cert"
+if [ -n "$RUNNING" ]; then
+  if [ ! -f /etc/apache2/ssl/$SECUREFQDN.crt ]; then
+    ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/apache2/ssl/$SECUREFQDN.crt
+    ln -s /etc/ssl/private/ssl-cert-snakeoil.key /etc/apache2/ssl/$SECUREFQDN.key
+  fi
+fi
+
+checkpoint "Restart Apache with new configuration"
+if [ -n "$RUNNING" ]; then
+  "$APACHECTL" configtest
+  "$APACHECTL" graceful
+fi
+
+checkpoint "Overlay /etc from site template"
+if [ -n "$RUNNING" ]; then
+  cd "$INSTALLDIR/mir"
+  mv etc etc.orig
+  ln -snf "../$SITEOVERLAYDIR/etc"
+fi
+
+if [ -n "$SHAREDB" ]; then
+  checkpoint "Sharing existing database (not creating)"
+  checkpoint "Sharing existing database (not importing/installing)"
+  checkpoint "Sharing existing database (not setting permissions)"
+else
+  checkpoint "Create database"
+  if [ -n "$RUNNING" ]; then
+    sudo -u postgres createdb --encoding=unicode "$DBNAME"
+    sudo -u postgres psql "$DBNAME" <<EOF
+CREATE USER $DBUSER WITH PASSWORD '$DBPASS' NOCREATEDB NOCREATEUSER;
+UPDATE pg_database SET datdba=(SELECT usesysid FROM pg_user WHERE usename='$DBUSER') WHERE datname='$DBNAME';
+EOF
+  fi
+
+  if [ -n "$DBDUMP" ]; then
+    checkpoint "Import database dump"
+    if [ -n "$RUNNING" ]; then
+      zcat "$DBDUMP" | sudo -u postgres pg_restore -d "$DBNAME" -O -x
+    fi
+  else
+    checkpoint "Install default database"
+    if [ -n "$RUNNING" ]; then
+      for i in "$INSTALLDIR"/mir/dbscripts/{create_pg,help*,populate*}.sql; do
+        sudo -u postgres psql -f $i "$DBNAME"
+      done
+    fi
+  fi
+
+  checkpoint "Set database permissions"
+  if [ -n "$RUNNING" ]; then
+    # Clumsy -- produces errors which we should ignore
+    echo >&2 "Don't worry about errors from some of the GRANTs here"
+    sudo -u postgres psql -qto "|psql \"$DBNAME\"" "$DBNAME" <<EOF
+SELECT 'GRANT ALL ON '||relname||' TO $DBUSER;'
+FROM pg_class
+WHERE relname not like 'pg%'
+ORDER by relname;
+EOF
+  fi
+fi
+
+checkpoint "Creating links to needed jar files in mir/lib"
+if [ -n "$RUNNING" ]; then
+  if [ -f /usr/share/java/servlet-2.3.jar ]; then
+    ln -sf /usr/share/java/servlet-2.3.jar "$INSTALLDIR/mir/lib"
+  else
+    die "/usr/share/java/servlet-2.3.jar not found"
+  fi
+  ln -sf /etc/mir-setup/lib/rt.jar "$INSTALLDIR/mir/lib"
+fi
+
+checkpoint "Installing config.properties"
+if [ -n "$RUNNING" ]; then
+  PROPERTIESFILE="$INSTALLDIR/mir/etc/config.properties"
+  touch "$PROPERTIESFILE"
+  chmod "$PRIVMODE" "$PROPERTIESFILE"
+  munge_config_file "$CONFIGPROPERTIES" "$PROPERTIESFILE"
+fi
+
+checkpoint "Running ant to build Mir"
+if [ -n "$RUNNING" ]; then
+  cd "$INSTALLDIR/mir"
+  sudo -u "$USER" TOMCAT_HOME="$TOMCAT_HOME" ant
+fi
+
+checkpoint "Fixing up jar links in mir deployment"
+if [ -n "RUNNING" ]; then
+  rm -f "$INSTALLDIR/mir/bin/mir/WEB-INF/lib/rt.jar"
+  rm -f "$INSTALLDIR/mir/bin/mir/WEB-INF/lib/servlet-2.3.jar"
+  ln -sf /usr/share/java/servlet-2.3.jar "$INSTALLDIR/mir/bin/mir/WEB-INF/lib"
+  ln -sf /etc/mir-setup/lib/rt.jar       "$INSTALLDIR/mir/bin/mir/WEB-INF/lib"
+fi
+
+checkpoint "Creating empty abuse.properties"
+if [ -n "$RUNNING" ]; then
+  touch "$INSTALLDIR/mir/bin/mir/WEB-INF/abuse.properties"
+fi
+
+checkpoint "Fixing file permissions"
+if [ -n "$RUNNING" ]; then
+  cd "$INSTALLDIR/mir"
+  sed -e "s/^GROUP=.*\$/GROUP=$TOMCATGROUP/" perms.sh-dist >perms.sh
+  chmod +x perms.sh
+  ./perms.sh
+fi
+
+checkpoint "Linking into Tomcat Web apps directory"
+if [ -n "$RUNNING" ]; then
+  cd "$WEBAPPSDIR"
+  ln -snf "$INSTALLDIR/mir/bin/mir" "$SITE"
+fi
+
+checkpoint "Restarting tomcat"
+if [ -n "$RUNNING" ]; then
+  if   [ -x /etc/init.d/tomcat5.5 ]; then
+    /etc/init.d/tomcat5.5 force-reload
+  elif [ -x /etc/init.d/tomcat4 ]; then
+    /etc/init.d/tomcat4   force-reload
+  else
+      echo tomcat NOT reloaded, reload manually
+  fi
+fi
+
+checkpoint "All done!"
diff --git a/scripts/mir-setup/mir-setup.squeeze b/scripts/mir-setup/mir-setup.squeeze
new file mode 100755 (executable)
index 0000000..1e17a8d
--- /dev/null
@@ -0,0 +1,390 @@
+#!/bin/bash
+# $Id: mir-setup.squeeze,v 1.1.2.1 2010/12/16 18:31:08 ianb Exp $
+
+# Script to install a new Mir site
+
+# Initial version -zak 2005-01-23
+# Moved to traven -zak 2005-04-05
+# Added to CVS    -zak 2005-06-13
+
+set -e
+
+CONFDIR="/etc/mir-setup"
+SHAREDIR="/usr/local/share/mir-setup"
+PROG="`basename $0`"
+
+die()
+{
+  echo >&2 "$@";
+  exit 1;
+}
+
+optdie()
+{
+  echo >&2 "$@";
+  echo >&2 "Try $PROG --help";
+  exit 1;
+}
+
+manage()
+{
+  (
+    source "$CONFDIR/tomcat-manager.conf"
+
+    if [ -z "$TOMCAT_MANAGER_URL" ]; then die "No TOMCAT_MANAGER_URL specified"; fi
+
+    echo "$TOMCAT_MANAGER_URL/html/$1?path=/$2" | wget -q -O /dev/null -i -
+  )
+}
+
+usage() {
+    echo >&2 "Usage: $PROG options"
+    echo >&2
+    echo >&2 "  Exactly one of the following is required:"
+    echo >&2 "    -f|--config <file>        mir-setup site config file"
+    echo >&2 "       --start  <site>        start the given site's webapp"
+    echo >&2 "       --stop   <site>        stop the given site's webapp"
+    echo >&2 "       --reload <site>        reload the given site's webapp"
+    echo >&2
+    echo >&2 "  Debugging options:"
+    echo >&2 "    -d|--debug                Debugging output, including 'set -x' shell trace"
+    echo >&2 "    -p|--checkpoint <start>   Run from specified checkpoint after failed run"
+}
+
+while [ $# != 0 ]; do
+    case "$1" in
+        -f|--config) shift; CONFIGFILE="$1" ;;
+        --start|--stop|--reload) ACTION="$1"; shift; SITE="$1" ;;
+       -d|--debug)  set -x; DEBUG=1 ;;
+       -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
+       -h|-?|--help) usage; exit 0 ;;
+        -*) optdie "$PROG: unknown option $1" ;;
+       *) optdie "$PROG: unexpected argument '$1'" ;;
+    esac
+    shift
+done
+
+case "$ACTION" in
+    --start|--stop|--reload)
+        if [ -n "$CONFIGFILE" ]; then optdie "$PROG: config file specified with $ACTION"; fi
+       echo -n "$ACTION"ing "$SITE..."
+       manage "`echo "$ACTION" | sed -e 's/^--//'`" "$SITE"
+       echo " done."
+       exit 0
+        ;;
+esac
+
+if [ -z "$CONFIGFILE" ]; then optdie "$PROG: no site config file; use -f"; fi
+
+source "$CONFIGFILE"
+
+if [ -z "$SITE" ]; then optdie "$PROG: no site name"; fi
+if [ -z "$FQDN" ]; then optdie "$PROG: no site fqdn"; fi
+if [ -z "$USER" ]; then optdie "$PROG: no user"; fi
+
+OWNER="$USER:$GROUP"
+TOMCATOWNER="$USER:$TOMCATGROUP"
+
+if [ -n "$GROUP" ]; then
+    umask 002
+    PRIVMODE=660
+else
+    umask 022
+    PRIVMODE=600
+fi
+
+if [ -n "$MIRVERSION" ]; then MIRVERSIONOPT="-r$MIRVERSION"; fi
+if [ -n "$SITEVERSION" ]; then SITEVERSIONOPT="-r$SITEVERSION"; fi
+
+if [ -n "$SHAREDB" ]; then
+  if [ -n "$DBNAME" ]; then optdie "$PROG: SHAREDB and DBNAME set"; fi
+  if [ -n "$DBUSER" ]; then optdie "$PROG: SHAREDB and DBUSER set"; fi
+  if [ -n "$DBPASS" ]; then optdie "$PROG: SHAREDB and DBPASS set"; fi
+
+  DBNAME="`perl -ne 'if (/\s*Database\.Name\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
+  DBUSER="`perl -ne 'if (/\s*Database\.Username\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
+  DBPASS="`perl -ne 'if (/\s*Database\.Password\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`"
+else
+  if [ -z "$DBNAME" ]; then DBNAME="$SITE"; fi
+  if [ -z "$DBUSER" ]; then DBUSER="$SITE"; fi
+  if [ -z "$DBPASS" ]; then DBPASS="`pwgen -s 8 1`"; fi
+fi
+
+if [ -z "$CONFIGPROPERTIES" ]; then CONFIGPROPERTIES="$CONFDIR/config.properties"; fi
+if [ ! -e "$CONFIGPROPERTIES" ]; then
+  optdie "$CONFIGPROPERTIES does not exist"
+fi
+
+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
+}
+
+checkpoint "Create user $USER and groups"
+if [ -n "$RUNNING" ]; then
+  if ! id $USER >/dev/null 2>&1 ;then
+    adduser --disabled-login --gecos "$SITE mir user,,,"  $USER
+  fi
+  if ! getent group $TOMCATGROUP >/dev/null 2>&1  ;then
+    addgroup $TOMCATGROUP
+  fi
+  if id $TOMCATUSER >/dev/null 2>&1 ;then
+    adduser $TOMCATUSER $TOMCATGROUP
+  else
+    die "User $TOMCATUSER does not exist"
+  fi
+  adduser $USER $TOMCATGROUP
+fi
+
+checkpoint "Prepare install directory: $INSTALLDIR"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$INSTALLDIR"
+  chown "$OWNER" "$INSTALLDIR"
+  chmod g+s "$INSTALLDIR"
+fi
+
+if [ -n "$MIRGITROOT" ]; then
+  checkpoint "Check out Mir [$MIRVERSION] from git $MIRGITROOT"
+  if [ -n "$RUNNING" ]; then
+    cd "$INSTALLDIR"
+    sudo -u "$USER" git clone "$MIRGITROOT"
+    sudo -u "$USER" sh -c "(cd mir && git checkout $MIRVERSION)"
+    chown -R "$OWNER" mir
+  fi
+else
+  checkpoint "Check out Mir [$MIRVERSION] from CVS $MIRCVSROOT"
+  if [ -n "$RUNNING" ]; then
+    cd "$INSTALLDIR"
+    sudo -u "$USER" cvs -z3 -d"$MIRCVSROOT" checkout $MIRVERSIONOPT mir
+    chown -R "$OWNER" mir
+  fi
+fi
+
+if [ -n "$SITEGITROOT" ]; then
+  checkpoint "Check out site templates [$SITEVERSION] from git $SITEGITROOT"
+  if [ -n "$RUNNING" ]; then
+    cd "$INSTALLDIR"
+    sudo -u "$USER" git clone "$SITEGITROOT"
+    sudo -u "$USER" sh -c "(cd $SITEOVERLAYDIR && git checkout $SITEGITVERSION)"
+    chown -R "$OWNER" "$SITEOVERLAYDIR"
+  fi
+else
+  checkpoint "Check out site templates [$SITEVERSION] from CVS $SITECVSROOT"
+  if [ -n "$RUNNING" ]; then
+    cd "$INSTALLDIR"
+    sudo -u "$USER" cvs -z3 -d"$SITECVSROOT" checkout $SITEVERSIONOPT "$SITEOVERLAYDIR"
+    chown -R "$OWNER" "$SITEOVERLAYDIR"
+  fi
+fi
+
+checkpoint "Prepare production directory: $PRODUCTIONDIR"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$PRODUCTIONDIR"
+  chown "$TOMCATOWNER" "$PRODUCTIONDIR"
+  chmod g+s "$PRODUCTIONDIR"
+  cd "$PRODUCTIONDIR"
+  PRODUCTIONSUBDIRS="abstract comments content de en img inc style"
+  mkdir -p $PRODUCTIONSUBDIRS
+  chown "$TOMCATOWNER" $PRODUCTIONSUBDIRS
+  ln -snf en/index.html
+fi
+
+munge_config_file()
+{
+  (
+    export SITE
+    export FQDN
+    export MIRRORFQDN
+    export SECUREFQDN
+    export ALIASES
+    export USER
+    export DBNAME
+    export DBUSER
+    export DBPASS
+    export PRODUCTIONDIR
+
+    perl -w "$SHAREDIR/munge_config_file.pl" <"$1" >"$2"
+    chown "$OWNER" "$2"
+  )
+}
+
+checkpoint "Install robots.txt file"
+if [ -n "$RUNNING" ]; then
+  munge_config_file "$CONFDIR/robots.txt" "$PRODUCTIONDIR/robots.txt"
+fi
+
+checkpoint "Fetch cities.inc"
+if [ -n "$RUNNING" ]; then
+  wget -O - http://www.indymedia.org/cities.inc |
+    sed -e 's/<br \/>/<br>/gi' >  "$PRODUCTIONDIR/cities.inc"
+  chown $USER:$TOMCATGROUP  "$PRODUCTIONDIR/cities.inc"
+fi
+
+checkpoint "Install site-specific Apache configuration file (non-SSL)"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$APACHECONFDIR"
+  munge_config_file "$CONFDIR/site-httpd.conf" "$APACHECONFDIR/$SITE.conf"
+fi
+
+checkpoint "Install site-specific Apache configuration file (SSL on dedicated IP)"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$APACHECONFDIR/ssl-dedicated"
+  munge_config_file "$CONFDIR/site-ssl-dedicated-httpd.conf" "$APACHECONFDIR/ssl-dedicated/$SITE.conf"
+fi
+
+checkpoint "Install site-specific Apache configuration file (SSL fragment for webapp via canonical host)"
+if [ -n "$RUNNING" ]; then
+  mkdir -p "$APACHECONFDIR/ssl-fragments"
+  munge_config_file "$CONFDIR/site-ssl-httpd-fragment.conf" "$APACHECONFDIR/ssl-fragments/$SITE.conf"
+fi
+
+checkpoint "Configure temporary snake-oil SSL cert"
+if [ -n "$RUNNING" ]; then
+  if [ ! -f /etc/apache2/ssl/$SECUREFQDN.crt ]; then
+    ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/apache2/ssl/$SECUREFQDN.crt
+    ln -s /etc/ssl/private/ssl-cert-snakeoil.key /etc/apache2/ssl/$SECUREFQDN.key
+  fi
+fi
+
+checkpoint "Restart Apache with new configuration"
+if [ -n "$RUNNING" ]; then
+  "$APACHECTL" configtest
+  "$APACHECTL" graceful
+fi
+
+checkpoint "Overlay /etc from site template"
+if [ -n "$RUNNING" ]; then
+  cd "$INSTALLDIR/mir"
+  mv etc etc.orig
+  ln -snf "../$SITEOVERLAYDIR/etc"
+fi
+
+if [ -n "$SHAREDB" ]; then
+  checkpoint "Sharing existing database (not creating)"
+  checkpoint "Sharing existing database (not importing/installing)"
+  checkpoint "Sharing existing database (not setting permissions)"
+else
+  checkpoint "Create database"
+  if [ -n "$RUNNING" ]; then
+    sudo -u postgres createdb --encoding=unicode "$DBNAME"
+    sudo -u postgres psql "$DBNAME" <<EOF
+CREATE USER $DBUSER WITH PASSWORD '$DBPASS' NOCREATEDB NOCREATEUSER;
+UPDATE pg_database SET datdba=(SELECT usesysid FROM pg_user WHERE usename='$DBUSER') WHERE datname='$DBNAME';
+EOF
+  fi
+
+  if [ -n "$DBDUMP" ]; then
+    checkpoint "Import database dump"
+    if [ -n "$RUNNING" ]; then
+      zcat "$DBDUMP" | sudo -u postgres pg_restore -d "$DBNAME" -O -x
+    fi
+  else
+    checkpoint "Install default database"
+    if [ -n "$RUNNING" ]; then
+      for i in "$INSTALLDIR"/mir/dbscripts/{create_pg,help*,populate*}.sql; do
+        sudo -u postgres psql -f $i "$DBNAME"
+      done
+    fi
+  fi
+
+  checkpoint "Set database permissions"
+  if [ -n "$RUNNING" ]; then
+    # Clumsy -- produces errors which we should ignore
+    echo >&2 "Don't worry about errors from some of the GRANTs here"
+    sudo -u postgres psql -qto "|psql \"$DBNAME\"" "$DBNAME" <<EOF
+SELECT 'GRANT ALL ON '||relname||' TO $DBUSER;'
+FROM pg_class
+WHERE relname not like 'pg%'
+ORDER by relname;
+EOF
+  fi
+fi
+
+checkpoint "Creating links to needed jar files in mir/lib"
+if [ -n "$RUNNING" ]; then
+  if [ -f /usr/share/java/servlet-2.3.jar ]; then
+    ln -sf /usr/share/java/servlet-2.3.jar "$INSTALLDIR/mir/lib"
+  else
+    die "/usr/share/java/servlet-2.3.jar not found"
+  fi
+  ln -sf /etc/mir-setup/lib/rt.jar "$INSTALLDIR/mir/lib"
+fi
+
+checkpoint "Installing config.properties"
+if [ -n "$RUNNING" ]; then
+  PROPERTIESFILE="$INSTALLDIR/mir/etc/config.properties"
+  touch "$PROPERTIESFILE"
+  chmod "$PRIVMODE" "$PROPERTIESFILE"
+  munge_config_file "$CONFIGPROPERTIES" "$PROPERTIESFILE"
+fi
+
+checkpoint "Running ant to build Mir"
+if [ -n "$RUNNING" ]; then
+  cd "$INSTALLDIR/mir"
+  sudo -u "$USER" TOMCAT_HOME="$TOMCAT_HOME" ant
+fi
+
+checkpoint "Fixing up jar links in mir deployment"
+if [ -n "RUNNING" ]; then
+  rm -f "$INSTALLDIR/mir/bin/mir/WEB-INF/lib/rt.jar"
+  rm -f "$INSTALLDIR/mir/bin/mir/WEB-INF/lib/servlet-2.3.jar"
+  ln -sf /usr/share/java/servlet-2.3.jar "$INSTALLDIR/mir/bin/mir/WEB-INF/lib"
+  ln -sf /etc/mir-setup/lib/rt.jar       "$INSTALLDIR/mir/bin/mir/WEB-INF/lib"
+fi
+
+checkpoint "Creating empty abuse.properties"
+if [ -n "$RUNNING" ]; then
+  touch "$INSTALLDIR/mir/bin/mir/WEB-INF/abuse.properties"
+fi
+
+checkpoint "Fixing file permissions"
+if [ -n "$RUNNING" ]; then
+  cd "$INSTALLDIR/mir"
+  sed -e "s/^GROUP=.*\$/GROUP=$TOMCATGROUP/" perms.sh-dist >perms.sh
+  chmod +x perms.sh
+  ./perms.sh
+fi
+
+checkpoint "Enabling symlinks in tomcat"
+if [ -n "$RUNNING" ]; then
+    if ! fgrep -q 'allowLinking="true"' /etc/tomcat6/context.xml
+    then
+        cp /etc/tomcat6/context.xml /etc/tomcat6/context.xml.tmp
+        sed -e 's/<Context/<Context allowLinking="true"/;' /etc/tomcat6/context.xml.tmp > /etc/tomcat6/context.xml
+        rm /etc/tomcat6/context.xml.tmp
+    fi
+fi
+
+checkpoint "Linking into Tomcat Web apps directory"
+if [ -n "$RUNNING" ]; then
+  cd "$WEBAPPSDIR"
+  ln -snf "$INSTALLDIR/mir/bin/mir" "$SITE"
+fi
+
+checkpoint "Restarting tomcat"
+if [ -n "$RUNNING" ]; then
+  if   [ -x /etc/init.d/tomcat6 ]; then
+    /etc/init.d/tomcat6 force-reload
+  elif   [ -x /etc/init.d/tomcat5.5 ]; then
+    /etc/init.d/tomcat5.5 force-reload
+  elif [ -x /etc/init.d/tomcat4 ]; then
+    /etc/init.d/tomcat4   force-reload
+  else
+      echo tomcat NOT reloaded, reload manually
+  fi
+fi
+
+checkpoint "All done!"