예제 #1
0
파일: xmpppy.py 프로젝트: Abitbol/abitbol
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)))
예제 #2
0
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
예제 #3
0
파일: server.py 프로젝트: Abitbol/abitbol
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)