annotate mod_carbons_adhoc/mod_carbons_adhoc.lua @ 4651:8231774f5bfd

mod_cloud_notify_encrypted: Ensure body substring remains valid UTF-8 The `body:sub()` call risks splitting the string in the middle of a multi-byte UTF-8 sequence. This should have been caught by util.stanza validation, but that would have caused some havoc, at the very least causing the notification to not be sent. There have been no reports of this happening. Likely because this module isn't widely deployed among users with languages that use many longer UTF-8 sequences. The util.encodings.utf8.valid() function is O(n) where only the last sequence really needs to be checked, but it's in C and expected to be fast.
author Kim Alvefur <zash@zash.se>
date Sun, 22 Aug 2021 13:22:59 +0200
parents a6c51f380777
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 890
diff changeset
1 -- Implement a Adhoc command which will show a user
890
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 bare_jid = jid_bare(data.from);
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
19 local user_sessions = bare_sessions[bare_jid];
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
20
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
21 local result = "";
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 890
diff changeset
22
890
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
23 user_sessions = user_sessions and user_sessions.sessions;
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
24 for _, session in pairs(user_sessions) do
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
25 if session.full_jid then
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
26 result = result .. session.full_jid .. ": " ..
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
27 ( (session.want_carbons == xmlns_carbons_v2 and "v2" ) or
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
28 (session.want_carbons == xmlns_carbons_v1 and "v1" ) or
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
29 (session.want_carbons == xmlns_carbons_v0 and "v0" ) or
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
30 "none" ) .. "\n";
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
31 end
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
32 end
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
33
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
34 return { info = result, status = "completed" };
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
35 end
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
36
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 890
diff changeset
37 local status_desc = adhoc_new("Carbons: Get Status",
890
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
38 "mod_carbons_adhoc#status", adhoc_status);
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
39
7ac1b8a799be mod_carbons_adhoc: Initial commit.
Michael Holzt <kju@fqdn.org>
parents:
diff changeset
40 module:add_item("adhoc", status_desc);