Merge 0.11->trunk
authorKim Alvefur <zash@zash.se>
Mon, 12 Nov 2018 18:26:39 +0100
changeset 9625 f85e12d9eede
parent 9621 655b8d36a8a4 (current diff)
parent 9624 ddcb28c8f64b (diff)
child 9627 4d758f575591
Merge 0.11->trunk
--- a/plugins/mod_scansion_record.lua	Sun Nov 11 02:31:09 2018 +0100
+++ b/plugins/mod_scansion_record.lua	Mon Nov 12 18:26:39 2018 +0100
@@ -6,6 +6,7 @@
 local id = require "util.id";
 local dt = require "util.datetime";
 local dm = require "util.datamanager";
+local st = require "util.stanza";
 
 local record_id = id.medium():lower();
 local record_date = os.date("%Y%b%d"):lower();
@@ -36,12 +37,16 @@
 end
 
 local function record_stanza(stanza, session, verb)
-	record(session.scansion_id.." "..verb..":\n\t"..tostring(stanza).."\n\n");
+	local flattened = tostring(stanza):gsub("><", ">\n\t<");
+	-- TODO Proper prettyprinting with indentation
+	record(session.scansion_id.." "..verb..":\n\t"..flattened.."\n\n");
 end
 
 local function record_stanza_in(stanza, session)
 	if stanza.attr.xmlns == nil then
-		record_stanza(stanza, session, "sends")
+		local copy = st.clone(stanza);
+		copy.attr.from = nil;
+		record_stanza(copy, session, "sends")
 	end
 	return stanza;
 end
@@ -49,7 +54,11 @@
 local function record_stanza_out(stanza, session)
 	if stanza.attr.xmlns == nil then
 		if not (stanza.name == "iq" and stanza:get_child("bind", "urn:ietf:params:xml:ns:xmpp-bind")) then
-			record_stanza(stanza, session, "receives");
+			local copy = st.clone(stanza);
+			if copy.attr.to == session.full_jid then
+				copy.attr.to = nil;
+			end
+			record_stanza(copy, session, "receives");
 		end
 	end
 	return stanza;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/scansion/muc_whois_anyone_member.scs	Mon Nov 12 18:26:39 2018 +0100
@@ -0,0 +1,101 @@
+# MUC: Allow members to fetch the affiliation lists in open non-anonymous rooms
+
+[Client] Romeo
+	jid: romeo@localhost/MsliYo9C
+	password: password
+
+[Client] Juliet
+	jid: juliet@localhost/vJrUtY4Z
+	password: password
+
+-----
+
+Romeo connects
+
+Romeo sends:
+	<presence to='issue1230@conference.localhost/romeo'>
+	<x xmlns='http://jabber.org/protocol/muc'/>
+	</presence>
+
+Romeo receives:
+	<presence from='issue1230@conference.localhost/romeo'>
+	<x xmlns='http://jabber.org/protocol/muc#user'>
+	<status code='201'/>
+	<item jid="${Romeo's JID}" role='moderator' affiliation='owner'/>
+	<status code='110'/>
+	</x>
+	</presence>
+
+Romeo receives:
+	<message from='issue1230@conference.localhost' type='groupchat'>
+	<subject/>
+	</message>
+
+Romeo sends:
+	<iq id='lx3' type='set' to='issue1230@conference.localhost'>
+	<query xmlns='http://jabber.org/protocol/muc#owner'>
+	<x type='submit' xmlns='jabber:x:data'>
+	<field var='FORM_TYPE'>
+	<value>http://jabber.org/protocol/muc#roomconfig</value>
+	</field>
+	<field var='muc#roomconfig_whois'>
+	<value>anyone</value>
+	</field>
+	</x>
+	</query>
+	</iq>
+
+Romeo receives:
+	<iq from='issue1230@conference.localhost' type='result' id='lx3'/>
+
+Romeo receives:
+	<message from='issue1230@conference.localhost' type='groupchat'>
+	<x xmlns='http://jabber.org/protocol/muc#user'>
+	<status code='172'/>
+	</x>
+	</message>
+
+Juliet connects
+
+Juliet sends:
+	<presence to='issue1230@conference.localhost/juliet'>
+	<x xmlns='http://jabber.org/protocol/muc'/>
+	</presence>
+
+Juliet receives:
+	<presence from='issue1230@conference.localhost/romeo'>
+	<x xmlns='http://jabber.org/protocol/muc#user'>
+	<item jid="${Romeo's JID}" role='moderator' affiliation='owner'/>
+	</x>
+	</presence>
+
+Juliet receives:
+	<presence from='issue1230@conference.localhost/juliet'>
+	<x xmlns='http://jabber.org/protocol/muc#user'>
+	<status code='100'/>
+	<item jid="${Juliet's JID}" role='participant' affiliation='none'/>
+	<status code='110'/>
+	</x>
+	</presence>
+
+Juliet receives:
+	<message from='issue1230@conference.localhost' type='groupchat'>
+	<subject/>
+	</message>
+
+Juliet sends:
+	<iq id='lx2' type='get' to='issue1230@conference.localhost'>
+	<query xmlns='http://jabber.org/protocol/muc#admin'>
+	<item affiliation='member'/>
+	</query>
+	</iq>
+
+Juliet receives:
+	<iq from='issue1230@conference.localhost' type='result' id='lx2'>
+	<query xmlns='http://jabber.org/protocol/muc#admin'/>
+	</iq>
+
+Juliet disconnects
+
+Romeo disconnects
+
--- a/spec/scansion/prosody.cfg.lua	Sun Nov 11 02:31:09 2018 +0100
+++ b/spec/scansion/prosody.cfg.lua	Mon Nov 12 18:26:39 2018 +0100
@@ -42,6 +42,7 @@
 		--"motd"; -- Send a message to users when they log in
 		--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
 		--"proxy65"; -- Enables a file transfer proxy service which clients behind NAT can use
+		--"scansion_record";
 }
 
 certificate = "certs"