Terms&Conditions fixes:
* adding hints (no-store, no-copy) on xmpp messages * frontend will ignore any archived message
This commit is contained in:
		| @ -36,6 +36,11 @@ converse.plugins.add('livechat-converse-terms', { | |||||||
|           console.error('Invalid x-livechat-terms type: ', type) |           console.error('Invalid x-livechat-terms type: ', type) | ||||||
|           return |           return | ||||||
|         } |         } | ||||||
|  |         if (attrs.is_archived) { | ||||||
|  |           // This should not happen, as we add some no-store hints. But, just in case. | ||||||
|  |           console.info('Dropping an archived x-livechat-terms message') | ||||||
|  |           return | ||||||
|  |         } | ||||||
|         // console.info('Received a x-livechat-terms message', attrs) |         // console.info('Received a x-livechat-terms message', attrs) | ||||||
|         const options = {} |         const options = {} | ||||||
|         options['x_livechat_terms_' + type] = attrs |         options['x_livechat_terms_' + type] = attrs | ||||||
|  | |||||||
| @ -32,8 +32,10 @@ local function create_terms_message(room, type, terms) | |||||||
|     id = id.medium() |     id = id.medium() | ||||||
|   }, terms) |   }, terms) | ||||||
|     :tag('x-livechat-terms', { type = type }):up() -- adding a custom tag to specify that it is a "terms" message, so that frontend can display it with a special template. |     :tag('x-livechat-terms', { type = type }):up() -- adding a custom tag to specify that it is a "terms" message, so that frontend can display it with a special template. | ||||||
|     :tag("delay", { xmlns = "urn:xmpp:delay", from = from, stamp = datetime.datetime() }):up(); -- adding a delay to trick the moderation bot (see below) |     :tag("delay", { xmlns = "urn:xmpp:delay", from = from, stamp = datetime.datetime() }):up() -- adding a delay to trick the moderation bot (see below) | ||||||
|  |     :tag("no-copy", { xmlns = "urn:xmpp:hints" }):up() | ||||||
|  |     :tag("no-store", { xmlns = "urn:xmpp:hints" }):up() | ||||||
|  |     :tag("no-permanent-store", { xmlns = "urn:xmpp:hints" }):up(); | ||||||
|   -- concerning the delay tag: |   -- concerning the delay tag: | ||||||
|   -- We are sending message to rooms from non-existant occupants. |   -- We are sending message to rooms from non-existant occupants. | ||||||
|   -- If the message contains something that should be moderated by the livechat moderation bot, |   -- If the message contains something that should be moderated by the livechat moderation bot, | ||||||
|  | |||||||
| @ -25,6 +25,9 @@ Here is an example of sent messages: | |||||||
|   <x-livechat-terms type="global" /> |   <x-livechat-terms type="global" /> | ||||||
|   <delay xmlns="urn:xmpp:delay" stamp="2024-06-25T11:02:25Z" /> |   <delay xmlns="urn:xmpp:delay" stamp="2024-06-25T11:02:25Z" /> | ||||||
|   <stanza-id by="8df24108-6e70-4fc8-b1cc-f2db7fcdd535@room.p1.localhost" xmlns="urn:xmpp:sid:0" id="InoL5fonvOoR8X9gOlAYsz_N" /> |   <stanza-id by="8df24108-6e70-4fc8-b1cc-f2db7fcdd535@room.p1.localhost" xmlns="urn:xmpp:sid:0" id="InoL5fonvOoR8X9gOlAYsz_N" /> | ||||||
|  |   <no-copy xmlns='urn:xmpp:hints'/> | ||||||
|  |   <no-store xmlns='urn:xmpp:hints'/> | ||||||
|  |   <no-permanent-store xmlns='urn:xmpp:hints'/> | ||||||
| </message> | </message> | ||||||
|  |  | ||||||
| <message xmlns="jabber:client" id="_iRSEs061gi5GBjF7zGh7f-M" type="groupchat" to="root@p1.localhost/QH1H89H1" from="8df24108-6e70-4fc8-b1cc-f2db7fcdd535@room.p1.localhost/Peertube"> | <message xmlns="jabber:client" id="_iRSEs061gi5GBjF7zGh7f-M" type="groupchat" to="root@p1.localhost/QH1H89H1" from="8df24108-6e70-4fc8-b1cc-f2db7fcdd535@room.p1.localhost/Peertube"> | ||||||
| @ -32,6 +35,9 @@ Here is an example of sent messages: | |||||||
|   <x-livechat-terms type="muc" /> |   <x-livechat-terms type="muc" /> | ||||||
|   <delay xmlns="urn:xmpp:delay" stamp="2024-06-25T11:02:25Z" /> |   <delay xmlns="urn:xmpp:delay" stamp="2024-06-25T11:02:25Z" /> | ||||||
|   <stanza-id by="8df24108-6e70-4fc8-b1cc-f2db7fcdd535@room.p1.localhost" xmlns="urn:xmpp:sid:0" id="InoL5fonvOoR8X9gOlAYsz_N" /> |   <stanza-id by="8df24108-6e70-4fc8-b1cc-f2db7fcdd535@room.p1.localhost" xmlns="urn:xmpp:sid:0" id="InoL5fonvOoR8X9gOlAYsz_N" /> | ||||||
|  |   <no-copy xmlns='urn:xmpp:hints'/> | ||||||
|  |   <no-store xmlns='urn:xmpp:hints'/> | ||||||
|  |   <no-permanent-store xmlns='urn:xmpp:hints'/> | ||||||
| </message> | </message> | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| @ -47,6 +53,8 @@ We must do so, because without nickname, some XMPP clients won't show the messag | |||||||
| We also add a `delay` tag, to trick the moderation bot (see comments in code). | We also add a `delay` tag, to trick the moderation bot (see comments in code). | ||||||
| This also ensure clients will not drop the message because there is no occupant with this name. | This also ensure clients will not drop the message because there is no occupant with this name. | ||||||
|  |  | ||||||
|  | We also add some `urn:xmpp:hints` to avoid storing or copying these messages. | ||||||
|  |  | ||||||
| When muc terms are updated, the new terms will be broadcasted. | When muc terms are updated, the new terms will be broadcasted. | ||||||
|  |  | ||||||
| To avoid anyone spoofing terms & conditions, incoming message stanza are filtered, and any `x-livechat-terms` tag will be removed. | To avoid anyone spoofing terms & conditions, incoming message stanza are filtered, and any `x-livechat-terms` tag will be removed. | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user