# All config changes are tracked in RCS.
#
# needs something like this in sudoers:
-# %apachectrl ALL=(root) /usr/sbin/restart-apache
+# %apachectrl ALL=(root) /usr/sbin/apache2-vhost-update
-# Copyright (c) 2009 Peter Palfrader <peter@palfrader.org>
+# Copyright (c) 2009,2010 Peter Palfrader <peter@palfrader.org>
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
-STATINGDIR="/etc/apache2/sites-staging"
+STAGINGDIR="/etc/apache2/sites-staging"
DESTINATION="/etc/apache2/sites-available"
usage() {
exit 1
fi
-if ! [ -f "$STATINGDIR/$site" ]; then
- echo "$STATINGDIR/$site does not exist or is not a file" >&2
+if [ -f "$STAGINGDIR/$site.conf" -a ! -f "$STAGINGDIR/$site" ] ; then
+ site="$site.conf"
+fi
+
+if ! [ -f "$STAGINGDIR/$site" ]; then
+ echo "$STAGINGDIR/$site does not exist or is not a file" >&2
exit 1
fi
exit 1
fi
-if diff "$STATINGDIR/$site" "$DESTINATION/$site" > /dev/null; then
+if diff "$STAGINGDIR/$site" "$DESTINATION/$site" > /dev/null; then
echo "No differences, not doing anything." >&2
exit 1
fi
exit 1
fi
-cp -f "$STATINGDIR/$site" "$DESTINATION/$site"
+cp -f "$STAGINGDIR/$site" "$DESTINATION/$site"
if grep -i include "$DESTINATION/$site" > /dev/null; then
echo "New site may have include statements - rejecting." >&2
exit 1
fi
+if grep -i LoadModule "$DESTINATION/$site" > /dev/null; then
+ echo "New site may have LoadModule statements - rejecting." >&2
+ rm -f "$DESTINATION/$site"
+ co "$DESTINATION/$site"
+ exit 1
+fi
+
+if grep -i LoadFile "$DESTINATION/$site" > /dev/null; then
+ echo "New site may have LoadFile statements - rejecting." >&2
+ rm -f "$DESTINATION/$site"
+ co "$DESTINATION/$site"
+ exit 1
+fi
+
/usr/sbin/apache2ctl configtest
if [ "$?" != "0" ]; then
echo "configtest returned errors; reverting." >&2
exit 1
fi
+echo "Differences:"
+rcsdiff -u "$DESTINATION/$site"
+
echo "update run by $USER($SUDO_USER) at `date -R -u` on `hostname -f`" | \
ci -u "$DESTINATION/$site"
if [ "$?" != "0" ]; then