Abychom mohli pracovat v pythonu s protokolem xmpp, který využívá jaber, musíme si nejprve doinstalovat potřebnou knihovnu:
sudo apt-get install python-xmpp
Nyní se podíváme na jednuduchou třídu, která bude odesílat zprávy. V první části si naimportujeme potřebné knihovny.
#!/usr/bin/python import sys,os try: import xmpp except: print ("%s") % "Knihovna xmpp neni instalovana"
Vytvoříme si metodu konstruktoru, který nám bude ukládat a zpřístupňovat konfiguraci uloženou na disku. Při prvním spuštění se nám v naší domovské složce vytvoří soubor ".xsend", do které uložíme příštupové hodnoty na jabberovský účet. Seznam kontaktů slouží jen k urychlení přístupu adres, na které budeme odesílat zprávy.
class jabber: def __init__(self): self.jidparams={} if os.access(os.environ['HOME']+'/.xsend',os.R_OK): for ln in open(os.environ['HOME']+'/.xsend').readlines(): key,val=ln.strip().split('=',1) self.jidparams[key.lower()]=val for mandatory in ['jid','password']: if mandatory not in self.jidparams.keys(): open(os.environ['HOME']+'/.xsend','w').write('#JID=romeo@montague.net\n#PASSWORD=juliet\n') print 'Please ensure the ~/.xsend file has valid JID for sending messages.' sys.exit(0) #seznam kontaktu self.list= [ "user1@mail.com", "user2@mail.com", ] def get_list(self): return self.list
Metoda zajišťující připojení k serveru bude vypadat velice jednoduše.
def connect(self): jid=xmpp.protocol.JID(self.jidparams['jid']) self.cl=xmpp.Client(jid.getDomain(),debug=[]) self.cl.connect() auth = self.cl.auth(jid.getNode(),self.jidparams['password']) if not auth: print ("nemohu se pripojit") exit(0)
Poslední metodou bude odeslání zprávy na adresu vybranou podle indexu z nadefinovaného seznamu.
def send(self,tojid,text): print ("send to %s") % (self.list[int(tojid)]) #self.cl.sendInitialPresence() self.cl.send(xmpp.protocol.Message(self.list[int(tojid)],text))
Teď už stačí jen vytvořit hlavní část programu, která bude pracovat s naší nadefinovanou třídou. Program bude jako první parametr brát číslo určující index uživatele, kterému bude zpráva poslána a jako drouhý argument text zprávy, např, python prog.py 0 "Testovací zpráva".
oj = jabber() oj.connect() text=' '.join(sys.argv[2:]) oj.send(sys.argv[1],text)
Práce s knihovnou xampp je jednoduchá a její využití může být velké. Příkladem může být zapasování do djanga na odesílání informací o chybách nebo aktivitě uživatelů, popřípadě informování o chybových stavem na serverů.