changeset 2273:677fc0203da0

mod_filter_words: Very basic module in its early stages, to filter words in messages
author Matthew Wild <mwild1@gmail.com>
date Thu, 18 Aug 2016 10:25:29 +0100 (2016-08-18)
parents 65d9093525ca
children 43e647b8dd9f
files mod_filter_words/mod_filter_words.lua
diffstat 1 files changed, 33 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_filter_words/mod_filter_words.lua	Thu Aug 18 10:25:29 2016 +0100
@@ -0,0 +1,33 @@
+local filters = require "util.filters";
+
+local replacements = module:get_option("filter_words", {});
+
+if not replacements then
+	module:log("warn", "No 'filter_words' option set, filters inactive");
+	return
+end
+
+function filter_stanza(stanza)
+	if stanza.name == "message" then
+		local body = stanza:get_child("body");
+		if body then
+			body[1] = body[1]:gsub("%a+", replacements);
+		end
+	end
+	return stanza;
+end
+
+function filter_session(session)
+	filters.add_filter(session, "stanzas/in", filter_stanza);
+end
+
+function module.load()
+	if module.reloading then
+		module:log("warn", "RELOADING!!!");
+	end
+	filters.add_filter_hook(filter_session);
+end
+
+function module.unload()
+	filters.remove_filter_hook(filter_session);	
+end