aboutsummaryrefslogtreecommitdiff
path: root/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java')
-rw-r--r--juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java37
1 files changed, 25 insertions, 12 deletions
diff --git a/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java b/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java
index 1cd914c9..7bb02fa5 100644
--- a/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java
+++ b/juick-xmpp/src/main/java/com/juick/components/s2s/ConnectionIn.java
@@ -2,17 +2,20 @@ package com.juick.components.s2s;
import com.juick.components.XMPPServer;
import com.juick.xmpp.Iq;
-import com.juick.xmpp.Message;
-import com.juick.xmpp.Presence;
import com.juick.xmpp.extensions.StreamError;
import com.juick.xmpp.utils.XmlUtils;
import org.xmlpull.v1.XmlPullParser;
import rocks.xmpp.addr.Jid;
+import rocks.xmpp.core.session.XmppSessionConfiguration;
+import rocks.xmpp.core.stanza.model.Stanza;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSocket;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
import java.io.EOFException;
import java.io.IOException;
+import java.io.StringReader;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
@@ -27,6 +30,7 @@ public class ConnectionIn extends Connection implements Runnable {
final public List<String> from = new ArrayList<>();
public long tsRemoteData = 0;
public long packetsRemote = 0;
+ XmppSessionConfiguration configuration;
public ConnectionIn(XMPPServer xmpp, Socket socket) throws Exception {
super(xmpp);
@@ -34,6 +38,16 @@ public class ConnectionIn extends Connection implements Runnable {
restartParser();
}
+ protected Stanza parse(String xml) {
+ try {
+ Unmarshaller unmarshaller = xmpp.getSession().createUnmarshaller();
+ return (Stanza)unmarshaller.unmarshal(new StringReader(xml));
+ } catch (JAXBException e) {
+ logger.error("JAXB exception", e);
+ }
+ return null;
+ }
+
@Override
public void run() {
try {
@@ -103,23 +117,22 @@ public class ConnectionIn extends Connection implements Runnable {
logger.warn("stream from {} {} dialback verify invalid", vfrom, streamID);
}
} else if (tag.equals("presence") && checkFromTo(parser)) {
- Presence p = Presence.parse(parser, null);
- logger.info("stream {}: {}", streamID, p);
- xmpp.onStanzaReceived("presence", p);
+ String xml = XmlUtils.parseToString(parser, false);
+ logger.info("stream {} presence: {}", streamID, xml);
+ xmpp.onStanzaReceived(parse(xml));
} else if (tag.equals("message") && checkFromTo(parser)) {
updateTsRemoteData();
- Message msg = Message.parse(parser, xmpp.childParsers);
- if (msg != null && (msg.type == null || !msg.type.equals(Message.Type.error))) {
- logger.info("stream {}: {}", streamID, msg);
- xmpp.onStanzaReceived("message", msg);
- }
+ String xml = XmlUtils.parseToString(parser, false);
+ logger.info("stream {} message: {}", streamID, xml);
+ xmpp.onStanzaReceived(parse(xml));
+
} else if (tag.equals("iq") && checkFromTo(parser)) {
updateTsRemoteData();
String type = parser.getAttributeValue(null, "type");
- String xml = XmlUtils.parseToString(parser, true);
+ String xml = XmlUtils.parseToString(parser, false);
if (type == null || !type.equals(Iq.Type.error)) {
logger.info("stream {}: {}", streamID, xml);
- xmpp.getRouter().sendStanza(xml);
+ xmpp.getRouter().sendStanza(parse(xml));
}
} else if (sc != null && !isSecured() && tag.equals("starttls")) {
logger.info("stream {} securing", streamID);