mod_version: Operating system detection. Disable with hide_os_type = true in config

Sun, 15 Feb 2009 15:52:11 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Sun, 15 Feb 2009 15:52:11 +0000
changeset 803
5a64649f4b94
parent 802
33c012048492
child 804
9bc1544c99b7

mod_version: Operating system detection. Disable with hide_os_type = true in config

plugins/mod_version.lua file | annotate | diff | comparison | revisions
--- a/plugins/mod_version.lua	Sun Feb 15 11:47:43 2009 +0000
+++ b/plugins/mod_version.lua	Sun Feb 15 15:52:11 2009 +0000
@@ -14,11 +14,28 @@
 
 module:add_feature(xmlns_version);
 
+local version = "the best operating system ever!";
+
+if not require "core.configmanager".get("*", "core", "hide_os_type") then
+	if os.getenv("WINDIR") then
+		version = "Windows";
+	else
+		local uname = io.popen("uname");
+		if uname then
+			version = uname:read("*a");
+		else
+			version = "an OS";
+		end
+	end
+end
+
+version = version:match("^%s*(.-)%s*$") or version;
+
 module:add_iq_handler({"c2s", "s2sin"}, xmlns_version, function(session, stanza)
 	if stanza.attr.type == "get" then
 		session.send(st.reply(stanza):query(xmlns_version)
 			:tag("name"):text("Prosody"):up()
 			:tag("version"):text("0.3"):up()
-			:tag("os"):text("the best operating system ever!"));
+			:tag("os"):text(version));
 	end
 end);

mercurial