From c0fb64530974b9308324ab904a59a33d44d59a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= Date: Thu, 3 Jan 2019 11:25:45 +0100 Subject: [PATCH] Move MUC message logging into message module --- gajim/common/connection.py | 2 -- gajim/common/connection_handlers.py | 43 ----------------------------- gajim/common/modules/message.py | 33 ++++++++++++++++++++++ 3 files changed, 33 insertions(+), 45 deletions(-) diff --git a/gajim/common/connection.py b/gajim/common/connection.py index f36d4124d..ccff8c924 100644 --- a/gajim/common/connection.py +++ b/gajim/common/connection.py @@ -570,9 +570,7 @@ class Connection(CommonConnection, ConnectionHandlers): # END __init__ def cleanup(self): - ConnectionHandlers.cleanup(self) modules.unregister(self) - app.ged.remove_event_handler('message-outgoing', ged.OUT_CORE, self._nec_message_outgoing) app.ged.remove_event_handler('gc-message-outgoing', ged.OUT_CORE, diff --git a/gajim/common/connection_handlers.py b/gajim/common/connection_handlers.py index 880252ed2..02c4d467e 100644 --- a/gajim/common/connection_handlers.py +++ b/gajim/common/connection_handlers.py @@ -30,10 +30,8 @@ import operator import nbxmpp from gajim.common import app -from gajim.common import ged from gajim.common import helpers from gajim.common import jingle_xtls -from gajim.common.caps_cache import muc_caps_cache from gajim.common.const import KindConstant from gajim.common.jingle import ConnectionJingle from gajim.common.protocol.bytestream import ConnectionSocks5Bytestream @@ -56,44 +54,6 @@ class ConnectionHandlersBase: # IDs of sent messages (https://trac.gajim.org/ticket/8222) self.sent_message_ids = [] - app.ged.register_event_handler('gc-message-received', ged.CORE, - self._nec_gc_message_received) - - def cleanup(self): - app.ged.remove_event_handler('gc-message-received', ged.CORE, - self._nec_gc_message_received) - - def _check_for_mam_compliance(self, room_jid, stanza_id): - namespace = muc_caps_cache.get_mam_namespace(room_jid) - if stanza_id is None and namespace == nbxmpp.NS_MAM_2: - log.warning('%s announces mam:2 without stanza-id', room_jid) - - def _nec_gc_message_received(self, obj): - if obj.conn.name != self.name: - return - - if obj.stanza.getType() == 'error': - return - - self._check_for_mam_compliance(obj.jid, obj.stanza_id) - - if (app.config.should_log(obj.conn.name, obj.jid) and - obj.msgtxt and obj.nick): - # if not obj.nick, it means message comes from room itself - # usually it hold description and can be send at each connection - # so don't store it in logs - app.logger.insert_into_logs(self.name, - obj.jid, - obj.timestamp, - KindConstant.GC_MSG, - message=obj.msgtxt, - contact_name=obj.nick, - additional_data=obj.additional_data, - stanza_id=obj.stanza_id) - app.logger.set_room_last_message_time(obj.room_jid, obj.timestamp) - self.get_module('MAM').save_archive_id( - obj.room_jid, obj.stanza_id, obj.timestamp) - # process and dispatch an error message def dispatch_error_message(self, msg, msgtxt, session, frm, tim): error_msg = msg.getErrorMsg() @@ -260,9 +220,6 @@ class ConnectionHandlers(ConnectionSocks5Bytestream, app.nec.register_incoming_event(StreamConflictReceivedEvent) app.nec.register_incoming_event(NotificationEvent) - def cleanup(self): - ConnectionHandlersBase.cleanup(self) - def _PubkeyGetCB(self, con, iq_obj): log.info('PubkeyGetCB') jid_from = helpers.get_full_jid_from_iq(iq_obj) diff --git a/gajim/common/modules/message.py b/gajim/common/modules/message.py index 7e19c18e3..205fde664 100644 --- a/gajim/common/modules/message.py +++ b/gajim/common/modules/message.py @@ -21,10 +21,12 @@ import nbxmpp from gajim.common import app from gajim.common import helpers +from gajim.common import caps_cache from gajim.common.i18n import _ from gajim.common.nec import NetworkIncomingEvent from gajim.common.nec import NetworkEvent from gajim.common.helpers import AdditionalDataDict +from gajim.common.const import KindConstant from gajim.common.modules.security_labels import parse_securitylabel from gajim.common.modules.user_nickname import parse_nickname from gajim.common.modules.misc import parse_delay @@ -264,12 +266,43 @@ class Message: app.nec.push_incoming_event(NetworkEvent('gc-message-received', **vars(event))) + # TODO: Some plugins modify msgtxt in the GUI event + self._log_muc_message(event) return app.nec.push_incoming_event( DecryptedMessageReceivedEvent( None, **vars(event))) + def _log_muc_message(self, event): + if event.mtype == 'error': + return + + self._check_for_mam_compliance(event.room_jid, event.stanza_id) + + if (app.config.should_log(self._account, event.jid) and + event.msgtxt and event.nick): + # if not event.nick, it means message comes from room itself + # usually it hold description and can be send at each connection + # so don't store it in logs + app.logger.insert_into_logs(self._account, + event.jid, + event.timestamp, + KindConstant.GC_MSG, + message=event.msgtxt, + contact_name=event.nick, + additional_data=event.additional_data, + stanza_id=event.stanza_id) + app.logger.set_room_last_message_time(event.room_jid, event.timestamp) + self._con.get_module('MAM').save_archive_id( + event.room_jid, event.stanza_id, event.timestamp) + + @staticmethod + def _check_for_mam_compliance(room_jid, stanza_id): + namespace = caps_cache.muc_caps_cache.get_mam_namespace(room_jid) + if stanza_id is None and namespace == nbxmpp.NS_MAM_2: + log.warning('%s announces mam:2 without stanza-id', room_jid) + def _get_unique_id(self, stanza, _forwarded, _sent, self_message, _muc_pm): if stanza.getType() == 'groupchat': # TODO: Disco the MUC check if 'urn:xmpp:mam:2' is announced