Annotate

plugins/mod_version.lua @ 5877:615a0774e4cc

util.timer: Updated to use util.indexedbheap to provide a more complete API. Timers can now be stopped or rescheduled. Callbacks are now pcall'd. Adding/removing timers from within timer callbacks works better. Optional parameter can be passed when creating timer which gets passed to callback, eliminating the need for closures in various timer uses. Timers are now much more lightweight.
author Waqas Hussain <waqas20@gmail.com>
date Wed, 30 Oct 2013 17:44:42 -0400
parent 5776:bd0ff8ae98a8
child 7977:01d6298de991
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1523
841d61be198f Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents: 1312
diff changeset
1 -- Prosody IM
2923
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 1646
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 1646
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 4793
diff changeset
4 --
758
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 704
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 704
diff changeset
6 -- COPYING file in the source package for more information.
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 517
diff changeset
7 --
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 517
diff changeset
8
188
0d9f03009b8a mod_version is here
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 local st = require "util.stanza";
0d9f03009b8a mod_version is here
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
1646
21bcc7b8b4d8 mod_version: Rewritten to use new API. Added reply caching, and fixed some issues.
Waqas Hussain <waqas20@gmail.com>
parents: 1645
diff changeset
11 module:add_feature("jabber:iq:version");
421
63be85693710 Modules now sending disco replies
Waqas Hussain <waqas20@gmail.com>
parents: 314
diff changeset
12
3483
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
13 local version;
803
5a64649f4b94 mod_version: Operating system detection. Disable with hide_os_type = true in config
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
14
3421
d3852a4d37e2 mod_version: Leave out the os element if hide_os_type is set
Kim Alvefur <zash@zash.se>
parents: 3420
diff changeset
15 local query = st.stanza("query", {xmlns = "jabber:iq:version"})
d3852a4d37e2 mod_version: Leave out the os element if hide_os_type is set
Kim Alvefur <zash@zash.se>
parents: 3420
diff changeset
16 :tag("name"):text("Prosody"):up()
d3852a4d37e2 mod_version: Leave out the os element if hide_os_type is set
Kim Alvefur <zash@zash.se>
parents: 3420
diff changeset
17 :tag("version"):text(prosody.version):up();
d3852a4d37e2 mod_version: Leave out the os element if hide_os_type is set
Kim Alvefur <zash@zash.se>
parents: 3420
diff changeset
18
1645
8ce5da8d24a0 mod_version: Use the module API to read configuration options instead of configmanager
Waqas Hussain <waqas20@gmail.com>
parents: 1523
diff changeset
19 if not module:get_option("hide_os_type") then
803
5a64649f4b94 mod_version: Operating system detection. Disable with hide_os_type = true in config
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
20 if os.getenv("WINDIR") then
5a64649f4b94 mod_version: Operating system detection. Disable with hide_os_type = true in config
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
21 version = "Windows";
5a64649f4b94 mod_version: Operating system detection. Disable with hide_os_type = true in config
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
22 else
3483
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
23 local os_version_command = module:get_option("os_version_command");
4793
eaa8991998d5 mod_version: Fix missing comma and correct prefix for util.pposix
Kim Alvefur <zash@zash.se>
parents: 3483
diff changeset
24 local ok, pposix = pcall(require, "util.pposix");
3483
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
25 if not os_version_command and (ok and pposix and pposix.uname) then
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
26 version = pposix.uname().sysname;
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
27 end
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
28 if not version then
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
29 local uname = io.popen(os_version_command or "uname");
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
30 if uname then
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
31 version = uname:read("*a");
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
32 end
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
33 uname:close();
803
5a64649f4b94 mod_version: Operating system detection. Disable with hide_os_type = true in config
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
34 end
5a64649f4b94 mod_version: Operating system detection. Disable with hide_os_type = true in config
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
35 end
3483
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
36 if version then
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
37 version = version:match("^%s*(.-)%s*$") or version;
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
38 query:tag("os"):text(version):up();
443139c396c5 mod_version: Use pposix.uname() if available and os_version_command not set
Matthew Wild <mwild1@gmail.com>
parents: 3421
diff changeset
39 end
803
5a64649f4b94 mod_version: Operating system detection. Disable with hide_os_type = true in config
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
40 end
5a64649f4b94 mod_version: Operating system detection. Disable with hide_os_type = true in config
Matthew Wild <mwild1@gmail.com>
parents: 760
diff changeset
41
1646
21bcc7b8b4d8 mod_version: Rewritten to use new API. Added reply caching, and fixed some issues.
Waqas Hussain <waqas20@gmail.com>
parents: 1645
diff changeset
42 module:hook("iq/host/jabber:iq:version:query", function(event)
21bcc7b8b4d8 mod_version: Rewritten to use new API. Added reply caching, and fixed some issues.
Waqas Hussain <waqas20@gmail.com>
parents: 1645
diff changeset
43 local stanza = event.stanza;
21bcc7b8b4d8 mod_version: Rewritten to use new API. Added reply caching, and fixed some issues.
Waqas Hussain <waqas20@gmail.com>
parents: 1645
diff changeset
44 if stanza.attr.type == "get" and stanza.attr.to == module.host then
21bcc7b8b4d8 mod_version: Rewritten to use new API. Added reply caching, and fixed some issues.
Waqas Hussain <waqas20@gmail.com>
parents: 1645
diff changeset
45 event.origin.send(st.reply(stanza):add_child(query));
21bcc7b8b4d8 mod_version: Rewritten to use new API. Added reply caching, and fixed some issues.
Waqas Hussain <waqas20@gmail.com>
parents: 1645
diff changeset
46 return true;
219
f06e97f525bc Fixed some whitespace.
Waqas Hussain <waqas20@gmail.com>
parents: 189
diff changeset
47 end
704
ef8d0d339172 mod_version: Removed and rearranged some code
Waqas Hussain <waqas20@gmail.com>
parents: 615
diff changeset
48 end);