def setup_transport(self): log.msg("Starting XMPPTransport: %s" % self.transport_name) self.jid = JID(self.username) self.xmpp_client = self._xmpp_client(self.jid, self.password, self.host, self.port) self.xmpp_client.logTraffic = self.debug self.xmpp_client.setServiceParent(self) self.presence = TransportPresenceClientProtocol(self.announce_presence) self.presence.setHandlerParent(self.xmpp_client) self.pinger = PingClientProtocol() self.pinger.setHandlerParent(self.xmpp_client) self.ping_call.start(self.ping_interval, now=False) roster = TransportRosterClientProtocol() roster.setHandlerParent(self.xmpp_client) self.xmpp_protocol = self._xmpp_protocol(self.jid, self.publish_message, self.unpause_connectors) self.xmpp_protocol.setHandlerParent(self.xmpp_client) log.msg("XMPPTransport %s started." % self.transport_name)
def setup_transport(self): log.msg("Starting XMPPTransport: %s" % self.transport_name) statuses = {None: self.status} self.jid = JID(self.username) self.xmpp_client = self._xmpp_client(self.jid, self.password, self.host, self.port) self.xmpp_client.logTraffic = self.debug self.xmpp_client.setServiceParent(self) presence = TransportPresenceClientProtocol() presence.setHandlerParent(self.xmpp_client) presence.available(statuses=statuses) self.pinger = PingClientProtocol() self.pinger.setHandlerParent(self.xmpp_client) self.ping_call.start(self.ping_interval, now=False) roster = TransportRosterClientProtocol() roster.setHandlerParent(self.xmpp_client) self.xmpp_protocol = self._xmpp_protocol(self.jid, self.publish_message, self._setup_message_consumer) self.xmpp_protocol.setHandlerParent(self.xmpp_client) log.msg("XMPPTransport %s started." % self.transport_name)
def setup_transport(self): self.log.msg("Starting XMPPTransport: %s" % self.transport_name) self.jid = JID(self.username) self.xmpp_client = self._xmpp_client( self.jid, self.password, self.host, self.port) self.xmpp_client.logTraffic = self.debug self.xmpp_client.setServiceParent(self) self.presence = TransportPresenceClientProtocol(self.announce_presence) self.presence.setHandlerParent(self.xmpp_client) self.pinger = PingClientProtocol() self.pinger.setHandlerParent(self.xmpp_client) self.ping_call.start(self.ping_interval, now=False) roster = TransportRosterClientProtocol() roster.setHandlerParent(self.xmpp_client) self.xmpp_protocol = self._xmpp_protocol( self.jid, self.publish_message, self.unpause_connectors, connection_lost_callback=self.connection_lost) self.xmpp_protocol.setHandlerParent(self.xmpp_client) self.log.msg("XMPPTransport %s started." % self.transport_name)
def setup_transport(self): log.msg("Starting XMPPTransport: %s" % self.transport_name) statuses = {None: self.status} self.jid = JID(self.username) self.xmpp_client = self._xmpp_client(self.jid, self.password, self.host, self.port) self.xmpp_client.logTraffic = self.debug self.xmpp_client.setServiceParent(self) presence = TransportPresenceClientProtocol() presence.setHandlerParent(self.xmpp_client) presence.available(statuses=statuses) self.pinger = PingClientProtocol() self.pinger.setHandlerParent(self.xmpp_client) self.ping_call.start(self.ping_interval, now=False) roster = TransportRosterClientProtocol() roster.setHandlerParent(self.xmpp_client) self.xmpp_protocol = self._xmpp_protocol( self.jid, self.publish_message, self._setup_message_consumer) self.xmpp_protocol.setHandlerParent(self.xmpp_client) log.msg("XMPPTransport %s started." % self.transport_name)
class XMPPTransport(Transport): """XMPP transport. Configuration parameters: :type host: str :param host: The host of the XMPP server to connect to. :type port: int :param port: The port on the XMPP host to connect to. :type debug: bool :param debug: Whether or not to show all the XMPP traffic. Defaults to False. :type username: str :param username: The XMPP account username :type password: str :param password: The XMPP account password :type status: str :param status: The XMPP status 'away', 'xa', 'chat' or 'dnd' :type status_message: str :param status_message: The natural language status message for this XMPP transport. :type presence_interval: int :param presence_interval: How often (in seconds) to send a presence update to the roster. :type ping_interval: int :param ping_interval: How often (in seconds) to send a keep-alive ping to the XMPP server to keep the connection alive. Defaults to 60 seconds. """ start_message_consumer = False _xmpp_protocol = XMPPTransportProtocol _xmpp_client = XMPPClient def __init__(self, options, config=None): super(XMPPTransport, self).__init__(options, config=config) self.ping_call = LoopingCall(self.send_ping) self.presence_call = LoopingCall(self.send_presence) def validate_config(self): self.host = self.config['host'] self.port = int(self.config['port']) self.debug = self.config.get('debug', False) self.username = self.config['username'] self.password = self.config['password'] self.status = self.config['status'] self.status_message = self.config.get('status_message', '') self.ping_interval = self.config.get('ping_interval', 60) self.presence_interval = self.config.get('presence_interval', 60) def setup_transport(self): log.msg("Starting XMPPTransport: %s" % self.transport_name) self.jid = JID(self.username) self.xmpp_client = self._xmpp_client(self.jid, self.password, self.host, self.port) self.xmpp_client.logTraffic = self.debug self.xmpp_client.setServiceParent(self) self.presence = TransportPresenceClientProtocol(self.announce_presence) self.presence.setHandlerParent(self.xmpp_client) self.pinger = PingClientProtocol() self.pinger.setHandlerParent(self.xmpp_client) self.ping_call.start(self.ping_interval, now=False) roster = TransportRosterClientProtocol() roster.setHandlerParent(self.xmpp_client) self.xmpp_protocol = self._xmpp_protocol(self.jid, self.publish_message, self.unpause_connectors) self.xmpp_protocol.setHandlerParent(self.xmpp_client) log.msg("XMPPTransport %s started." % self.transport_name) def announce_presence(self): if not self.presence_call.running: self.presence_call.start(self.presence_interval) @inlineCallbacks def send_ping(self): if self.xmpp_client.xmlstream: yield self.pinger.ping(self.jid) def send_presence(self): if self.xmpp_client.xmlstream: self.presence.available(statuses={None: self.status}) def teardown_transport(self): log.msg("XMPPTransport %s stopped." % self.transport_name) ping_call = getattr(self, 'ping_call', None) if ping_call and ping_call.running: ping_call.stop() presence_call = getattr(self, 'presence_call', None) if presence_call and presence_call.running: presence_call.stop() def handle_outbound_message(self, message): recipient = message['to_addr'] text = message['content'] jid = JID(recipient).userhost() if not self.xmpp_protocol.xmlstream: log.err("Outbound undeliverable, XMPP not initialized yet.") return False else: self.xmpp_protocol.reply(jid, text) return self.publish_ack(user_message_id=message['message_id'], sent_message_id=message['message_id'])
class XMPPTransport(Transport): """XMPP transport. Configuration parameters: :type host: str :param host: The host of the XMPP server to connect to. :type port: int :param port: The port on the XMPP host to connect to. :type debug: bool :param debug: Whether or not to show all the XMPP traffic. Defaults to False. :type username: str :param username: The XMPP account username :type password: str :param password: The XMPP account password :type status: str :param status: The XMPP status 'away', 'xa', 'chat' or 'dnd' :type status_message: str :param status_message: The natural language status message for this XMPP transport. :type presence_interval: int :param presence_interval: How often (in seconds) to send a presence update to the roster. :type ping_interval: int :param ping_interval: How often (in seconds) to send a keep-alive ping to the XMPP server to keep the connection alive. Defaults to 60 seconds. """ start_message_consumer = False _xmpp_protocol = XMPPTransportProtocol _xmpp_client = XMPPClient def __init__(self, options, config=None): super(XMPPTransport, self).__init__(options, config=config) self.ping_call = LoopingCall(self.send_ping) self.presence_call = LoopingCall(self.send_presence) def validate_config(self): self.host = self.config['host'] self.port = int(self.config['port']) self.debug = self.config.get('debug', False) self.username = self.config['username'] self.password = self.config['password'] self.status = self.config['status'] self.status_message = self.config.get('status_message', '') self.ping_interval = self.config.get('ping_interval', 60) self.presence_interval = self.config.get('presence_interval', 60) def setup_transport(self): log.msg("Starting XMPPTransport: %s" % self.transport_name) self.jid = JID(self.username) self.xmpp_client = self._xmpp_client(self.jid, self.password, self.host, self.port) self.xmpp_client.logTraffic = self.debug self.xmpp_client.setServiceParent(self) self.presence = TransportPresenceClientProtocol(self.announce_presence) self.presence.setHandlerParent(self.xmpp_client) self.pinger = PingClientProtocol() self.pinger.setHandlerParent(self.xmpp_client) self.ping_call.start(self.ping_interval, now=False) roster = TransportRosterClientProtocol() roster.setHandlerParent(self.xmpp_client) self.xmpp_protocol = self._xmpp_protocol( self.jid, self.publish_message, self.unpause_connectors) self.xmpp_protocol.setHandlerParent(self.xmpp_client) log.msg("XMPPTransport %s started." % self.transport_name) def announce_presence(self): if not self.presence_call.running: self.presence_call.start(self.presence_interval) @inlineCallbacks def send_ping(self): if self.xmpp_client.xmlstream: yield self.pinger.ping(self.jid) def send_presence(self): if self.xmpp_client.xmlstream: self.presence.available(statuses={ None: self.status}) def teardown_transport(self): log.msg("XMPPTransport %s stopped." % self.transport_name) ping_call = getattr(self, 'ping_call', None) if ping_call and ping_call.running: ping_call.stop() presence_call = getattr(self, 'presence_call', None) if presence_call and presence_call.running: presence_call.stop() def handle_outbound_message(self, message): recipient = message['to_addr'] text = message['content'] jid = JID(recipient).userhost() if not self.xmpp_protocol.xmlstream: log.err("Outbound undeliverable, XMPP not initialized yet.") return False else: self.xmpp_protocol.reply(jid, text) return self.publish_ack( user_message_id=message['message_id'], sent_message_id=message['message_id'])