plugins/mod_admin_shell.lua
changeset 12126 50795249b7be
parent 12060 e62025f949f9
child 12130 0d8e6646ce42
equal deleted inserted replaced
12125:2162e86029b6 12126:50795249b7be
  1385 		return nil, "Both hosts are local";
  1385 		return nil, "Both hosts are local";
  1386 	end
  1386 	end
  1387 	local iq = st.iq{ from=localhost, to=remotehost, type="get", id=new_id()}
  1387 	local iq = st.iq{ from=localhost, to=remotehost, type="get", id=new_id()}
  1388 			:tag("ping", {xmlns="urn:xmpp:ping"});
  1388 			:tag("ping", {xmlns="urn:xmpp:ping"});
  1389 	local time_start = time.now();
  1389 	local time_start = time.now();
  1390 	return module:context(localhost):send_iq(iq, nil, timeout):next(function (pong)
  1390 	local print = self.session.print;
       
  1391 	local function onchange(what)
       
  1392 		return function(event)
       
  1393 			local s2s_session = event.session;
       
  1394 			if (s2s_session.from_host == localhost and s2s_session.to_host == remotehost)
       
  1395 				or (s2s_session.to_host == localhost and s2s_session.from_host == remotehost) then
       
  1396 				local dir = available_columns.dir.mapper(s2s_session.direction, s2s_session);
       
  1397 				print(("Session %s (%s%s%s) %s (%gs)"):format(s2s_session.id, localhost, dir, remotehost, what,
       
  1398 					time.now() - time_start));
       
  1399 			end
       
  1400 		end
       
  1401 	end
       
  1402 	local oncreated = onchange("created");
       
  1403 	local onauthenticated = onchange("authenticated");
       
  1404 	local onestablished = onchange("established");
       
  1405 	local ondestroyed = onchange("destroyed");
       
  1406 	module:hook("s2s-created", oncreated, 1);
       
  1407 	module:context(localhost):hook("s2s-authenticated", onauthenticated, 1);
       
  1408 	module:hook("s2sout-established", onestablished, 1);
       
  1409 	module:hook("s2sin-established", onestablished, 1);
       
  1410 	module:hook("s2s-destroyed", ondestroyed, 1);
       
  1411 	return module:context(localhost):send_iq(iq, nil, timeout):finally(function()
       
  1412 		module:unhook("s2s-created", oncreated);
       
  1413 		module:context(localhost):unhook("s2s-authenticated", onauthenticated);
       
  1414 		module:unhook("s2sout-established", onestablished);
       
  1415 		module:unhook("s2sin-established", onestablished);
       
  1416 		module:unhook("s2s-destroyed", ondestroyed);
       
  1417 	end):next(function(pong)
  1391 		return ("pong from %s in %gs"):format(pong.stanza.attr.from, time.now() - time_start);
  1418 		return ("pong from %s in %gs"):format(pong.stanza.attr.from, time.now() - time_start);
  1392 	end);
  1419 	end);
  1393 end
  1420 end
  1394 
  1421 
  1395 def_env.dns = {};
  1422 def_env.dns = {};