MediaWiki Diff Mails: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: == Automatische Benachrichtigung über Wiki-Änderungen == Man kann sich als Administrator von Mediawiki über alle Änderungen im Wiki benachrichtigen lassen. Das ist...)
 
K
 
Zeile 11: Zeile 11:
 
#! /bin/bash
 
#! /bin/bash
 
dlfilter() {
 
dlfilter() {
   wget -q -O- "$1" | \
+
   wget --no-check-certificate -q -O- "$1" | \
 
     grep -v -e '<li id="copyright">' | \
 
     grep -v -e '<li id="copyright">' | \
 
     sed -e 's/^<!-- Served in .* secs. --><//' | \
 
     sed -e 's/^<!-- Served in .* secs. --><//' | \

Aktuelle Version vom 5. April 2009, 16:12 Uhr

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