view plugins/mod_version.lua @ 12590:5eaf77114fdb

compat: Use table.pack (there since Lua 5.2) over our util.table Added in d278a770eddc avoid having to deal with its absence in Lua 5.1. No longer needed when Lua 5.1 support is dropped.
author Kim Alvefur <zash@zash.se>
date Mon, 11 Jul 2022 19:15:24 +0200
parents a950f9fa9137
children 74b9e05af71e
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--

local st = require "util.stanza";

module:add_feature("jabber:iq:version");

local query = st.stanza("query", {xmlns = "jabber:iq:version"})
	:text_tag("name", "Prosody")
	:text_tag("version", prosody.version);

if not module:get_option_boolean("hide_os_type") then
	local platform;
	if os.getenv("WINDIR") then
		platform = "Windows";
	else
		local os_version_command = module:get_option_string("os_version_command");
		local ok, pposix = pcall(require, "util.pposix");
		if not os_version_command and (ok and pposix and pposix.uname) then
			platform = pposix.uname().sysname;
		end
		if not platform then
			local uname = io.popen(os_version_command or "uname");
			if uname then
				platform = uname:read("*a");
			end
			uname:close();
		end
	end
	if platform then
		platform = platform:match("^%s*(.-)%s*$") or platform;
		query:text_tag("os", platform);
	end
end

module:hook("iq-get/host/jabber:iq:version:query", function(event)
	local origin, stanza = event.origin, event.stanza;
	origin.send(st.reply(stanza):add_child(query));
	return true;
end);