mod_xhtmlim/mod_xhtmlim.lua
author Matthew Wild <mwild1@gmail.com>
Fri, 23 Sep 2022 22:41:15 +0100
changeset 5058 62480053c87b
parent 3703 1f68287138e3
permissions -rw-r--r--
mod_cloud_notify_encrypted: Additional debug logging when enabling/skipping
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2869
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
-- XEP-0071: XHTML-IM sanitizing
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
local assert = assert;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
local st = require "util.stanza";
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
local url = require "socket.url";
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
3703
1f68287138e3 mod_xhtmlim: Default to stripping @style attribute by default
Kim Alvefur <zash@zash.se>
parents: 3408
diff changeset
     8
local no_styles = module:get_option_boolean("strip_xhtml_style", true);
2869
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
-- Tables from XEP-0071
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
local xeptables = [[
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
<body/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
<head/>	profile
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    14
<html/>	version
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
<title/>
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    16
<abbr/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
<acronym/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
<address/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
<blockquote/>	class, id, title; style; cite
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    20
<br/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
<cite/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
<code/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
<dfn/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
<div/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
<em/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
<h1/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    27
<h2/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    28
<h3/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    29
<h4/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    30
<h5/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    31
<h6/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    32
<kbd/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    33
<p/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    34
<pre/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    35
<q/>	class, id, title; style; cite
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    36
<samp/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    37
<span/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    38
<strong/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    39
<var/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    40
<a/>	class, id, title; style; accesskey, charset, href, hreflang, rel, rev, tabindex, type
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    41
<dl/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    42
<dt/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    43
<dd/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    44
<ol/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    45
<ul/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    46
<li/>	class, id, title; style
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    47
<img/>	class, id, title; style; alt, height, longdesc, src, width
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    48
]];
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    49
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    50
-- map of whitelisted tag names to set of allowed attributes
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    51
local tags = {}; -- { string : { string : boolean } }
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    52
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    53
for tag, attrs in xeptables:gmatch("<(%w+)/>([^\n]*)") do
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    54
	tags[tag] = { xmlns = true, ["xml:lang"] = true };
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    55
	for attr in attrs:gmatch("%w+") do
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    56
		tags[tag][attr] = true;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    57
	end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    58
	if no_styles then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    59
		tags[tag]["style"] = nil;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    60
	end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    61
end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    62
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    63
-- module:log("debug", "tags = %s;", require "util.serialization".serialize(tags));
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    64
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    65
-- TODO Decide if disallowed tags should be bounced or silently discarded.
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    66
-- XEP says "ignore" and replace tag with text content, but that would
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    67
-- need a different transform which can't use `maptags`.
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    68
if not module:get_option_boolean("bounce_invalid_xhtml", false) then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    69
	assert = function (x) return x end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    70
end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    71
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    72
local function sanitize_xhtml(tag)
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    73
	-- module:log("debug", "sanitize_xhtml(<{%s}%s>)", tag.attr.xmlns, tag.name);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    74
	if tag.attr.xmlns == "http://www.w3.org/1999/xhtml" then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    75
		local allowed = assert(tags[tag.name], tag.name);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    76
		if allowed then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    77
			for attr, value in pairs(tag.attr) do
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    78
				if not allowed[attr] then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    79
					-- module:log("debug", "Removing disallowed attribute %q from <%s>", attr, tag.name);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    80
					tag.attr[attr] = nil;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    81
				elseif attr == "src" or attr == "href" then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    82
					local urlattr = url.parse(value);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    83
					local scheme = urlattr and urlattr.scheme;
2870
276f7af8afd1 mod_xhtmlim: Fix scheme check (thanks wiktor)
Kim Alvefur <zash@zash.se>
parents: 2869
diff changeset
    84
					if scheme ~= "http" and scheme ~= "https" and scheme ~= "mailto" and scheme ~= "xmpp" and scheme ~= "cid" then
2869
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    85
						tag.attr[attr] = "https://url.was.invalid/";
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    86
					end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    87
				end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    88
			end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    89
		else
3408
6444fb5dbb51 mod_xhtmlim: Turn unknown elements into <span>
Kim Alvefur <zash@zash.se>
parents: 2870
diff changeset
    90
			tag.name = "span"
6444fb5dbb51 mod_xhtmlim: Turn unknown elements into <span>
Kim Alvefur <zash@zash.se>
parents: 2870
diff changeset
    91
			tag.attr = { xmlns = "http://www.w3.org/1999/xhtml" }
2869
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    92
		end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    93
		-- Check child tags
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    94
		tag:maptags(sanitize_xhtml);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    95
		-- This tag is clean!
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    96
		return tag;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    97
	end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    98
	-- Not xhtml, probably best to discard it
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    99
	return nil;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   100
end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   101
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   102
-- Check for xhtml-im, sanitize if exists
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   103
local function message_handler(event)
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   104
	local stanza = event.stanza;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   105
	if stanza:get_child("html", "http://jabber.org/protocol/xhtml-im") then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   106
		stanza = st.clone(stanza);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   107
		if pcall(function() -- try
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   108
			stanza:get_child("html", "http://jabber.org/protocol/xhtml-im"):maptags(sanitize_xhtml);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   109
		end) then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   110
			event.stanza = stanza;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   111
		else -- catch
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   112
			if stanza.attr.type ~= "error" then
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   113
				event.origin.send(st.error_reply(stanza, "modify", "not-acceptable", "Stanza contained illegal XHTML-IM tag"));
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   114
			end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   115
			return true;
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   116
		end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   117
	end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   118
end
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   119
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   120
-- Stanzas received from clients
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   121
module:hook("pre-message/bare", message_handler, 71);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   122
module:hook("pre-message/full", message_handler, 71);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   123
module:hook("pre-message/host", message_handler, 71);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   124
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   125
-- Stanzas about to be delivered to clients
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   126
module:hook("message/bare", message_handler, 71);
f6ed4421167d mod_xhtmlim: Attempts to sanitize XMTML-IM messages
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   127
module:hook("message/full", message_handler, 71);