annotate mod_private_adhoc/mod_private_adhoc.lua @ 5298:12f7d8b901e0

mod_audit: Support for adding location (GeoIP) to audit events This can be more privacy-friendly than logging full IP addresses, and also more informative to a user - IP addresses don't mean much to the average person, however if they see activity from outside their expected country, they can immediately identify suspicious activity. As with IPs, this field is configurable for deployments that would like to disable it. Location is also not logged when the geoip library is not available.
author Matthew Wild <mwild1@gmail.com>
date Sat, 01 Apr 2023 13:11:53 +0100
parents deb79c2357bb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1461
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
1 -- Prosody IM
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
4 --
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
6 -- COPYING file in the source package for more information.
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
7 --
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
8
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
9 -- Module by Thomas Raschbacher 2014
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
10 -- lordvan@lordvan.com
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
11
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
12 module:depends"adhoc";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
13 local dataforms_new = require "util.dataforms".new;
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
14 local st = require "util.stanza";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
15 local jid_split = require "util.jid".split;
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
16
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
17 local private_storage = module:open_store("private");
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
18
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
19 local private_adhoc_result_layout = dataforms_new{
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
20 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
21 { name = "privatexmldata", type = "text-multi", label = "Private XML data" };
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
22 };
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
23
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
24
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
25 function private_adhoc_command_handler (self, data, state)
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
26 local username, hostname = jid_split(data.from);
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
27 local data, err = private_storage:get(username);
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
28 local dataString = "";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
29 if not data then
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
30 dataString = "No data found.";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
31 if err then dataString = dataString..err end;
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
32 else
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
33 for key,value in pairs(data) do
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
34 dataString = dataString..tostring(st.deserialize(value)):gsub("><",">\n<")
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
35 dataString = dataString.."\n\n";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
36 end
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
37 end
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
38 return { status = "completed", result= { layout = private_adhoc_result_layout, values = {privatexmldata=dataString.."\n"}} };
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
39 end
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
40
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
41 local adhoc_new = module:require "adhoc".new;
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
42 local descriptor = adhoc_new("Query private data", "private_adhoc", private_adhoc_command_handler, "local_user");
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
43 module:add_item ("adhoc", descriptor);
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
44