Mailman-History

Masterplan

  • Informationsverteilung an Neubienen
  • Rechteentzug bei Vereinsaustritt

Skizze

Mitglieder werden auf den Mailinglisten angemeldet und bei Austritt abgemeldet. Die Aenderung der Listen enthaelt Hinweise fuer die Systemadminsitration (Privilegienrueckbau) und eine Informationssystem fuer Neumitglieder.

Plan I

History fuer Listenmitgliedschaften bereitstellen.

Skizze

  • Taeglich wird (mit list_members) die Liste der Subscriber gedumpt.
  • Diese wird in eine Datei geschrieben, die unter RCS steht.
  • Die Aenderungen zum Vortag werden festgestellt
  • Historie anhand der System-Backups restaurieren
watch-lists
#!/bin/bash
 
export PATH=$PATH:/usr/sbin
 
DIR=/var/lib/watch-lists
 
LISTS="
        mitglieder
        mitglieder-announce
"
 
for i in $LISTS ; do
        FILE="$DIR/$i"
 
        if [ ! -e "$FILE" ]; then
                mkdir -p $DIR
                mkdir -p $DIR/RCS
                touch $FILE
                ci -u -q $FILE < /dev/null
        fi
 
        co -q -l $FILE
        list_members $i | sort | uniq > $FILE
 
        rcsdiff -q $FILE
        ci -q -u -m. $FILE
done
/etc/cron.d/watch-lists
	10 07 * * * root /usr/local/bin/watch-lists

Das Diff wird cron an admin@ vermailt.

Die History wird anhand der Datensicherungen restauriert und im RCS abgelegt. Dafuer werden die Listenmitglieder aus der config.pck-Datei extrahiert und wird das RCS-Eincheckdatum auf den Zeitpunkt der Sicherung gesetzt.

#!/bin/bash
#
# fake rcs history for mailman list files:
# reverse history from backed up pickle files
#

if false ; then
find ~/sys01 ~/sys02 -type f | awk -F'[/.]' '{ print $0,$4,$6,$11 }' | (
        while read file sys date list ; do
                # echo "$file*$sys*$date*$list"
                ~chris/bin/unpickle.py $file |
                        awk '$1 == "members" {print $0}' |
                        sed 's/^.*{//;s/}$//;s/,/\n/g;'  |
                        sed 's/'"'"':.*$//;s/^.*'"'"'//' |
                        sort -u |
                        tee ~/sysall/$sys.$list.$date
        done
)
fi
rm -f ~/sysall/mitglieder ~/sysall/mitglieder-announce
rm -f ~/sysall/mitglieder,v ~/sysall/mitglieder-announce,v
touch ~/sysall/mitglieder ~/sysall/mitglieder-announce
ci -u -d"2011-06-13 00:00:00" ~/sysall/mitglieder          < /dev/null
ci -u -d"2011-06-13 00:00:00" ~/sysall/mitglieder-announce < /dev/null
set -xv
for i in ~/sysall/mm/sys* ; do
        read sys list datetime <<< ${i//\./ }
        read date time <<< ${datetime//\-/ }
        #echo "$sys*$date*$time*$list"
        year=${date:0:4}
        mon=${date:4:2}
        day=${date:6:2}
        h=${time:0:2}
        m=${time:2:2}
        s=${time:4:2}
        # echo "$year*$mon*$day"
        # echo "$h*$m*$s"
        outdate="$year-$mon-$day $h:$m:$s"
        echo $outdate
        co -l ~/sysall/$list
        cat $i > ~/sysall/$list
        ci -u -m. -d"$outdate" ~/sysall/$list
done

Plan II

Privilegienrueckbau.

Skizze

  • Feststellen, welche Privilegien existieren
  • Privilegien entziehen
find_user
#!/bin/bash
 
# find user assets inside the system
# you may want this to get rid of a closed account
 
USERNAME="$1"
 
grep "$1" /etc/passwd /etc/shadow /etc/group /etc/sudoers /etc/aliases
 
for i in $( list_lists | awk '{print $1}' ) ; do 
        X=$( list_admins $i | grep  "$1" )
        if [ -n "$X" ]; then
                echo $i "$X"
        fi
done
ls -ld /home/"$1"
 
for i in $( list_lists | awk '{print $1}' ) ; do 
        X=$( list_members $i | grep  "$1" )
        if [ -n "$X" ]; then
                echo $i "$X"
        fi
done

Das ist gerade noch recht grob, aber hilft trotzdem, Zugaenge nicht zu uebersehen.

Plan III

Information fuer Neumitglieder. Den Leuten gleich zu Anfang „alles“ „reinzudruecken“ tut nicht.

Skizze

  • Im Laufe der Zeit nach dem Eintritt die Informationen in Haeppchen zukommen lassen.
  • Dazu muss man wissen, wen es neues gibt und seit wann.
  • Nach vorgegebenem Zeitplan Mails zusenden.
find_user
#!/bin/bash
 
/usr/local/bin/make_it_happen
project/mailman-history.txt · Zuletzt geändert: 2012/07/13 08:37 von 109.192.98.64