MediaWiki Diff Mails

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Automatische Benachrichtigung über Wiki-Änderungen

Man kann sich als Administrator von Mediawiki über alle Änderungen im Wiki benachrichtigen lassen. Das ist nicht weiter kompliziert, man muss lediglich in der LocalSettings.php in etwa folgende Zeile ergänzen:

$wgUsersNotifiedOnAllChanges = $wgUsersNotifedOnAllChanges =  array( 'Jochen', 'Stesie', 'Stettberger' );

... und schon läuft der Briefkasten über (:mrgreen:)

Die vom Mediawiki versendeten Mails haben jedoch einen kleinen Nachteil: sie weisen nur auf die Änderung hin, nebst Link zum Aufruf. Viel praktischer wäre es doch, wenn man die Änderungen gleich frei Haus, bzw. frei Postfach bekäme.

Nungut, dann wollen wir ein Gespann aus procmail und bash bemühen und die Mail ein wenig frisieren:

#! /bin/bash
dlfilter() {
  wget --no-check-certificate -q -O- "$1" | \
    grep -v -e '<li id="copyright">' | \
    sed -e 's/^<!-- Served in .* secs. --><//' | \
    fmt -s
}

while l="`line`"; do
  echo "$l"
  echo "$l" | grep -qe "&diff=0&oldid=" && {
    echo ""
    A="`mktemp`"
    B="`mktemp`"

    URL="`echo "$l" | sed -e 's/&diff=0&.*//'`"
    OLDID="`echo "$l" | sed -e 's/^.*&oldid=//'`"

    dlfilter "$URL&action=edit&oldid=$OLDID" > "$A"
    dlfilter "$URL&action=edit" > "$B"
    diff -u "$A" "$B"
    rm -f "$A" "$B"
    echo "--- ENDE ---"
  }
done

echo "-- "
echo "mw-mail-diff v0.1"
echo "Copyright (C) 2009 by Stefan Siegl <stesie@brokenpipe.de>"
echo "GNU General Public License v3 or later"

... dazu noch ein paar Zeilen in die .procmailrc, die dafür sorgen, dass die Mail durch das Skript läuft:

:0 fbw
* ^From: WikiAdmin <domina@list.zerties.org>
* ^Subject: =\?UTF-8\?Q\?\[zerties.org\]=20Die=20Seite=20"
| /home/stesie/bin/mw-mail-diff