From 4d1142233547ebd98c09a8074d5983ae90a21406 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sat, 10 Jun 2017 21:45:00 +0200 Subject: [PATCH] Temp --- .../JingleFileTransferManager.java | 12 +-- ...nitiatorOutgoingFileTransferInitiated.java | 3 +- ...ResponderIncomingFileTransferAccepted.java | 7 +- .../jingle_ibb/JingleIBBTransportHandler.java | 13 ++-- .../jingle_s5b/JingleS5BTransportHandler.java | 74 +++++++++++++++---- .../smackx/jingle/JingleManager.java | 6 +- .../smackx/jingle/JingleTransportHandler.java | 5 +- .../smackx/jingle/element/Jingle.java | 4 +- .../smackx/jingle/JingleTest.java | 2 +- 9 files changed, 84 insertions(+), 42 deletions(-) diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java index c8566b4a6..0e67e62c1 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/JingleFileTransferManager.java @@ -141,16 +141,16 @@ public final class JingleFileTransferManager extends Manager implements JingleHa Jingle initiate = sessionInitiate(recipient, description, transport); JingleManager.FullJidAndSessionId fullJidAndSessionId = - new JingleManager.FullJidAndSessionId(recipient, initiate.getSid()); + new JingleManager.FullJidAndSessionId(recipient, initiate.getSessionId()); InitiatorOutgoingFileTransferInitiated sessionHandler = new InitiatorOutgoingFileTransferInitiated(this, fullJidAndSessionId, file); - jingleManager.registerJingleSessionHandler(recipient, initiate.getSid(), sessionHandler); + jingleManager.registerJingleSessionHandler(recipient, initiate.getSessionId(), sessionHandler); JingleTransportHandler transportHandler = tm.createJingleTransportHandler(sessionHandler); connection().sendStanza(initiate); - transportHandler.establishOutgoingSession(fullJidAndSessionId, transport, new JingleTransportEstablishedCallback() { + transportHandler.establishOutgoingSession(initiate, new JingleTransportEstablishedCallback() { @Override public void onSessionEstablished(BytestreamSession bytestreamSession) { try { @@ -192,7 +192,7 @@ public final class JingleFileTransferManager extends Manager implements JingleHa connection().sendStanza(sessionAccept(jingle)); ResponderIncomingFileTransferAccepted responded = new ResponderIncomingFileTransferAccepted( JingleFileTransferManager.this, jingle, target); - jingleManager.registerJingleSessionHandler(jingle.getFrom().asFullJidIfPossible(), jingle.getSid(), + jingleManager.registerJingleSessionHandler(jingle.getFrom().asFullJidIfPossible(), jingle.getSessionId(), responded); } @@ -230,7 +230,7 @@ public final class JingleFileTransferManager extends Manager implements JingleHa JingleContent content = request.getContents().get(0); Jingle.Builder jb = Jingle.getBuilder(); - jb.setSessionId(request.getSid()) + jb.setSessionId(request.getSessionId()) .setAction(JingleAction.session_accept) .setResponder(connection().getUser()); @@ -259,7 +259,7 @@ public final class JingleFileTransferManager extends Manager implements JingleHa jb.setResponder(connection().getUser()) .setAction(JingleAction.session_terminate) .setReason(JingleReason.Reason.decline) - .setSessionId(request.getSid()); + .setSessionId(request.getSessionId()); Jingle jingle = jb.build(); jingle.setTo(request.getFrom()); jingle.setFrom(connection().getUser()); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/InitiatorOutgoingFileTransferInitiated.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/InitiatorOutgoingFileTransferInitiated.java index a12204de3..f8baba574 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/InitiatorOutgoingFileTransferInitiated.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/InitiatorOutgoingFileTransferInitiated.java @@ -29,6 +29,7 @@ import org.jivesoftware.smackx.jingle.AbstractJingleTransportManager; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleSessionHandler; import org.jivesoftware.smackx.jingle.JingleTransportEstablishedCallback; +import org.jivesoftware.smackx.jingle.JingleTransportHandler; import org.jivesoftware.smackx.jingle.JingleTransportManager; import org.jivesoftware.smackx.jingle.element.Jingle; import org.jivesoftware.smackx.jingle.element.JingleContentTransport; @@ -67,7 +68,7 @@ public class InitiatorOutgoingFileTransferInitiated implements JingleSessionHand switch (jingle.getAction()) { case session_accept: - bm.createJingleTransportHandler(this).establishOutgoingSession(fullJidAndSessionId, transport, new JingleTransportEstablishedCallback() { + bm.createJingleTransportHandler(this).establishOutgoingSession(jingle, new JingleTransportEstablishedCallback() { @Override public void onSessionEstablished(final BytestreamSession bytestreamSession) { new Runnable() { diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/ResponderIncomingFileTransferAccepted.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/ResponderIncomingFileTransferAccepted.java index 48e47cd84..96a9f9142 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/ResponderIncomingFileTransferAccepted.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/handler/ResponderIncomingFileTransferAccepted.java @@ -24,7 +24,6 @@ import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.jingle.AbstractJingleTransportManager; -import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleSessionHandler; import org.jivesoftware.smackx.jingle.JingleTransportEstablishedCallback; import org.jivesoftware.smackx.jingle.JingleTransportManager; @@ -60,12 +59,10 @@ public class ResponderIncomingFileTransferAccepted implements JingleSessionHandl e.printStackTrace(); } this.initiator = initiate.getInitiator(); - this.sessionId = initiate.getSid(); + this.sessionId = initiate.getSessionId(); transportManager.createJingleTransportHandler(this).establishIncomingSession( - new JingleManager.FullJidAndSessionId(initiate.getFrom().asFullJidIfPossible(), initiate.getSid()), - initiate.getContents().get(0).getJingleTransports().get(0), - new JingleTransportEstablishedCallback() { + initiate, new JingleTransportEstablishedCallback() { @Override public void onSessionEstablished(BytestreamSession bytestreamSession) { manager.receiveFile(initiate, bytestreamSession, target); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_ibb/JingleIBBTransportHandler.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_ibb/JingleIBBTransportHandler.java index 3468130e5..628dfbe96 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_ibb/JingleIBBTransportHandler.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_ibb/JingleIBBTransportHandler.java @@ -10,11 +10,10 @@ import org.jivesoftware.smackx.bytestreams.BytestreamRequest; import org.jivesoftware.smackx.bytestreams.BytestreamSession; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager; import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession; -import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleSessionHandler; import org.jivesoftware.smackx.jingle.JingleTransportEstablishedCallback; import org.jivesoftware.smackx.jingle.JingleTransportHandler; -import org.jivesoftware.smackx.jingle.element.JingleContentTransport; +import org.jivesoftware.smackx.jingle.element.Jingle; import org.jivesoftware.smackx.jingle.exception.JingleTransportFailureException; import org.jivesoftware.smackx.jingle_ibb.element.JingleIBBTransport; @@ -30,12 +29,12 @@ public class JingleIBBTransportHandler implements JingleTransportHandler sessionHandler; + private JingleS5BTransportCandidate receivedCandidateUsed = null; + + private Socket connectedSocket = null; + public JingleS5BTransportHandler(JingleSessionHandler sessionHandler) { this.sessionHandler = new WeakReference<>(sessionHandler); } @Override - public void establishOutgoingSession(JingleManager.FullJidAndSessionId target, JingleContentTransport hopefullyS5BTransport, JingleTransportEstablishedCallback callback) { + public void establishOutgoingSession(Jingle request, JingleTransportEstablishedCallback callback) { + JingleContent content = request.getContents().get(0); + JingleContentTransport hopefullyS5BTransport = content.getJingleTransports().get(0); + if (!hopefullyS5BTransport.getNamespace().equals(JingleS5BTransport.NAMESPACE_V1)) { throw new IllegalArgumentException("Transport must be a JingleS5BTransport."); } + JingleS5BTransport transport = (JingleS5BTransport) hopefullyS5BTransport; + Socks5Proxy.getSocks5Proxy().addLocalAddress(Socks5Utils.createDigest( + request.getSessionId(), getConnection().getUser().asFullJidIfPossible(), request.getResponder())); - ArrayList streamHosts = new ArrayList<>(); + JingleS5BTransportCandidate usedCandidate = null; for (JingleContentTransportCandidate c : transport.getCandidates()) { - streamHosts.add(((JingleS5BTransportCandidate) c).getStreamHost()); - } - - for (Bytestream.StreamHost streamHost : streamHosts) { + usedCandidate = (JingleS5BTransportCandidate) c; + Bytestream.StreamHost streamHost = usedCandidate.getStreamHost(); String address = streamHost.getAddress() + ":" + streamHost.getPort(); LOGGER.log(Level.INFO, "Connect outwards to " + address); @@ -59,23 +72,52 @@ public class JingleS5BTransportHandler implements JingleTransportHandler 1) { @@ -95,7 +95,7 @@ public final class JingleManager extends Manager { //Unsupported Application Jingle.Builder builder = Jingle.getBuilder(); builder.setAction(JingleAction.session_terminate) - .setSessionId(jingle.getSid()) + .setSessionId(jingle.getSessionId()) .setReason(JingleReason.Reason.unsupported_applications); Jingle response = builder.build(); response.setTo(jingle.getFrom()); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportHandler.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportHandler.java index cf30a0266..2a8d0d72b 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportHandler.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/JingleTransportHandler.java @@ -1,6 +1,7 @@ package org.jivesoftware.smackx.jingle; import org.jivesoftware.smack.XMPPConnection; +import org.jivesoftware.smackx.jingle.element.Jingle; import org.jivesoftware.smackx.jingle.element.JingleContentTransport; /** @@ -8,9 +9,9 @@ import org.jivesoftware.smackx.jingle.element.JingleContentTransport; */ public interface JingleTransportHandler { - void establishOutgoingSession(JingleManager.FullJidAndSessionId target, JingleContentTransport transport, JingleTransportEstablishedCallback callback); + void establishOutgoingSession(Jingle request, JingleTransportEstablishedCallback callback); - void establishIncomingSession(JingleManager.FullJidAndSessionId target, JingleContentTransport transport, JingleTransportEstablishedCallback callback); + void establishIncomingSession(Jingle request, JingleTransportEstablishedCallback callback); XMPPConnection getConnection(); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/Jingle.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/Jingle.java index 44e60b81c..54fbeae31 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/Jingle.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/Jingle.java @@ -108,7 +108,7 @@ public final class Jingle extends IQ { * * @return Returns the session ID related to the session. */ - public String getSid() { + public String getSessionId() { return sessionId; } @@ -135,7 +135,7 @@ public final class Jingle extends IQ { xml.optAttribute(INITIATOR_ATTRIBUTE_NAME, getInitiator()); xml.optAttribute(RESPONDER_ATTRIBUTE_NAME, getResponder()); xml.optAttribute(ACTION_ATTRIBUTE_NAME, getAction()); - xml.optAttribute(SESSION_ID_ATTRIBUTE_NAME, getSid()); + xml.optAttribute(SESSION_ID_ATTRIBUTE_NAME, getSessionId()); xml.rightAngleBracket(); xml.optElement(reason); diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java index 21ba31804..152409ddc 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java @@ -66,7 +66,7 @@ public class JingleTest extends SmackTestSuite { assertEquals(romeo, jingle.getInitiator()); assertEquals(juliet, jingle.getResponder()); assertEquals(jingle.getAction(), JingleAction.session_initiate); - assertEquals(sessionId, jingle.getSid()); + assertEquals(sessionId, jingle.getSessionId()); String xml = "