====== DokuWiki change notification plugin ====== ---- datatemplateentry project ---- template : :sys:tpl:project description : System um Wiki änderungen im IRC an zu zeigen coordinators : [[:users:skruppy:]] confidants : state_tags : planned type_tags : software, IRC, DokuWiki, Python, PHP, network ---- Why: gerade lust dazu und RSS änderungen sagen nix über interne änderungen (auch nicht das überhaupt). How: - Plugin erkennt änderung - Plugin wartet bis seite gesendet und sendet dann per UDP ein symetrisch verschlüsseltes paket an einen IRC bot backend - IRC bot entschlüsselt und sendet es in #aquarium ... es könnte auch eine [[http://www.dokuwiki.org/tips:betteremailnotifications|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 * [[http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_bots|Wiki (große Liste)]] * [[http://www.irc-wiki.org/Category:Bots|IRC wiki (kurze list)]] Ausgewählte bots * [[http://en.wikipedia.org/wiki/Eggdrop|Eggdrop]] * In C geschrieben (wenn nicht verbockt performant/resourcen schonend) * Schon lange auf dem markt/bekant/aktiv entwickelt * Nur C und Tcl plugins möglich * [[http://sourceforge.net/projects/supybot/|Supybot]] * In Python geschrieben (awesome schnelle plugin entwicklung) * Scheint auch aktiv und bekant zu sein * Mein aktueller favoriet * [[http://inamidst.com/phenny/|phenny]] * 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 [[http://pluginwiz.dokuwiki.org/|Plugin wizzard erzeugt werden]]. Es wird ein [[http://www.dokuwiki.org/devel:action_plugins|Action]] [[http://www.dokuwiki.org/devel:plugins|Plugin]] sein was sich bei den follgenden [[http://www.dokuwiki.org/devel:events_list|Events]] registriert: [[http://www.dokuwiki.org/devel:event:io_wikipage_write|IO_WIKIPAGE_WRITE]], [[http://www.dokuwiki.org/devel:event:io_namespace_created|IO_NAMESPACE_CREATED]] und [[http://www.dokuwiki.org/devel:event:io_namespace_deleted|IO_NAMESPACE_DELETED]] um die infos zu sammeln sowi [[http://www.dokuwiki.org/devel:event:dokuwiki_done|DOKUWIKI_DONE]] zum verschlüsseln und senden. ===== Protokoll ===== Symetrische crypto z.B. [[http://de.wikipedia.org/wiki/Blowfish|Blowfish]] (public domain). In Pytho z.B. mit [[https://tahoe-lafs.org/trac/pycryptopp|pycryptopp]] (wraper für [[http://cryptopp.com/|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><16 bit rand> +------ verschlüsselt -------+ +--- hashed --+ +------- hashed -------+