File

plugins/mod_watchregistrations.lua @ 12580:a9dbf657c894 0.12

util.datamapper: Improve handling of schemas with non-obvious "type" The JSON Schema specification says that schemas are objects or booleans, and that the 'type' property is optional and can be an array. This module previously allowed bare type names as schemas and did not really handle booleans. It now handles missing 'type' properties and boolean 'true' as a schema. Objects and arrays are guessed based on the presence of 'properties' or 'items' field.
author Kim Alvefur <zash@zash.se>
date Fri, 08 Jul 2022 17:32:48 +0200
parent 8812:3d7fceaff230
child 12977:74b9e05af71e
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--


local host = module:get_host();
local jid_prep = require "util.jid".prep;

local registration_watchers = module:get_option_set("registration_watchers", module:get_option("admins", {})) / jid_prep;
local registration_from = module:get_option_string("registration_from", host);
local registration_notification = module:get_option_string("registration_notification", "User $username just registered on $host from $ip");
local msg_type = module:get_option_string("registration_notification_type", "chat");

local st = require "util.stanza";

module:hook("user-registered", function (user)
	module:log("debug", "Notifying of new registration");
	local message = st.message{ type = msg_type, from = registration_from }
		:tag("body")
			:text(registration_notification:gsub("%$(%w+)", function (v)
				return user[v] or user.session and user.session[v] or nil;
			end))
		:up();
	for jid in registration_watchers do
		module:log("debug", "Notifying %s", jid);
		message.attr.to = jid;
		module:send(message);
	end
end);