supergarv

Garvin Hicking :: blog

"You want me to go first this time?"-FM to scared motel clerk (3x23)

  •  
  •  
  • Über mich
  •  
  • Galerie
  •  
  • Freunde
  •  
  • Tops und Flops
  •  
  • Links
  •  
Zufallsbild
  • Über mich:
  • Vorstellung
  • Lebenslauf
  • Lebensziele
  • Gästebuch
  • Kontakt
  • News
  • Blog
  • Galerie:
  • Artwork
  • Logos
  • Web
  • DTP
  • 3D
  • Fotos
  • Videos
  • Anderes
  • Freunde:
  • Freunde
  • Familie
  • Ich
  • Webcam
  • Schule
  • Caritas
  • Arbeit
  • Anderes
  • Tops und Flops:
  • Filmkritiken
  • Texte
  • IMDB
  • Hitlisten

Handbuch für Serendipity


Das offizielle, umfassende Serendipity-Handbuch für Einsteiger und Profis ist nun im Handel und kann online bei Amazon oder Open Source Press bestellt werden, oder auch bei jedem Buchhändler.

Kategorien

  • Blafasel
  • Media
  • Bilder
  • Bücher
  • Kino / Video
  • Sneak Preview
  • Musik
  • Spiele
  • PHP / Software
  • Planung

Alle Kategorien

Fotografie von Garvin und Emba

» bei Model-Kartei
» bei Flickr

Flickr: Bilder

Medaillen

superBlog Banner
OPML: Meine Feeds (RSS)
Suprglu: Meta-Feed
Blogverzeichnis - Blog Verzeichnis bloggerei.de
FOAF-Explorer: Meine FOAFs ansehen

Jabber: supergarv (at) amessage.de
ICQ: 21392242

:inlove:

Macht mich glücklich:

Wunschliste Amazon / Wishlist Amazon
PayPal

Blog abonnieren

  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 Kommentare
  • superBlog

Archive

  • September 2010
  • August 2010
  • Juli 2010
  • Das Neueste ...
  • Älteres ...

Powered by

Serendipity PHP Weblog

« Schlag den Boll | Startseite | « Nikon D80 »

Mittwoch, 9. August 2006

Jabber E-Mail Notify

In letzter Zeit ging es mir sehr auf die Nerven, ständig das s9y-Forum als auch meine E-Mails ab und zu zu überprüfen um herauszufinden ob es neue Beiträge/Mails gab.

Da musste also eine Alternative her. Wenn ich am PC sitze, läuft üblicherweise immer auch Trillian mit. Dadurch bin ich mit ICQ, MSN und Jabber verbunden. Da Jabber ein offenes Protokoll ist, bietet sich das für solche Spielereien natürlich an.

Meine E-Mails werden von meinem kleinen Heimserver ständig auf einem Linux-Rechner gepollt. Da ist also die .procmail prädestiniert für einen E-Mail-Notification Push-Dienst. Am Ende meiner .procmailrc habe ich also lediglich:

CODE:
:0c
|php /home/www/jabber.php


eingetragen. Das weist den MTA dazu an, eine Kopie der aktuellen Mail an den Notifier zu schicken. Wohlgemerkt ganz am Ende, wenn der ganze Spam schon größenteils rausgefiltert wurde ;)

Als weiteres braucht man natürlich ein neue Jabber-ID, die der Bot nutzen kann um meinem richtigen Jabber-Account eine Message zu schicken. Das ist aber kein Problem, da man mittels Jabber-Protokoll und einem Jabber-Client einfach einen neuen Account wie "garvbot@jabber.org" erstellen kann.

Nun bedarf es noch besagter jabber.php. Diese setzt die Klasse class.jabber.php ein. Ursprünglich habe ich die aktuelle Version ausprobiert, die aber mit den Jabber-Servern Authentifikations-Probleme machte ("501 not supported"). Da ich gerade kein XMPP lernen wollte, habe ich einfach die ältere Version 0.4.2 eingesetzt, die soweit für meine Zwecke problemlos funktioniert. Diese Datei wird also mit in mein /home/www Verzeichnis gepackt, und die jabber.php sieht wie folgt aus (Code-Kommentare beachten!):

CODE:
<?php
// Da diese Datei auch evtl. per HTTP angesprochen wird, soll das Script nicht abbrechbar sein
ignore_user_abort(true);

// class.jabber.php einbinden
require_once "class.jabber.php";

// Ein neues JABBER Objekt erstellen, mit den gewünschten Zugangsdaten.
$jabber = new Jabber();
// Servername für den Account
$jabber->server = 'jabber.org';
// Username für den Account
$jabber->username = 'garvbot';
// Klartext-Passwort für den Account
$jabber->password = 'passwort';
// Die Ressource klassifiziert lediglich einen Account, ist also nur ein Hilfsmerkmal
$jabber->resource = 's9yNotificationBot';
// Logging für Probleläufe
$jabber->enable_logging = true;
// Der Empfänger für meine Nachrichten
$jabber->to = 'garv@schokokeks.org';


// Der Jabber-Verbindungsaufbau dauert gut 15-20 Sekunden. Um ein Amoklaufen der Scripte zu verhindern,
// wird ein "Lockfile" erstellt. Nur wenn dieses nicht existiert oder älter als 2 Minuten ist, darf
// der Bot seine Nachricht schicken. Dies bedeutet auch, dass das PHP-Script in der Lage sein muss,
// auf den Ordner in dem es sich befindet eine Datei erstellen zu können! (chmod 777 o.ä.)
if (!file_exists('active') || filemtime('active') < time()-120) {
    // Altes Lockfile löschen
    @unlink('active');

    // Neues lockfile erstellen und Zugriffsrechte setzen
    $fp = fopen('active', 'w');
    fwrite($fp, time());
    fclose($fp);
    chmod('active', 0777);

    // Jabber-Verbindung herstellen
    $jabber->Connect();
    $jabber->SendAuth();

    // Die Eingabe bezieht das Script entweder von einem Konsolen-Aufruf, von einer REQUEST-Variable
    // oder aus stdin. Beim Mailnotify kommt die Eingabe immer von stdin.
    if ($argv[1]) {
        $msg = $argv[1];
    } elseif ($_REQUEST['msg']) {
        $msg = urldecode($_REQUEST['msg']);
    } else {
        // stdin öffnen. Nur die ersten 4096 Zeichen lesen, wir wollen ja eh nicht so viel schicken
        $stdin = fopen('php://stdin', 'r');
        $msg   = fread($stdin, 4096);

        if (empty($msg)) {
            $msg = "empty";
        } else {
            // FROM und SUBJECT der E-Mail auslesen.
            preg_match('@From:(.*)@i', $msg, $m1);
            preg_match('@Subject:(.*)@i', $msg, $m2);
            $msg = "E-Mail: " . $m1[1] . "\n" . $m2[1];
        }
    }

    // Jabber muss escaptes HTML senden. Sicherheitshalber schicken wir nur 512 Zeichen.
    $msg = htmlspecialchars(substr($msg, 0, 512));

    // Nachricht senden
    $jabber->SendMessage($jabber->to, "normal", NULL, array("body" => $msg));

    // Lockfile löschen
    @unlink('active');
} else {
    // Dieser Fall tritt ein, wenn ein anderer Prozess noch läuft
    echo 'Discarded';
}


Selbiges Script habe ich ins s9y Forum in die "posting.php" Datei eingehackt. Dort wird ein iframe erzeugt, der die jabber.php Datei auslöst. So wird der Client nicht mit dem 15-20 Sekunden "Timeout" belästigt.

Was an dieser Art der Notification cool ist: Es ist ein "Push" statt einem "Pull". Ich werde quasi ohne Aktivität benachrichtigt, im Gegensatz zu existierenden Plugins die POP3/IMAP-Postfächer abrufen. Ausserdem ist es besser als SMS-Notification, weil ich mittels Jabber-Client auf dem Handy auch kontrollieren kann, wann ich notified werden will. Schließlich nervt es, nachts SMSe zu empfangen. :-)

Ein kleines Problem hat das Script noch: Es kann keinen "Presence"-Check der Gegenstelle machen. Optimalerweise würde ich gerne nur dann Notifications erhalten, wenn ich auch online bin. Denn eine Riesen-Queue von Offline-Nachrichten zu empfangen, finde ich suboptimal. Alle Tests gestern einen Online-Status eines Nutzers rauszufinden sind bei mir gescheitert. Vielleicht findet sich jemand, der das Script aufbohren mag?

Das kleine Script dürft ihr benutzen, wie ihr lustig seit, es hat keine Lizenz. Viel Spaß!
Geschrieben von garvin in PHP / Software um 09:34 | Kommentare (3) | Trackbacks (0)
8600 Klicks
Tweet This!
Bookmark Jabber E-Mail Notify  at del.icio.us Facebook Google Bookmarks Digg Jabber E-Mail Notify

Trackbacks
Trackback-URL für diesen Eintrag

Keine Trackbacks

Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

*Yeeeha. Funktioniert. Geil. Danke! :D
#1 Andy (Link) am 09.08.2006 10:25 (Reply)
*1. Big THX für den Tipp mit der älteren Class Vesrion ! Ich bin an dem Auth Prob der aktuellen fast verzweifelt :(

2. teste doch mal auf der Seite des Autors seine Bsp. besonders das wo er das $JABBER->CruiseControl(60) benutzt ;)
Da bekomme ich im Browser als Feedback :
eddy@jabber.i-pobox.net is Online.EVENT: Keep-Alive returned, connection alive. EVENT: jabber:iq:time (type result) from jabber.org SEND:
wenn ich gerade mit meinem Client online bin. da hast doch dann deinen Status :)
#2 Eddy am 10.09.2006 12:33 (Reply)
*Wenn es so einfach wäre! Erwähntes Script von mir ist ja kein Dämon der CruiseControl nutzt - da er ja eventgesteuert aufgerufen wird, muss sich die Verbindung somit jedesmal erneut aufbauen. Und so kann man die Online-Events nicht mitbekommen...
#3 Garvin (Link) am 10.09.2006 18:51 (Reply)

Kommentar schreiben

Pavatar/Favatar/Gravatar wird unterstützt
BBCode-Formatierung erlaubt
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

 
 
« Schlag den Boll | Startseite | « Nikon D80 »

Suche

Kalender

Zurück September '10 Vorwärts
Mo Di Mi Do Fr Sa So
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

Femto-Blog

  • @Eay alles klar. Am besten warten wir die ersten Testberichte ab und schauen mal wo man am besten ordert.06.09 19:09
  • @Eay wenn du einen importierst mach ich mit :)06.09 18:09
  • @jonaswaever to position the iphone cursor mid-word, just hold your finger in the word, a lens will popup for exact control!05.09 22:09
  • @Eay Ist das der SplinterCell-Smilie? :)03.09 20:09
  • @derrabus Berichte mal :)03.09 20:09
  • Der Duke kommt nun also wirklich? Dann sollte man den Teil wohl eher Duke Nukem Recover nennen.03.09 17:09
  • @yellowled frag mal bei itunes, die haben gerade graufilter im angebot ;)02.09 13:09
  • @bobbes Jau, ich denke der wird nur nen kleinen Flashspeicher haben für das iOS-Derivat...01.09 18:09
  • @bobbes Wenn das Gerät gejailbreakt werden könnte wärs wirklich sehr geil.01.09 18:09

Kommentare

EmmJay zu Metroid: Other M Review
Mo, 06.09.2010 20:12
*Von nicht mitlesen kann überhaupt nicht die Rede sein. Nur halt selektiv und so. :-p
Alexander M. Turek zu Metroid: Other M Review
So, 05.09.2010 19:56
*Also, die Empfehlung mit Metroid Fusion ist durchaus ernst gemeint. Deinen Exploration-Backtracking-Drang kannst du dor [...]
Garvin zu Metroid: Other M Review
So, 05.09.2010 16:55
*Schön, aber auch bedauernswert, dass Du mir zustimmst. Habe vorhin extra nochmal 100% completion gespielt, tatsächli [...]
Alexander M. Turek zu Metroid: Other M Review
So, 05.09.2010 02:17
*Hey Garvin, Du sprichst mir sowas von aus der Seele. Ich bin gerade durch und was soll ich sagen: Echt schade, was h [...]
Garvin zu Poetry Slam "Reim Fire"
Mi, 01.09.2010 15:24
*Ich hatte persönlich auch sogar eher erwartet, dass auf dem Slam mehr ernsthafte/anregende Texte vorgetragen werden. [...]

Über mich

Ich heiße Garvin Hicking, wohne in Köln und bin alt genug um ein Blog führen zu dürfen. Derzeit arbeite ich als Webentwickler bei Faktor E, bin gelegentlich selbständig tätig und arbeite mit PHP, (My)SQL und XHTML/ XML/ CSS/ JavaScript.

Meine Freizeit nutze ich zur Entwicklung von Serendipity und phpMyAdmin - und (nicht nur) wenn ich genug von Computer habe, genieße ich das Leben mit meiner Freundin Emba im Kino, hinter der Fotokamera, daheim oder bei unseren Freunden. Und ein Gesicht habe ich auch:
Garvin Hicking
Facebook / Xing

Zend Certified PHP Engineer

Legasthenie-Info

Dieses Blog strotzt vor Komma-Fehlern. Ich bekenne eigenständig, öffentlich und freiwillig im Vollbesitz meiner geistigen und Halbbesitz meiner ortographischen Fähigkeiten, auf diese Fehlern zu bestehen und erkläre, der neuen Deutschen Rechtschreibung bisher nicht anheim gefallen zu sein. Wer zusätzliche Fehler findet, darf sie ebenfalls behalten. :-)

Getaggte Artikel




(c)1999-2004 by garvin hicking   |   
Valid XHTML 1.1! Valid CSS! American English PayPal Wunschliste Amazon / Wishlist Amazon

Die Einbindung fremder Bilder erfolgt im Rahmen der journalistischen bzw. persönlichen Berichtserstattung. Urheberrechte dieser Materialien liegen beim Eigentümer.
Weiteres siehe Impressum / Datenschutzerklärung


Online Einkaufen Börsenbriefvergleich