Software /
code /
prosody
File
spec/scansion/muc_create_destroy.scs @ 13665:30a91d819913 13.0
mod_account_activity: Record an account's last activity timestamp
This is similar to mod_lastlog/mod_lastlog2.
Some functionality was dropped, compared to mod_lastlog2. These features
(recording the IP address, or tracking the timestamp of multiple events) are
handled better by the mod_audit family of modules. For example, those
correctly handle multiple logins, IP address truncation, and data retention
policies.
The "registered" timestamp from mod_lastlog2 was also dropped, as this has
been stored in account_details by Prosody itself since at least 0.12 already.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 12 Feb 2025 12:33:45 +0000 |
parent | 10941:642773f3073b |
line wrap: on
line source
# MUC creation, basic messages and destruction [Client] Romeo jid: romeo@localhost/mK0dD6Ha password: password [Client] Juliet jid: juliet@localhost/lVwkim_k password: password [Client] Admin jid: admin@localhost/DfNgg9VE password: password ----- Romeo connects Romeo sends: <presence to="garden@conference.localhost/romeo"> <x xmlns="http://jabber.org/protocol/muc"/> </presence> Romeo receives: <presence from="garden@conference.localhost/romeo"> <x xmlns="vcard-temp:x:update"> <photo/> </x> <x xmlns="http://jabber.org/protocol/muc#user"> <status code="201"/> <item affiliation="owner" jid="${Romeo's full JID}" role="moderator"/> <status code="110"/> </x> </presence> Romeo receives: <message from="garden@conference.localhost" type="groupchat"> <subject/> </message> Romeo sends: <iq to="garden@conference.localhost" id="lx3" type="set"> <query xmlns="http://jabber.org/protocol/muc#owner"> <x type="submit" xmlns="jabber:x:data"/> </query> </iq> Romeo receives: <iq id="lx3" type="result" from="garden@conference.localhost"/> Juliet connects Romeo sends: <message to="garden@conference.localhost" type="groupchat" id="rm1"> <body>Where are thou my Juliet?</body> </message> Romeo receives: <message type="groupchat" from="garden@conference.localhost/romeo" id="rm1"> <body>Where are thou my Juliet?</body> </message> Juliet sends: <presence to="garden@conference.localhost/juliet"> <x xmlns="http://jabber.org/protocol/muc"/> </presence> Juliet receives: <presence from="garden@conference.localhost/romeo"> <x xmlns="vcard-temp:x:update"> <photo/> </x> <x xmlns="http://jabber.org/protocol/muc#user"> <item affiliation="owner" role="moderator"/> </x> </presence> Juliet receives: <presence from="garden@conference.localhost/juliet"> <x xmlns="vcard-temp:x:update"> <photo/> </x> <x xmlns="http://jabber.org/protocol/muc#user"> <item affiliation="none" jid="${Juliet's full JID}" role="participant"/> <status code="110"/> </x> </presence> Juliet receives: <message from="garden@conference.localhost/romeo" id="rm1" type="groupchat"> <body>Where are thou my Juliet?</body> <delay stamp="{scansion:any}" xmlns="urn:xmpp:delay" from="garden@conference.localhost"/> </message> Juliet receives: <message from="garden@conference.localhost" type="groupchat"> <subject/> </message> Romeo receives: <presence from="garden@conference.localhost/juliet"> <x xmlns="vcard-temp:x:update"> <photo/> </x> <x xmlns="http://jabber.org/protocol/muc#user"> <item affiliation="none" jid="${Juliet's full JID}" role="participant"/> </x> </presence> Juliet sends: <message to="garden@conference.localhost" type="groupchat" id="jm1"> <body>/me jumps out from behind a tree</body> </message> Romeo receives: <message type="groupchat" id="jm1" from="garden@conference.localhost/juliet"> <body>/me jumps out from behind a tree</body> </message> Juliet receives: <message type="groupchat" id="jm1" from="garden@conference.localhost/juliet"> <body>/me jumps out from behind a tree</body> </message> Juliet sends: <message to="garden@conference.localhost" type="groupchat" id="jm2"> <body>Here I am!</body> </message> Romeo receives: <message type="groupchat" id="jm2" from="garden@conference.localhost/juliet"> <body>Here I am!</body> </message> Juliet receives: <message type="groupchat" id="jm2" from="garden@conference.localhost/juliet"> <body>Here I am!</body> </message> Romeo sends: <message to="garden@conference.localhost" type="groupchat" id="rm2"> <body>What is this place?</body> </message> Romeo receives: <message type="groupchat" id="rm2" from="garden@conference.localhost/romeo"> <body>What is this place?</body> </message> Juliet receives: <message type="groupchat" id="rm2" from="garden@conference.localhost/romeo"> <body>What is this place?</body> </message> Juliet sends: <message to="garden@conference.localhost" type="groupchat" id="jm3"> <body>I think we're in a script!</body> </message> Romeo receives: <message type="groupchat" id="jm3" from="garden@conference.localhost/juliet"> <body>I think we're in a script!</body> </message> Juliet receives: <message type="groupchat" id="jm3" from="garden@conference.localhost/juliet"> <body>I think we're in a script!</body> </message> Romeo sends: <message to="garden@conference.localhost" type="groupchat" id="rm3"> <body>Oh no! Does that mean our love is not real?!</body> </message> Romeo receives: <message type="groupchat" id="rm3" from="garden@conference.localhost/romeo"> <body>Oh no! Does that mean our love is not real?!</body> </message> Juliet receives: <message type="groupchat" id="rm3" from="garden@conference.localhost/romeo"> <body>Oh no! Does that mean our love is not real?!</body> </message> Juliet sends: <message to="garden@conference.localhost" type="groupchat" id="jm4"> <body>I refuse to accept this! Let's burn this place to the ground!</body> </message> Romeo receives: <message type="groupchat" id="jm4" from="garden@conference.localhost/juliet"> <body>I refuse to accept this! Let's burn this place to the ground!</body> </message> Juliet receives: <message type="groupchat" id="jm4" from="garden@conference.localhost/juliet"> <body>I refuse to accept this! Let's burn this place to the ground!</body> </message> Romeo sends: <message to="garden@conference.localhost" type="groupchat" id="rm4"> <body>Yes!</body> </message> Romeo receives: <message type="groupchat" id="rm4" from="garden@conference.localhost/romeo"> <body>Yes!</body> </message> Juliet receives: <message type="groupchat" id="rm4" from="garden@conference.localhost/romeo"> <body>Yes!</body> </message> Romeo sends: <iq to="garden@conference.localhost" id="lx4" type="set"> <query xmlns="http://jabber.org/protocol/muc#owner"> <destroy> <reason>We refuse to live in this fantasy!</reason> </destroy> </query> </iq> Juliet receives: <presence from="garden@conference.localhost/juliet" type="unavailable"> <x xmlns="http://jabber.org/protocol/muc#user"> <destroy> <reason>We refuse to live in this fantasy!</reason> </destroy> <item affiliation="none" jid="${Juliet's full JID}" role="none"/> <status code="110"/> </x> </presence> Romeo receives: <presence from="garden@conference.localhost/romeo" type="unavailable"> <x xmlns="http://jabber.org/protocol/muc#user"> <destroy> <reason>We refuse to live in this fantasy!</reason> </destroy> <item affiliation="owner" jid="${Romeo's full JID}" role="none"/> <status code="110"/> </x> </presence> Romeo receives: <iq id="lx4" type="result" from="garden@conference.localhost"/> Juliet disconnects Romeo sends: <presence to="elsewhere@conference.localhost/romeo"> <x xmlns="http://jabber.org/protocol/muc"/> </presence> Romeo receives: <presence from="elsewhere@conference.localhost/romeo"> <x xmlns="vcard-temp:x:update"> <photo/> </x> <x xmlns="http://jabber.org/protocol/muc#user"> <status code="201"/> <item affiliation="owner" jid="${Romeo's full JID}" role="moderator"/> <status code="110"/> </x> </presence> Romeo receives: <message from="elsewhere@conference.localhost" type="groupchat"> <subject/> </message> Romeo sends: <iq to="elsewhere@conference.localhost" id="lx5" type="set"> <query xmlns="http://jabber.org/protocol/muc#owner"> <x type="submit" xmlns="jabber:x:data"/> </query> </iq> Romeo receives: <iq id="lx5" type="result" from="elsewhere@conference.localhost"/> Admin connects Admin sends: <iq id="destroy" type="set" to="conference.localhost"> <command xmlns="http://jabber.org/protocol/commands" node="http://prosody.im/protocol/muc#destroy"> <x xmlns="jabber:x:data"> <field var="rooms"> <value>elsewhere@conference.localhost</value> </field> </x> </command> </iq> Romeo receives: <presence from="elsewhere@conference.localhost/romeo" type="unavailable"> <x xmlns="http://jabber.org/protocol/muc#user"> <destroy/> <item affiliation="owner" jid="${Romeo's full JID}" role="none"/> <status code="110"/> </x> </presence> Romeo disconnects Admin receives: <iq id="destroy" type="result" from="conference.localhost"> <command xmlns="http://jabber.org/protocol/commands" node="http://prosody.im/protocol/muc#destroy" status="completed" sessionid="{scansion:any}"> <note type="info">The following rooms were destroyed: elsewhere@conference.localhost</note> </command> </iq> Admin disconnects # recording ended on 2019-08-31T13:45:32Z