Annotate

plugins/uptime.lua @ 498:50d0bd035bb7

util.sasl.oauthbearer: Don't send authzid It's not needed and not recommended in XMPP unless we want to act as someone other than who we authenticate as. We find out the JID during resource binding.
author Kim Alvefur <zash@zash.se>
date Fri, 23 Jun 2023 12:09:49 +0200
parent 351:4455b07f77ed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
250
a5ac643a7fd6 added local verse var to all plugins
mva <mva@mva.name>
parents: 194
diff changeset
1 local verse = require "verse";
a5ac643a7fd6 added local verse var to all plugins
mva <mva@mva.name>
parents: 194
diff changeset
2
194
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
3 local xmlns_last = "jabber:iq:last";
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
4
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
5 local function set_uptime(self, uptime_info)
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
6 self.starttime = uptime_info.starttime;
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
7 end
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
8
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
9 function verse.plugins.uptime(stream)
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
10 stream.uptime = { set = set_uptime };
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
11 stream:hook("iq/"..xmlns_last, function (stanza)
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
12 if stanza.attr.type ~= "get" then return; end
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
13 local reply = verse.reply(stanza)
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
14 :tag("query", { seconds = tostring(os.difftime(os.time(), stream.uptime.starttime)), xmlns = xmlns_last });
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
15 stream:send(reply);
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
16 return true;
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
17 end);
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
18
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
19 function stream:query_uptime(target_jid, callback)
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
20 callback = callback or function (uptime) return stream:event("uptime/response", uptime); end
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
21 stream:send_iq(verse.iq({ type = "get", to = target_jid })
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
22 :tag("query", { xmlns = xmlns_last }),
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
23 function (reply)
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
24 local query = reply:get_child("query", xmlns_last);
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
25 if reply.attr.type == "result" then
351
4455b07f77ed verse.plugins.uptime: Explicitly cast uptime to a number
Kim Alvefur <zash@zash.se>
parents: 250
diff changeset
26 local seconds = tonumber(query.attr.seconds);
194
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
27 callback({
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
28 seconds = seconds or nil;
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
29 });
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
30 else
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
31 local type, condition, text = reply:get_error();
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
32 callback({
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
33 error = true;
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
34 condition = condition;
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
35 text = text;
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
36 type = type;
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
37 });
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
38 end
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
39 end);
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
40 end
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
41 return true;
651c696e0b21 Added uptime plugin, included also an entry for it into the squishy file.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
42 end