|
1 function testers.ejabberd() |
|
2 if (test(q_invalid_xml, [=[ id=["']none['"]]=]) or test(q_invalid_xml, " id='%d+'")) |
|
3 and (not test(q_invalid_xml, literal " xml:lang=")) then |
|
4 |
|
5 server_name = "ejabberd"; |
|
6 |
|
7 -- Facebook curiosity |
|
8 if test(q_invalid_xml, " id=(.)") == '"' then |
|
9 server_comment "Appears to be Facebook's variant of ejabberd"; |
|
10 end |
|
11 |
|
12 local hostname = test(q_invalid_xml, [=[from=["']([^"']+)]=]); |
|
13 if not hostname then |
|
14 server_comment "The server did not return a hostname, odd."; |
|
15 else |
|
16 local stream_open = [[<stream:stream xmlns=']]..default_namespace..[[' |
|
17 xmlns:stream='http://etherx.jabber.org/streams' version='1.0' id='abc' to=']]..hostname..[['>]]; |
|
18 |
|
19 if not test(stream_open.."<message/>", ":features>$") then -- Oops, not ejabberd |
|
20 debug("Oops, not ejabberd (please report):", test(stream_open.."<message/>", ".*")); |
|
21 server_name = nil; |
|
22 return; |
|
23 end |
|
24 |
|
25 if test(q_invalid_xml, " id='%d+'") then |
|
26 server_min_version = "2.1.x"; |
|
27 elseif test(stream_open, literal "<compression ") then -- Only in 2.x |
|
28 server_min_version = "2.0.x"; |
|
29 elseif test(stream_open, "") then |
|
30 server_min_version = "1.x.x"; |
|
31 else |
|
32 server_comment "The server did not reply when we tried to open a stream"; |
|
33 end |
|
34 |
|
35 end |
|
36 end |
|
37 end |
|
38 |