-
Notifications
You must be signed in to change notification settings - Fork 28
Archiving functionality fails with private MUC messages #133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
The private messages shared in a groupchat (PM) are currently stored as if they were regular one-on-one (1:1) messages. During this, the context of the room in which the PM was shared is lost. This means that, from the persisted data, it is no longer possible that a message was once shared as a PM (as opposed to a 1:1). Although it is desirable to retrieve PMs as part of a group chat message archive, the existing behavior (PMs retrieved through the personal archive) could also have its merits - and might be depended on in various use-cases (FastPath maybe - but also third-party implementations that we have no knowledge about). There is, however, a security concern here: the existing implementation will, always, expose the real JID of the other peer in a PM - even if the room is configured to be semi-anonymous (semi-anonymous rooms have other privacy concerns of this nature, making the impact of this particular issue less critical). A seemingly obvious fix is to start including a column in Openfire's An alternative solution would be to use the database tables that are managed by the Monitoring plugin itself: It is reasonable to expect that the database tables managed by the Monitoring plugin are used solely by the Monitoring plugin. The concerns of changing content / structure having an undesired compatibility effect (as I noted above for The current incarnation of the Monitoring plugin uses the If we move the implementation back to First: An alternative solution would be to add a column to |
In MUCs, Private Messages (PMs) can be exchanged between two participants. When a participant retrieves its MUC messages, the PMs that they were involved in should also be returned. The pre-existing implementation stores PMs as regular one-to-one messages. By doing this, the context of them being exchanged in a MUC is lost. This commit additionally stores the PMs in context of a MUC (an additional database column is created for this). To be able to query for PMs, it is needed to provide, aside of the archive that's being queried, the person for which messages are queried. Note that this is specific to queries of MUC archives, as for Personal archives, these values are equal (the person owning the archive is the one querying it).
In MUCs, Private Messages (PMs) can be exchanged between two participants. When a participant retrieves its MUC messages, the PMs that they were involved in should also be returned. The pre-existing implementation stores PMs as regular one-to-one messages. By doing this, the context of them being exchanged in a MUC is lost. This commit additionally stores the PMs in context of a MUC (an additional database column is created for this). To be able to query for PMs, it is needed to provide, aside of the archive that's being queried, the person for which messages are queried. Note that this is specific to queries of MUC archives, as for Personal archives, these values are equal (the person owning the archive is the one querying it).
…able Historically, Private Messages sent through MUC rooms are stored as if they were one-on-one messages (in the personal archives of users). With igniterealtime#133 these PMs are now also stored in the MUC archive. Existing functionality might depend on these messages to be stored in the personal archives, or might break when these messages start showing up in the MUC archives. The changes in igniterealtime#133 retain the old functionality, but also adds the messages to the MUC archives (there's duplication now). Configuration options should be made available to control this behavior. Two new properties to be introduced, both take boolean values, both default to true: - conversation.roomArchiving.PMinPersonalArchive - conversation.roomArchiving.PMinRoomArchive
…able Historically, Private Messages sent through MUC rooms are stored as if they were one-on-one messages (in the personal archives of users). With igniterealtime#133 these PMs are now also stored in the MUC archive. Existing functionality might depend on these messages to be stored in the personal archives, or might break when these messages start showing up in the MUC archives. The changes in igniterealtime#133 retain the old functionality, but also adds the messages to the MUC archives (there's duplication now). Configuration options should be made available to control this behavior. Two new properties to be introduced, both take boolean values, both default to true: - conversation.roomArchiving.PMinPersonalArchive - conversation.roomArchiving.PMinRoomArchive
…in MUC archives This adds text-based search for archived messages that were exchanged as private messages in a MUC. This commit restructures the Lucene index that's used for this purpose, meaning that the index must be rebuild before usage!
With igniterealtime#133, private messages sent in a MUC are now stored as part of the MUC archive. The old behavior, storing them in the personal archive, is still supported, but has been made configurable. This commit toggles the default value for that setting (`conversation.roomArchiving.PMinPersonalArchive`) from 'true' to 'false'.
…ional value The 'is PM for JID' value is optional (not all messages are private messages), so it can be null. Null values cannot be parsed as JIDs.
The Openfire admin console allows administrators to look at a transcript of a conversation. This already includes private messages. Messages that are private messages should be annotated as such, otherwise, things get confusing.
The monitoring plugin logs groupchat (MUC) messages (also private group messages, as defined in https://xmpp.org/extensions/xep-0045.html#privatemessage) after they have been delivered to the room occupant(s) using a
MUCEventListener
.Because the message that is delivered is stored, the private messages that are archived contain the bare/real JID of the user the message was send to, and the occupant JID of the user that send the message. As opposed to the occupant JID of the destination user.
This causes private group chat messages to appear in archive queries for the real JID, and no messages to appear in queries for the occupant JID.
In addition to appearing in the wrong results, it also exposes the real JID of the destination user, even though the message was send to an occupant JID, and the real jid was unknown to the sending user.
It would be better if both the real JIDs, and the occupant JIDs of the sender and receiver were stored. It would also be better if the stanza was archived before it was delivered, with the original occupant JID as the ‘to’ value.
The text was updated successfully, but these errors were encountered: