Diff

plugins/mod_console.lua @ 1085:1ac11fb753ca

mod_console: Add s2s:show() command to list s2s connections
author Matthew Wild <mwild1@gmail.com>
date Sat, 02 May 2009 16:59:37 +0100
parent 1065:3806173670f2
child 1240:397b6e9c1568
line wrap: on
line diff
--- a/plugins/mod_console.lua	Sat May 02 16:58:40 2009 +0100
+++ b/plugins/mod_console.lua	Sat May 02 16:59:37 2009 +0100
@@ -194,6 +194,64 @@
 function def_env.hosts:add(name)
 end
 
+def_env.s2s = {};
+function def_env.s2s:show()
+	local _print = self.session.print;
+	local print = self.session.print;
+	for host, host_session in pairs(hosts) do
+		print = function (...) _print(host); _print(...); print = _print; end
+		for remotehost, session in pairs(host_session.s2sout) do
+			print("    "..host.." -> "..remotehost);
+			if session.sendq then
+				print("        There are "..#session.sendq.." queued outgoing stanzas for this connection");
+			end
+			if session.type == "s2sout_unauthed" then
+				if session.connecting then
+					print("        Connection not yet established");
+					if not session.srv_hosts then
+						if not session.conn then
+							print("        We do not yet have a DNS answer for this host's SRV records");
+						else
+							print("        This host has no SRV records, using A record instead");
+						end
+					elseif session.srv_choice then
+						print("        We are on SRV record "..session.srv_choice.." of "..#session.srv_hosts);
+						local srv_choice = session.srv_hosts[session.srv_choice];
+						print("        Using "..(srv_choice.target or ".")..":"..(srv_choice.port or 5269));
+					end
+				elseif session.notopen then
+					print("        The <stream> has not yet been opened");
+				elseif not session.dialback_key then
+					print("        Dialback has not been initiated yet");
+				elseif session.dialback_key then
+					print("        Dialback has been requested, but no result received");
+				end
+			end
+		end
+		
+		for session in pairs(incoming_s2s) do
+			if session.to_host == host then
+				print("    "..host.." <- "..(session.from_host or "(unknown)"));
+				if session.type == "s2sin_unauthed" then
+					print("        Connection not yet authenticated");
+				end
+				for name in pairs(session.hosts) do
+					if name ~= session.from_host then
+						print("        also hosts "..tostring(name));
+					end
+				end
+			end
+		end
+		print = _print;
+	end
+	for session in pairs(incoming_s2s) do
+		if not session.to_host then
+			print("Other incoming s2s connections");
+			print("    (unknown) <- "..(session.from_host or "(unknown)"));			
+		end
+	end
+end
+
 -------------
 
 function printbanner(session)