File

spec/scansion/blocking.scs @ 12790:24b55f0e2db9 0.12

mod_http: Allow disabling CORS in the http_cors_override option and by default Fixes #1779. Due to an oversight in the logic, if the user set 'enabled' to false in an override, it would disable the item's requested CORS settings, but still apply Prosody's default CORS policy. This change ensures that 'enabled = false' will now disable CORS entirely for the requested item. Due to the new structure of the code, it was necessary to have a flag to say whether CORS is to be applied at all. Rather than hard-coding 'true' here, I chose to add a new option: 'http_default_cors_enabled'. This is a boolean that allows the operator to disable Prosody's default CORS policy entirely (the one that is used when a module or config does not override it). This makes it easier to disable CORS and then selectively enable it only on services you want it on.
author Matthew Wild <mwild1@gmail.com>
date Mon, 31 Oct 2022 14:32:02 +0000
parent 10812:3bd846c76701
line wrap: on
line source

# XEP-0191: Blocking Command

[Client] Romeo
	jid: blocker@localhost
	password: password

[Client] Juliet
	jid: blockee@localhost
	password: password

-----

# The parties connect
Romeo connects

Romeo sends:
	<presence/>

Romeo receives:
	<presence from="${Romeo's full JID}"/>

Juliet connects

Juliet sends:
	<presence/>

Juliet receives:
	<presence from="${Juliet's full JID}"/>

# They add each other
Romeo sends:
	<presence type="subscribe" to="${Juliet's JID}"/>

Romeo receives:
	<presence from="${Juliet's JID}" to="${Romeo's JID}" type="unavailable"/>

Juliet receives:
	<presence type="subscribe" to="${Juliet's JID}" from="${Romeo's JID}"/>

Juliet sends:
	<presence type="subscribed" to="${Romeo's JID}"/>

Romeo receives:
	<presence from="${Juliet's full JID}" to="${Romeo's JID}">
	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
	</presence>

Juliet sends:
	<presence type="subscribe" to="${Romeo's JID}"/>

Juliet receives:
	<presence from="${Romeo's JID}" to="${Juliet's JID}" type="unavailable"/>

Romeo receives:
	<presence type="subscribe" to="${Romeo's JID}" from="${Juliet's JID}"/>

Romeo sends:
	<presence type="subscribed" to="${Juliet's JID}"/>

Juliet receives:
	<presence from="${Romeo's full JID}" to="${Juliet's JID}">
	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
	</presence>

Romeo receives:
	<presence from="${Juliet's full JID}" to="${Romeo's JID}">
	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
	</presence>

# They can now talk
Juliet sends:
	<message type="chat" to="${Romeo's JID}">
	  <body>ohai</body>
	</message>

Romeo receives:
	<message type="chat" to="${Romeo's JID}" from="${Juliet's full JID}">
	  <body>ohai</body>
	</message>

# And now to the blockining

Romeo sends:
	<iq type="set" id="lx2">
	  <block xmlns="urn:xmpp:blocking">
	    <item jid="${Juliet's JID}"/>
	  </block>
	</iq>

Romeo receives:
	<iq type="result" id="lx2"/>

Juliet receives:
	<presence type="unavailable" to="${Juliet's JID}" from="${Romeo's full JID}"/>

# Can"t talk anymore
Romeo sends:
	<message type="chat" to="${Juliet's JID}">
	  <body>hello?</body>
	</message>

Romeo receives:
	<message type="error" from="${Juliet's JID}">
	  <error type="cancel">
	    <not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
	    <text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">You have blocked this JID</text>
	    <blocked xmlns="urn:xmpp:blocking:errors"/>
	  </error>
	</message>

Juliet sends:
	<message type="chat" to="${Romeo's JID}"/>

Juliet receives:
	<message type="error" from="${Romeo's JID}">
	  <error type="cancel">
	    <service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
	  </error>
	</message>

Romeo sends:
	<iq type="set" id="lx3">
	  <unblock xmlns="urn:xmpp:blocking">
	    <item jid="${Juliet's JID}"/>
	  </unblock>
	</iq>

Juliet receives:
	<presence to="${Juliet's JID}" from="${Romeo's full JID}">
	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
	</presence>

Romeo receives:
	<iq type="result" id="lx3"/>

# Can talk again
Romeo sends:
	<message type="chat" to="${Juliet's JID}">
	  <body>hello!</body>
	</message>

Juliet receives:
	<message type="chat" to="${Juliet's JID}" from="${Romeo's full JID}">
	  <body>hello!</body>
	</message>

# Bye
Juliet sends:
	<presence type="unavailable"/>

Juliet disconnects

Romeo receives:
	<presence from="${Juliet's full JID}" to="${Romeo's JID}" type="unavailable"/>

Romeo sends:
	<presence type="unavailable"/>

Romeo disconnects