Annotate

plugins/version.lua @ 445:b119dc4d8bc2

plugins.smacks: Don't warn about zero stanzas acked It's only if the count somehow goes backwards that something is really wrong. An ack for zero stanzas is fine and we don't need to do anything.
author Kim Alvefur <zash@zash.se>
date Thu, 10 Jun 2021 11:58:23 +0200
parent 395:e86144a4eaa1
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: 218
diff changeset
1 local verse = require "verse";
a5ac643a7fd6 added local verse var to all plugins
mva <mva@mva.name>
parents: 218
diff changeset
2
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local xmlns_version = "jabber:iq:version";
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
29
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
5 local function set_version(self, version_info)
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 self.name = version_info.name;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 self.version = version_info.version;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 self.platform = version_info.platform;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 function verse.plugins.version(stream)
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 stream.version = { set = set_version };
29
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
13 stream:hook("iq/"..xmlns_version, function (stanza)
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
14 if stanza.attr.type ~= "get" then return; end
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
15 local reply = verse.reply(stanza)
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 :tag("query", { xmlns = xmlns_version });
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 if stream.version.name then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 reply:tag("name"):text(tostring(stream.version.name)):up();
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 if stream.version.version then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 reply:tag("version"):text(tostring(stream.version.version)):up()
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 if stream.version.platform then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 reply:tag("os"):text(stream.version.platform);
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 end
29
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
26 stream:send(reply);
104
58305b983b1a verse.plugins.version: Return true when handling a version request
Matthew Wild <mwild1@gmail.com>
parents: 51
diff changeset
27 return true;
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 end);
380
0891b4e27766 Discard trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 250
diff changeset
29
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 function stream:query_version(target_jid, callback)
395
e86144a4eaa1 plugins: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 380
diff changeset
31 callback = callback or function (version) return self:event("version/response", version); end
e86144a4eaa1 plugins: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 380
diff changeset
32 self:send_iq(verse.iq({ type = "get", to = target_jid })
380
0891b4e27766 Discard trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 250
diff changeset
33 :tag("query", { xmlns = xmlns_version }),
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 function (reply)
51
d044a726fef0 plugins.version: Detect errors based on type attribute, rather than presence of query element
Matthew Wild <mwild1@gmail.com>
parents: 33
diff changeset
35 if reply.attr.type == "result" then
218
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
36 local query = reply:get_child("query", xmlns_version);
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
37 local name = query and query:get_child_text("name");
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
38 local version = query and query:get_child_text("version");
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
39 local os = query and query:get_child_text("os");
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 callback({
218
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
41 name = name;
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
42 version = version;
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
43 platform = os;
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 });
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 else
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 local type, condition, text = reply:get_error();
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 callback({
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 error = true;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49 condition = condition;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 text = text;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 type = type;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 });
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 end);
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 end
33
4581b2e61429 plugins.version: Return true on module load to indicate load success
Matthew Wild <mwild1@gmail.com>
parents: 29
diff changeset
56 return true;
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 end