spec/scansion/pubsub_basic.scs
author Jonas Schäfer <jonas@wielicki.name>
Mon, 10 Jan 2022 18:23:54 +0100
branch0.11
changeset 12185 783056b4e448
parent 9294 329a670ae975
child 10519 35bf3b80480f
permissions -rw-r--r--
util.xml: Do not allow doctypes, comments or processing instructions Yes. This is as bad as it sounds. CVE pending. In Prosody itself, this only affects mod_websocket, which uses util.xml to parse the <open/> frame, thus allowing unauthenticated remote DoS using Billion Laughs. However, third-party modules using util.xml may also be affected by this. This commit installs handlers which disallow the use of doctype declarations and processing instructions without any escape hatch. It, by default, also introduces such a handler for comments, however, there is a way to enable comments nontheless. This is because util.xml is used to parse human-facing data, where comments are generally a desirable feature, and also because comments are generally harmless.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9294
329a670ae975 spec/scansion: Ensure all scripts have sensible titles
Matthew Wild <mwild1@gmail.com>
parents: 9269
diff changeset
     1
# Pubsub: Basic support
329a670ae975 spec/scansion: Ensure all scripts have sensible titles
Matthew Wild <mwild1@gmail.com>
parents: 9269
diff changeset
     2
9269
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     3
[Client] Romeo
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     4
	jid: admin@localhost
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     5
	password: password
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     6
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     7
// admin@localhost is assumed to have node creation privileges
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     8
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     9
[Client] Juliet
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    10
	jid: juliet@localhost
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    11
	password: password
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    12
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    13
---------
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    14
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    15
Romeo connects
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    16
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    17
Romeo sends:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    18
	<iq type="set" to="pubsub.localhost" id='create1'>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    19
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    20
			<create node="princely_musings"/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    21
		</pubsub>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    22
	</iq>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    23
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    24
Romeo receives:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    25
	<iq type="result" id='create1'/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    26
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    27
Juliet connects
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    28
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    29
-- Juliet sends:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    30
-- 	<iq type="set" to="pubsub.localhost">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    31
-- 		<pubsub xmlns="http://jabber.org/protocol/pubsub">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    32
-- 			<subscribe node="princely_musings" jid="${Romeo's full JID}"/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    33
-- 		</pubsub>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    34
-- 	</iq>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    35
-- 
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    36
-- Juliet receives:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    37
-- 	<iq type="error"/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    38
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    39
Juliet sends:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    40
	<iq type="set" to="pubsub.localhost" id='sub1'>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    41
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    42
			<subscribe node="princely_musings" jid="${Juliet's full JID}"/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    43
		</pubsub>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    44
	</iq>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    45
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    46
Juliet receives:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    47
	<iq type="result" id='sub1'/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    48
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    49
Romeo sends:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    50
	<iq type="set" to="pubsub.localhost" id='pub1'>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    51
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    52
			<publish node="princely_musings">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    53
				<item id="current">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    54
					<entry xmlns="http://www.w3.org/2005/Atom">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    55
						<title>Soliloquy</title>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    56
						<summary>Lorem ipsum dolor sit amet</summary>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    57
					</entry>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    58
				</item>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    59
			</publish>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    60
		</pubsub>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    61
	</iq>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    62
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    63
Romeo receives:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    64
	<iq type="result" id='pub1'/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    65
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    66
Juliet receives:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    67
	<message type="headline" from="pubsub.localhost">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    68
		<event xmlns="http://jabber.org/protocol/pubsub#event">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    69
			<items node="princely_musings">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    70
				<item id="current">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    71
					<entry xmlns="http://www.w3.org/2005/Atom">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    72
						<title>Soliloquy</title>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    73
						<summary>Lorem ipsum dolor sit amet</summary>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    74
					</entry>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    75
				</item>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    76
			</items>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    77
		</event>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    78
	</message>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    79
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    80
Juliet sends:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    81
	<iq type="set" to="pubsub.localhost" id='unsub1'>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    82
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    83
			<unsubscribe node="princely_musings" jid="${Juliet's full JID}"/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    84
		</pubsub>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    85
	</iq>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    86
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    87
Juliet receives:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    88
	<iq type="result" id='unsub1'/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    89
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    90
Juliet disconnects
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    91
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    92
Romeo sends:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    93
	<iq type="set" to="pubsub.localhost" id='del1'>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    94
		<pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    95
			<delete node="princely_musings"/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    96
		</pubsub>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    97
	</iq>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    98
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    99
Romeo receives:
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   100
	<iq type="result" id='del1'/>
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   101
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   102
Romeo disconnects
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   103
c5267f5fd6e6 spec/scansion: Add scansion scripts used for testing
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   104
// vim: syntax=xml: