I have configured OpenFire within federation with Lync Proxy XMPP.
Unfourtunaly, it was not easy but now, is working
After some issues, the main issue was that the communication only works from OpenFire -> Lync. The reverse (Lync -> Openfire) doesn't worked...
After more than a week of debug, analyzing all the trafic between the servers, we find that the TCP dialback was invalid. It was not shown in the Logs, it was detected only using wireshark.
So, after expering this, looking to help the Troubleshooting for the future users, I would like to suggest to include more debug messages.
The debug messages presented are:
Log:
-------------------------------------------------------------------------------- ---
2013.07.18 11:49:38 org.jivesoftware.openfire.server.ServerDialback - ServerDialback: RS - Connection to AS: *****.pt successful
2013.07.18 11:49:38 org.jivesoftware.openfire.server.ServerDialback - ServerDialback: RS - Asking AS to verify dialback key for id50e6e171
2013.07.18 11:49:38 org.jivesoftware.openfire.server.ServerDialback - ServerDialback: db:verify answer was: <stream:features xmlns:stream="http://etherx.jabber.org/streams"><dialback xmlns="urn:xmpp:features:dialback"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/></stream:features>
2013.07.18 11:49:38 org.jivesoftware.openfire.server.ServerDialback - ServerDialback: RS - Closing connection to Authoritative Server: *****.pt
-------------------------------------------------------------------------------- ---
However, the follow XMPP message was sent to the remote server:
-------------------------------------------------------------------------------- ---
<db:result from="xxxxxxx.pt" to="*****.pt" type="invalid"/>
-------------------------------------------------------------------------------- ---
I would like to suggest to include the following line to help the Troubleshooting:
Class: ServerDialback.java
563 boolean valid = verifyKey(key, streamID.toString(), recipient, hostname, socket);
564
565 Log.debug("ServerDialback: RS - Sending key verification result to OS: " + hostname);
566 sb = new StringBuilder();
567 sb.append("<db:result");
568 sb.append(" from=\"").append(recipient).append("\"");
569 sb.append(" to=\"").append(hostname).append("\"");
570 sb.append(" type=\"");
571 sb.append(valid ? "valid" : "invalid");
572 sb.append("\"/>");
573 connection.deliverRawText(sb.toString());
SUGGESTED NEW LINE: | Log.debug( valid ? "ServerDialback: RS - Verification result is Valid" : "ServerDialback: RS - Verification result is invalid - Check Dialback Verification!"); |
Thank you,
Vasco Silva