Linux-Fan

AnDenNutzer Protocol PHP Implementation

Jan 18th, 2012
91
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. /**
  4.  * Versendet mit Hilfe des Programmes "AnDenNutzer" Nachrichten an den
  5.  * Benutzer, die dieser sofort auf seinem Bildschirm angezeigt bekommt.
  6.  *
  7.  * @param $host str Hostname / IP
  8.  * @param $message str Nachricht (keine Leerzeilen!)
  9.  * @param $password str
  10.  *    Ein Passwort. Vorsicht: Übertragung erfolgt im Klartext -- keine
  11.  *    wichtigen Passwörter verwenden. Das Passwort muss als Checksumme in
  12.  *    den Client-Einstellungen liegen.
  13.  * @param $addProperties array
  14.  *    Ermöglicht die Übergabe von zusätzlichen Einstellungen an das Programm.
  15.  *    Nicht alle werden in diesem Modus ausgewertet. Auf diese Weise lässt
  16.  *    sich mit Angabe von z.B. new array("duration" => 5) die Anzahl der
  17.  *    Durchläufe einstellen.
  18.  * @param $port int
  19.  *    Gibt einen Port an. Der Standardport ist 5970 (bis 5983 ist frei).
  20.  * @throws Exception
  21.  *    Wenn ein Fehler auftritt oder der Client aus irgend einem Grund die
  22.  *    Verbindung verweigert.
  23.  */
  24. function sendMessage($host = "127.0.0.1", $message = "Test", $password = "testwort", $addProperties = array(), $port = 5970) {
  25.     $errno  = 0;
  26.     $errstr = null;
  27.     $conn = fsockopen($host, $port, $errno, $errstr);
  28.     if(!$conn) {
  29.         throw new Exception("Konnte keine Verbindung zu ".$host." aufbauen -- Fehler ".$errno.": ".$errstr);
  30.     }
  31.     fwrite($conn, $password."\n");
  32.     fflush($conn);
  33.     $answer = fgets($conn);
  34.     if($answer != "OK\n") {
  35.         fclose($conn);
  36.         throw new Exception("Der Client hat das Passwort nicht akzeptiert: ".$answer);
  37.     }
  38.     fwrite($conn, $message."\n");
  39.     foreach($addProperties as $key => $value) {
  40.         fwrite($conn, $key."=".$value."\n");
  41.     }
  42.     fwrite($conn, "OK\n");
  43.     fflush($conn);
  44.     $answer = fgets($conn);
  45.     if($answer != "OK\n") {
  46.         throw new Exception("Der Client hat den Eingabetext nicht akzeptiert: ".$answer);
  47.     }
  48.     fflush($conn);
  49.     fclose($conn);
  50. }
  51.  
  52. header("Content-Type: text/plain; charset=UTF-8");
  53. try {
  54.     sendMessage();
  55.     echo "TERM";
  56. } catch(Exception $exception) {
  57.     print_r($exception);
  58. }
  59.  
  60. ?>
RAW Paste Data