--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/servers/ejabberd.lua Thu Feb 18 16:02:11 2010 +0000 @@ -0,0 +1,38 @@ +function testers.ejabberd() + if (test(q_invalid_xml, [=[ id=["']none['"]]=]) or test(q_invalid_xml, " id='%d+'")) + and (not test(q_invalid_xml, literal " xml:lang=")) then + + server_name = "ejabberd"; + + -- Facebook curiosity + if test(q_invalid_xml, " id=(.)") == '"' then + server_comment "Appears to be Facebook's variant of ejabberd"; + end + + local hostname = test(q_invalid_xml, [=[from=["']([^"']+)]=]); + if not hostname then + server_comment "The server did not return a hostname, odd."; + else + local stream_open = [[<stream:stream xmlns=']]..default_namespace..[[' + xmlns:stream='http://etherx.jabber.org/streams' version='1.0' id='abc' to=']]..hostname..[['>]]; + + if not test(stream_open.."<message/>", ":features>$") then -- Oops, not ejabberd + debug("Oops, not ejabberd (please report):", test(stream_open.."<message/>", ".*")); + server_name = nil; + return; + end + + if test(q_invalid_xml, " id='%d+'") then + server_min_version = "2.1.x"; + elseif test(stream_open, literal "<compression ") then -- Only in 2.x + server_min_version = "2.0.x"; + elseif test(stream_open, "") then + server_min_version = "1.x.x"; + else + server_comment "The server did not reply when we tried to open a stream"; + end + + end + end +end +