mod_dialback: Keep the same dialback secret across module reloads
[prosody.git] / plugins / mod_watchregistrations.lua
index eb468388ab0c064e5bc714d0cdd8a5971291ea0d..b7be5daf8e8a945aa29de64e82b57d762a089a7f 100644 (file)
@@ -1,25 +1,30 @@
+-- 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 config = require "core.configmanager";
 
-local registration_watchers = config.get(host, "core", "registration_watchers") 
-       or config.get(host, "core", "admins") or {};
+local host = module:get_host();
+local jid_prep = require "util.jid".prep;
 
-local registration_alert = config.get(host, "core", "registration_notification") or "User $username just registered on $host from $ip";
+local registration_watchers = module:get_option_set("registration_watchers", module:get_option("admins", {})) / jid_prep;
+local registration_notification = module:get_option("registration_notification", "User $username just registered on $host from $ip");
 
 local st = require "util.stanza";
 
-module:add_event_hook("user-registered", function (user)
-               module:log("debug", "Notifying of new registration");
-               local message = st.message{ type = "chat", from = host }
-                                       :tag("body")
-                                       :text(registration_alert:gsub("%$(%w+)", 
-                                               function (v) return user[v] or user.session and user.session[v] or nil; end));
-               
-               for _, jid in ipairs(registration_watchers) do
-                       module:log("debug", "Notifying %s", jid);
-                       message.attr.to = jid;
-                       core_route_stanza(hosts[host], message);
-               end
-       end);
+module:hook("user-registered", function (user)
+       module:log("debug", "Notifying of new registration");
+       local message = st.message{ type = "chat", from = host }
+               :tag("body")
+                       :text(registration_notification:gsub("%$(%w+)", function (v)
+                               return user[v] or user.session and user.session[v] or nil;
+                       end));
+       for jid in registration_watchers do
+               module:log("debug", "Notifying %s", jid);
+               message.attr.to = jid;
+               module:send(message);
+       end
+end);