#!/bin/sh function usage { echo "Usage: $(basename $0) [-p] WikiUsername" exit 1 } function user_mentioned { RETURN=1 # Argument list too long: grep -q $USER $TWIKI_DATA/*/*txt for FILE in $(find $TWIKI_DATA -name \*.txt -maxdepth 2 -mindepth 2); do grep -l $1 $FILE && RETURN=0 done return $RETURN } set -e WIKI_BASE=/var/lib/twiki APACHE_USER=www-data PURGE= [ $TMP ] || TMP=/tmp # commandline opts only work for one package ... while getopts "s:p" OPTION; do case $OPTION in p) PURGE="yes" ;; *) echo "Unknown argument -$OPTION" >&2 ;; esac done shift $(($OPTIND - 1)) [ "$1" ] || usage TWIKI_DATA=$WIKI_BASE/data for USER in $@; do TMPFILE=$(mktemp -t) # remove the user from the password file grep -v "^$USER:" $TWIKI_DATA/.htpasswd > $TMPFILE chown --reference=$TWIKI_DATA/.htpasswd $TMPFILE mv -b $TMPFILE $TWIKI_DATA/.htpasswd # remove the user from TWikiUsers grep -v "* $USER -" $TWIKI_DATA/Main/TWikiUsers.txt > $TMPFILE chown --reference=$TWIKI_DATA/Main/TWikiUsers.txt $TMPFILE mv $TMPFILE $TWIKI_DATA/Main/TWikiUsers.txt su - $APACHE_USER -c "ci -l -m'Removed $USER' $TWIKI_DATA/Main/TWikiUsers.txt" # remove the user from all groups he is in: for GROUP in $(grep -l "Set GROUP =.*$USER" /var/lib/twiki/data/Main/*Group.txt); do sed -e "s/^\(.*Set GROUP =.*\) *$USER,\? *\(.*\)$/\1\2/" $GROUP > $TMPFILE chown --reference=$GROUP $TMPFILE mv $TMPFILE $GROUP su - $APACHE_USER -c "ci -l -m'Removed $USER' $GROUP" done if [ "$PURGE" ]; then mv $TWIKI_DATA/Main/$USER.txt* $TMP # remove the user completly only if he's mentioned nowhere TMPFILE=$(mktemp) if user_mentioned $USER > $TMPFILE; then echo "User $USER not purged since still mentioned in these topics:" cat $TMPFILE mv $TMP/$USER.txt* $TWIKI_DATA/Main/ else rm $TMP/$USER.txt* fi rm $TMPFILE else # don't remove the user topic # but remove email address and set a "retired" comment sed -e "s/\(.*\* Email:\).*/\1/;s/\(.*\* Comment:\).*/\1 Retired User/" $TWIKI_DATA/Main/$USER.txt > $TMPFILE chown --reference=$TWIKI_DATA/Main/$USER.txt $TMPFILE mv $TMPFILE $TWIKI_DATA/Main/$USER.txt su - $APACHE_USER -c "ci -l -m'Retired $USER' $TWIKI_DATA/Main/$USER.txt" fi done