Mercurial > prosody-hg
comparison plugins/mod_s2s/mod_s2s.lua @ 5978:d21ea6001bba
Merge 0.9->0.10
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 12 Jan 2014 06:19:37 -0500 |
| parents | e327f2d4e09f 0d219631d47b |
| children | e626ee2fe106 |
comparison
equal
deleted
inserted
replaced
| 5954:6dc73be95213 | 5978:d21ea6001bba |
|---|---|
| 364 local features = st.stanza("stream:features"); | 364 local features = st.stanza("stream:features"); |
| 365 | 365 |
| 366 if to then | 366 if to then |
| 367 hosts[to].events.fire_event("s2s-stream-features", { origin = session, features = features }); | 367 hosts[to].events.fire_event("s2s-stream-features", { origin = session, features = features }); |
| 368 else | 368 else |
| 369 (session.log or log)("warn", "No 'to' on stream header from %s means we can't offer any features", from or "unknown host"); | 369 (session.log or log)("warn", "No 'to' on stream header from %s means we can't offer any features", from or session.ip or "unknown host"); |
| 370 end | 370 end |
| 371 | 371 |
| 372 log("debug", "Sending stream features: %s", tostring(features)); | 372 log("debug", "Sending stream features: %s", tostring(features)); |
| 373 send(features); | 373 send(features); |
| 374 end | 374 end |
| 465 session:open_stream(session.from_host, session.to_host); | 465 session:open_stream(session.from_host, session.to_host); |
| 466 end | 466 end |
| 467 end | 467 end |
| 468 if reason then -- nil == no err, initiated by us, false == initiated by remote | 468 if reason then -- nil == no err, initiated by us, false == initiated by remote |
| 469 if type(reason) == "string" then -- assume stream error | 469 if type(reason) == "string" then -- assume stream error |
| 470 log("debug", "Disconnecting %s[%s], <stream:error> is: %s", session.host or "(unknown host)", session.type, reason); | 470 log("debug", "Disconnecting %s[%s], <stream:error> is: %s", session.host or session.ip or "(unknown host)", session.type, reason); |
| 471 session.sends2s(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); | 471 session.sends2s(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' })); |
| 472 elseif type(reason) == "table" then | 472 elseif type(reason) == "table" then |
| 473 if reason.condition then | 473 if reason.condition then |
| 474 local stanza = st.stanza("stream:error"):tag(reason.condition, stream_xmlns_attr):up(); | 474 local stanza = st.stanza("stream:error"):tag(reason.condition, stream_xmlns_attr):up(); |
| 475 if reason.text then | 475 if reason.text then |
| 476 stanza:tag("text", stream_xmlns_attr):text(reason.text):up(); | 476 stanza:tag("text", stream_xmlns_attr):text(reason.text):up(); |
| 477 end | 477 end |
| 478 if reason.extra then | 478 if reason.extra then |
| 479 stanza:add_child(reason.extra); | 479 stanza:add_child(reason.extra); |
| 480 end | 480 end |
| 481 log("debug", "Disconnecting %s[%s], <stream:error> is: %s", session.host or "(unknown host)", session.type, tostring(stanza)); | 481 log("debug", "Disconnecting %s[%s], <stream:error> is: %s", session.host or session.ip or "(unknown host)", session.type, tostring(stanza)); |
| 482 session.sends2s(stanza); | 482 session.sends2s(stanza); |
| 483 elseif reason.name then -- a stanza | 483 elseif reason.name then -- a stanza |
| 484 log("debug", "Disconnecting %s->%s[%s], <stream:error> is: %s", session.from_host or "(unknown host)", session.to_host or "(unknown host)", session.type, tostring(reason)); | 484 log("debug", "Disconnecting %s->%s[%s], <stream:error> is: %s", session.from_host or "(unknown host)", session.to_host or "(unknown host)", session.type, tostring(reason)); |
| 485 session.sends2s(reason); | 485 session.sends2s(reason); |
| 486 end | 486 end |
| 658 elseif must_secure and insecure_domains[host] then | 658 elseif must_secure and insecure_domains[host] then |
| 659 must_secure = false; | 659 must_secure = false; |
| 660 end | 660 end |
| 661 | 661 |
| 662 if must_secure and (session.cert_chain_status ~= "valid" or session.cert_identity_status ~= "valid") then | 662 if must_secure and (session.cert_chain_status ~= "valid" or session.cert_identity_status ~= "valid") then |
| 663 module:log("warn", "Forbidding insecure connection to/from %s", host); | 663 module:log("warn", "Forbidding insecure connection to/from %s", host or session.ip or "(unknown host)"); |
| 664 if session.direction == "incoming" then | 664 if session.direction == "incoming" then |
| 665 session:close({ condition = "not-authorized", text = "Your server's certificate is invalid, expired, or not trusted by "..session.to_host }); | 665 session:close({ condition = "not-authorized", text = "Your server's certificate is invalid, expired, or not trusted by "..session.to_host }); |
| 666 else -- Close outgoing connections without warning | 666 else -- Close outgoing connections without warning |
| 667 session:close(false); | 667 session:close(false); |
| 668 end | 668 end |
