DokuWiki change notification plugin

System um Wiki änderungen im IRC an zu zeigen

Wisser: Skruppy
Mitwisser:

Status: planned
Tags: software, IRC, DokuWiki, Python, PHP, network

Why: gerade lust dazu und RSS änderungen sagen nix über interne änderungen (auch nicht das überhaupt).

How:

  1. Plugin erkennt änderung
  2. Plugin wartet bis seite gesendet und sendet dann per UDP ein symetrisch verschlüsseltes paket an einen IRC bot backend
  3. IRC bot entschlüsselt und sendet es in #aquarium

… es könnte auch eine E-Mail notification gemacht werden … IRC finde ich aber gerade spannender :-) … zudem könnte er OP verteilen um topic ändern zu können.

IRC bot

Übersicht über bots

Ausgewählte bots

    • In C geschrieben (wenn nicht verbockt performant/resourcen schonend)
    • Schon lange auf dem markt/bekant/aktiv entwickelt
    • Nur C und Tcl plugins möglich
    • In Python geschrieben (awesome schnelle plugin entwicklung)
    • Scheint auch aktiv und bekant zu sein
    • Mein aktueller favoriet
    • In Python geschrieben (awesome schnelle plugin entwicklung)
    • Sehr aktive entwicklung

Bot kann dann auf Skruppys server laufen (wenn er den endlich mal zum laufen krigt)

DokuWiki plugin

Möglichst user und Server schonend implementieren

  • UDP stadt TCP (kein problem wenn nachricht mal verlohren/kaput geht, dafür kein langwiriger Verbindungsaufbau)
  • Das verwenden nachdem die seite an den user geschickt wurde
  • Eigenes Protokoll kurz und knapp (kein ssh/asymetrische crypto etc.)

Plugin template kann mit dem Plugin wizzard erzeugt werden. Es wird ein Action Plugin sein was sich bei den follgenden Events registriert: IO_WIKIPAGE_WRITE, IO_NAMESPACE_CREATED und IO_NAMESPACE_DELETED um die infos zu sammeln sowi DOKUWIKI_DONE zum verschlüsseln und senden.

Protokoll

Symetrische crypto z.B. Blowfish (public domain). In Pytho z.B. mit pycryptopp (wraper für libcrypto++)

Um replay zu verhindern: Verschlüsselte und gehashte Zufallszahl

Schlüssel ID am anfang in klartext (so können mehrere wikis über einen bot in verschiedenen kanälen gehandhabt werden)

Prüfsumme SHA1? (python nativ)

+---------- fixe länge ----------+
<16 bit Key ID><SHA1><16 bit rand><nachricht>
               +------ verschlüsselt -------+
+--- hashed --+      +------- hashed -------+
projects/dw-change-notification.txt · Zuletzt geändert: 2013/07/25 14:55 von skruppy