class XmpppyTransport(Transport): """ Implements the XMPP transport (xmpppy). """ def __init__(self): settings = core.server.server.settings self.domain = settings.get('xmpp_domain') self.host = settings.get('xmpp_host') self.port = settings.get('xmpp_port') self.user = settings.get('xmpp_user') self.password = settings.get('xmpp_password') self.presence = settings.get('xmpp_presence') self.connected = False @classmethod def isIdentifiedBy(cls, type): return type == 'xmpp' def connect(self): """ Connects to an XMPP server. """ self.client = Client(self.domain) if not self.client.connect(server=(self.host, self.port)): raise IOError('Cannot connect to server.') if not self.client.auth(self.user, self.password, self.presence): raise IOError('Cannot auth with server.') self.client.RegisterHandler('message', message_handler) self.client.sendInitPresence() self.connected = True while True: self.client.Process(1) def disconnect(self): """ Disconnects from the current XMPP server. """ if connected: self.client.sendPresence(typ='unavailable') self.client.disconnect() self.client = None self.connected = False def send(self, destination, action): self.client.send(Message('tim@localhost', str(action)))
def _get_connected_client(account): client = Client(account['server'], debug=[]) if not client.connect(): logging.error( "Can not connect to %s server, please check your configuration", account['server']) raise IOError('Can not connect to server.') if not client.auth(account['user'], account['password'], account['resource']): logging.error("Can not auth as %s@%s, please check your configuration", account['user'], account['server']) raise IOError('Can not auth with server.') logging.info("Logged in as %s@%s", account['user'], account['server']) client.RegisterHandler('message', _handle_messages) client.sendInitPresence() client.Process(1) return client
def test(): client = Client('localhost') def message_handler(conn, mess_node): client.send(Message('tim@localhost', 'reponse!')) if not client.connect(server=('127.0.0.1', 5222)): raise IOError('Can not connect to server.') if not client.auth('abitbol', 'abitbol', 'abitbol'): raise IOError('Can not auth with server.') client.RegisterHandler('message', message_handler) client.sendInitPresence() client.send(Message('tim@localhost', 'Test message')) while 1: client.Process(1)