====== Monitoring fuer Dokuwiki ====== {{tag>project software computing infrastructure}} {{process:shack-heritage-badge.png}} /[* :begin: 2012-03-02 *]/ /[* :end: 2012-03-02 *]/ /[* :title: Dokuwiki-Monitor *]/ /[* :claim:de: Monitoring fuer Dokuwiki als Massnahme zur Spamabwehr *]/ /[* :abstract:de: Wiki-Spam hat oft charakteristische Merkmale, die sich zur Spamabwehr nutzen lassen *]/ /[* :claim:en: *]/ /[* :abstract:en: *]/ /[* :img: http://shackspace.de/lib/img/softwareproject.png *]/ /[* :who: ak-sub *]/ /[* :contact: kontakt@shackspace.de *]/ ===== Problem: Wiki-Vandalismus ===== Dann und wann schieben Bots sinnfreien Unfug ins Wiki. Irgendwelche kurzen Texte, die alles und nichts bedeuten koennen. Keine Werbung, keine URLs, keine Auszeichnungen: The best rsseonpe to bad speech is good speech Criminals can still be infiltrated by the police.And for the rest, the best control is knowledge and awareness about what scams look like. Schlecht elektronisch zu erfassen. Auffaellig ist gerade noch der eine Typo ''rsseonpe'', der sich in den Nachrichten immer findet, aber aus dem konnte ich bisher nichts maschinenverwertbares machen. Weiterhin fallen dem trainierten neuronalen Netzwerk zwischen den Ohren die Inhalte der "Zusammenfassung"-Eintraege auf: QOzJzCkSPXInDLG ===== Ansatz ===== Dokuwiki kann User ueber geaenderte Seiten benachrichtigen. Die entsprechende Mail enthaelt ein Diff der Page, ein paar weitere Angaben und die Zeile "Uebersicht:" mit der eingegebenen Zusammenfassung. Die wird jetzt ins "Subject:" der Mail kopiert, damit man den Foo sofort erkennen kann. ===== HOWTO ===== ==== Script dokuwiki-mailfilter ==== #!/usr/bin/perl # # bearbeitet die Info-Mails vom Dokuwiki nach: # sucht die "Uebersicht"-Zeile und kopiert sie ins Subject # use strict; my @Lines = (); my @Header = (); my $u = undef; while ( my $l = <> ) { push @Header,$l; if ( $l eq "\n" ) { last; } } while (my $l = <>) { push @Lines,$l; chomp $l; if ( $l =~ /^(Zusammenfassung|=C3=9Cbersicht):/ ) { $u = $l; $u =~ s/^(Zusammenfassung|=C3=9Cbersicht): //; $u =~ s/^=20//g; $u =~ s/(^\s+|\s+$)//g; $u =~ s/[\n\r]+/ /g; } } if ( $u ) { for my $i ( @Header ) { if ( $i =~ /^Subject: / ) { chomp $i; $i .= " [$u]\n"; } } } print @Header,@Lines; procmailrc ## shackspace dokuwiki messages # f = filter whole mail # H = match header :0 fH * ^Subject: (=\?UTF-8\?Q\?)?\[shackspace[_ ]wiki\] |dokuwiki-mailfilter ==== Ergebnis: ==== Aus Subject: [shackspace wiki] Seite geaendert: playground_playground ... =C3=9Cbersicht: QOzJzCkSPXInDLG wird Subject: [shackspace wiki] Seite geaendert: playground_playground [QOzJzCkSPXInDLG]