mod_admin_probe/mod_admin_probe.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:26:26 +0100
changeset 5063 5f1120c284c5
parent 1281 f78661861e98
permissions -rw-r--r--
mod_cloud_notify_extensions: Add note about dependency Noting here because people might not click through to see it on the mod_cloud_notify_encrypted page.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1281
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     1
-- Prosody IM
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     2
-- Copyright (C) 2014 Florian Zeitz
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     3
--
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     4
-- This project is MIT/X11 licensed. Please see the
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     5
-- COPYING file in the source package for more information.
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     6
--
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     7
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     8
local presence = module:depends("presence");
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     9
local send_presence_of_available_resources = presence.send_presence_of_available_resources;
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    10
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    11
local hosts = prosody.hosts;
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    12
local core_post_stanza = prosody.core_post_stanza;
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    13
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    14
local st = require "util.stanza";
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    15
local is_admin = require "core.usermanager".is_admin;
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    16
local jid_split = require "util.jid".split;
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    17
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    18
module:hook("presence/bare", function(data)
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    19
	local origin, stanza = data.origin, data.stanza;
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    20
	local to, from, type = stanza.attr.to, stanza.attr.from, stanza.attr.type;
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    21
	local node, host = jid_split(to);
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    22
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    23
	if type ~= "probe" then return; end
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    24
	if not is_admin(from, module.host) then return; end
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    25
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    26
	if 0 == send_presence_of_available_resources(node, host, from, origin) then
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    27
		core_post_stanza(hosts[host], st.presence({from=to, to=from, type="unavailable"}), true);
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    28
	end
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    29
	return true;
f78661861e98 mod_admin_probe: Module allowing server administrators to probe any user
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    30
end, 10);