mod_private_adhoc/mod_private_adhoc.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:25:46 +0100
changeset 5062 39c2824c2880
parent 1461 deb79c2357bb
permissions -rwxr-xr-x
mod_cloud_notify: README overhaul
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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