2024-11-13 16:41:33 +02:00
|
|
|
#!/usr/bin/python
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
2025-03-10 10:35:21 +02:00
|
|
|
from blasta.utilities.logger import UtilitiesLogger
|
2024-11-13 16:41:33 +02:00
|
|
|
from slixmpp import ClientXMPP
|
2025-03-10 10:35:21 +02:00
|
|
|
import sys
|
|
|
|
|
|
|
|
logger = UtilitiesLogger(__name__)
|
2024-11-13 16:41:33 +02:00
|
|
|
|
|
|
|
class XmppInstance(ClientXMPP):
|
2025-03-10 10:35:21 +02:00
|
|
|
|
2024-11-13 16:41:33 +02:00
|
|
|
def __init__(self, jid, password):
|
2025-03-10 10:35:21 +02:00
|
|
|
function_name = sys._getframe().f_code.co_name
|
|
|
|
logger.debug(f'{function_name},{jid},Start')
|
2024-11-13 16:41:33 +02:00
|
|
|
super().__init__(jid, password)
|
2025-03-10 10:35:21 +02:00
|
|
|
self.add_event_handler("connection_failed", self.on_connection_failed)
|
|
|
|
self.add_event_handler("failed_auth", self.on_failed_auth)
|
2025-03-10 12:05:56 +02:00
|
|
|
self.add_event_handler("got_offline", self.on_got_offline)
|
2024-11-13 16:41:33 +02:00
|
|
|
self.add_event_handler("session_start", self.on_session_start)
|
|
|
|
self.register_plugin('xep_0004') # XEP-0004: Data Forms
|
|
|
|
self.register_plugin('xep_0030') # XEP-0030: Service Discovery
|
|
|
|
self.register_plugin('xep_0059') # XEP-0059: Result Set Management
|
|
|
|
self.register_plugin('xep_0060') # XEP-0060: Publish-Subscribe
|
|
|
|
self.register_plugin('xep_0078') # XEP-0078: Non-SASL Authentication
|
|
|
|
self.register_plugin('xep_0163') # XEP-0163: Personal Eventing Protocol
|
2025-03-10 12:05:56 +02:00
|
|
|
self.register_plugin('xep_0199') # XEP-0199: XMPP Ping
|
2024-11-13 16:41:33 +02:00
|
|
|
self.register_plugin('xep_0223') # XEP-0223: Persistent Storage of Private Data via PubSub
|
|
|
|
self.connect()
|
|
|
|
|
2025-03-10 10:35:21 +02:00
|
|
|
def on_connection_failed(self, event):
|
|
|
|
function_name = sys._getframe().f_code.co_name
|
|
|
|
logger.debug(f'{function_name},{event},Start')
|
2025-03-10 11:05:35 +02:00
|
|
|
self.is_connected = False
|
2025-03-10 10:35:21 +02:00
|
|
|
logger.debug(f'{function_name},{event},Finish')
|
2024-11-13 16:41:33 +02:00
|
|
|
|
2025-03-10 10:35:21 +02:00
|
|
|
def on_failed_auth(self, event):
|
|
|
|
function_name = sys._getframe().f_code.co_name
|
|
|
|
logger.debug(f'{function_name},{event},Start')
|
2025-03-10 11:05:35 +02:00
|
|
|
self.is_connected = False
|
2025-03-10 10:35:21 +02:00
|
|
|
logger.debug(f'{function_name},{event},Finish')
|
2024-11-13 16:41:33 +02:00
|
|
|
|
2025-03-10 12:05:56 +02:00
|
|
|
def on_got_offline(self, event):
|
|
|
|
function_name = sys._getframe().f_code.co_name
|
|
|
|
logger.debug(f'{function_name},{event},Start')
|
|
|
|
self.is_connected = False
|
|
|
|
logger.debug(f'{function_name},{event},Finish')
|
|
|
|
|
2024-11-13 16:41:33 +02:00
|
|
|
def on_session_start(self, event):
|
2025-03-10 10:35:21 +02:00
|
|
|
function_name = sys._getframe().f_code.co_name
|
|
|
|
logger.debug(f'{function_name},{event},Start')
|
2025-03-10 11:05:35 +02:00
|
|
|
self.is_connected = True
|
2025-03-10 10:35:21 +02:00
|
|
|
logger.debug(f'{function_name},{event},Finish')
|