Annotate

mod_carbons_adhoc/mod_carbons_adhoc.lua @ 949:b729414b4bf1

mod_firewall/actions: Move semicolon as to not produce two in a row. (Not legal in Lua)
author Kim Alvefur <zash@zash.se>
date Wed, 03 Apr 2013 19:41:00 +0200
parent 890:7ac1b8a799be
child 1343:7dbde05b48a9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
890
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
1 -- Implement a Adhoc command which will show a user
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
2 -- the status of carbons generation in regard to his clients
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
3 --
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
4 -- Copyright (C) 2012 Michael Holzt
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
5 --
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
6 -- This file is MIT/X11 licensed.
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
7
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
8 local st = require "util.stanza";
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
9 local jid_bare = require "util.jid".bare;
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
10 local adhoc_new = module:require "adhoc".new;
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
11 local xmlns_carbons_v2 = "urn:xmpp:carbons:2";
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
12 local xmlns_carbons_v1 = "urn:xmpp:carbons:1";
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
13 local xmlns_carbons_v0 = "urn:xmpp:carbons:0";
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
14
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
15 local bare_sessions = bare_sessions;
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
16
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
17 local function adhoc_status(self, data, state)
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
18 local result;
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
19
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
20 local bare_jid = jid_bare(data.from);
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
21 local user_sessions = bare_sessions[bare_jid];
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
22
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
23 local result = "";
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
24
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
25 user_sessions = user_sessions and user_sessions.sessions;
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
26 for _, session in pairs(user_sessions) do
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
27 if session.full_jid then
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
28 result = result .. session.full_jid .. ": " ..
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
29 ( (session.want_carbons == xmlns_carbons_v2 and "v2" ) or
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
30 (session.want_carbons == xmlns_carbons_v1 and "v1" ) or
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
31 (session.want_carbons == xmlns_carbons_v0 and "v0" ) or
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
32 "none" ) .. "\n";
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
33 end
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
34 end
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
35
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
36 return { info = result, status = "completed" };
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
37 end
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
38
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
39 local status_desc = adhoc_new("Carbons: Get Status",
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
40 "mod_carbons_adhoc#status", adhoc_status);
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
41
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
42 module:add_item("adhoc", status_desc);