project:mailman-history
Inhaltsverzeichnis
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: 2022-04-20 10:33 von chris