Jabber v PERLu snadno a rychle

19.05.2009

Níže uvedený kousek kódu umožňuje odeslat zprávu nebo žádost o autorizaci (subscribe) prostřednictvím Jabber serveru. Využití to má hlavně při hlášení nějakých alert stavů serverů nebo automatizovanému posílání vtipů kolegům :-).

Aby to fungovalo, je nutné dostat do OS třídu Net::XMPP. To se dá učinit návodem popsaným v téměř každém seriálu o PERLu nebo, pakliže máte Debian Lenny, tak instalací balíku libnet-xmpp-perl.

Dokumentace na: http://search.cpan.org/dist/Net-XMPP/

Command line odesílátko sendxmpp: http://www.djcbsoftware.nl/code/sendxmpp/

#!/usr/bin/perl -w

use Net::XMPP;

$host="vasserver.cz";
$port="5222";
$tls=0;
$user="franta";
$pass="heslofranty";

$cnx = new Net::XMPP::Client(debuglevel=>(0?2:0));
if(!defined($cnx)) {
  print "|-> chyba vytvareni objektu\n";
  exit 0;
}

@res = $cnx->Connect(hostname=>$host,port=>$port,tls=>$tls);
if(!defined(@res)) {
  print "|-> chyba spojeni\n";
  exit 0;
}

@res=$cnx->AuthSend('hostname'=>$host,'username'=>$user,'password'=>$pass,'resource'=>"perl");
if($res[0] !~ m/ok/) {
  print "|-> chyba autorizace\n";
  exit 0;
}

# odeslani zadosti o autorizaci jabber uzivateli tucnak@vasserver.cz
####$rcpt='tucnak@vasserver.cz';
####$cnx->Subscription('type'=>"subscribe",'to'=>$rcpt);

# odeslani zpravy jabber uzivateli tucnak@vasserver.cz
$subject="";
$msg="Ahoj svete";
$rcpt='tucnak@vasserver.cz';
$cnx->MessageSend('to'=>$rcpt,'subject'=>$subject,'body'=>$msg);

sleep 1;
$cnx->Disconnect();