#!/bin/sh

Die () { # [Message [Error_code]]
  test "${2:-2}" -lt 1 || echo -n "$Usage
ERROR: " >&2
  test -z "$1" || echo "${1:-UNKNOWN}" >&2
  test "${2:-2}" -lt 0 || exit "${2:-2}"
}

SHARE=/usr/share/moin		# path of MoinMoin shared files
HTDOCS=/usr/share/moin/htdocs			# path of MoinMoin htdocs files
WIKIS=/var/www/wiki		# path of wikis tree
ACFG=/etc/httpd2/conf		# apache config directory
SITES="$ACFG/sites-available"	# apache vhosts available
LOGS=
PFX="moin-"			# VHOST prefix
USER=apache2; GROUP=apache2	# UID and GID
PKG=moin
VERSION="$(rpmquery --qf "%{VERSION}" $PKG | tr -d .)"

test -n "$1" || { # list wikis
# TODO more
  echo "Wiki sites configured:"
  ls "$SITES/$PFX"*.conf 2>/dev/null | sed 's@.*/\(.*\).conf@\t\1@'
  echo
  echo "To create new wiki use $0 sitename [alias [alias ...]]"
  exit 0
}

SITE="$1"; INSTANCE="${SITE%%.*}"
CONF="$SITES/$PFX$SITE.conf"
DESTDIR="$WIKIS/$INSTANCE"
shift

test -f "$CONF" && { # print instance info
# TODO much more
  echo
  echo "===	$SITE exists:"
  echo
  cat "$CONF"
  echo
  echo "===	$DESTDIR exists:"
  ls "$DESTDIR"
  exit 0
} || test -d "$DESTDIR" && { # namespace clash
  echo "$DESTDIR already exists, check $SITES"
  exit 1
} || :

mkdir -p $DESTDIR/cgi-bin $DESTDIR/static
cp -R $SHARE/data $DESTDIR
cp -R $SHARE/underlay $DESTDIR
cp $SHARE/server/moin.cgi $DESTDIR/cgi-bin/
cp $SHARE/server/moinmodpy.py $DESTDIR/cgi-bin/
sed "
s@instance_dir = wikiconfig_dir@instance_dir = os.path.realpath(os.path.join(wikiconfig_dir, '..'))@
" $SHARE/config/wikiconfig.py > $DESTDIR/cgi-bin/wikiconfig.py

chown -R $USER:$GROUP $DESTDIR
chmod -R ug+rwX $DESTDIR
chmod -R o-rwx $DESTDIR

cat > "$CONF" <<@@@ 
<VirtualHost *:80>
ServerName $SITE
`for N; do echo ServerAlias $N; done`
RewriteEngine On
RewriteLog /etc/httpd2/logs/rewrite_log
RewriteRule ^/moin_static$VERSION/(.*)\$ $HTDOCS/\$1 [last]
RewriteRule ^/static/(.*)\$ $DESTDIR/static/\$1 [last]

ScriptAliasMatch ^(.*)$ $DESTDIR/cgi-bin/moin.cgi\$1
<Directory "$DESTDIR/cgi-bin/">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Directory "$HTDOCS/">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>
@@@

a2ensite vhosts
a2ensite $PFX$SITE
a2enmod rewrite
a2enmod cgi

service httpd2 restart

