Smack

org.jivesoftware.smackx.filetransfer
Class Socks5TransferNegotiator

java.lang.Object
  extended by org.jivesoftware.smackx.filetransfer.StreamNegotiator
      extended by org.jivesoftware.smackx.filetransfer.Socks5TransferNegotiator

public class Socks5TransferNegotiator
extends StreamNegotiator

A SOCKS5 bytestream is negotiated partly over the XMPP XML stream and partly over a seperate socket. The actual transfer though takes place over a seperatly created socket.

A SOCKS5 file transfer generally has three parites, the initiator, the target, and the stream host. The stream host is a specialized SOCKS5 proxy setup on the server, or, the Initiator can act as the Stream Host if the proxy is not available.

The advantage of having a seperate proxy over directly connecting to eachother is if the Initator and the Target are not on the same LAN and are operating behind NAT, the proxy allows for a common location for both parties to connect to and transfer the file.

Smack will attempt to automatically discover any proxies present on your server. If any are detected they will be forwarded to any user attempting to recieve files from you.

Author:
Alexander Wenckus
See Also:
JEP-0065: SOCKS5 Bytestreams

Field Summary
static boolean isAllowLocalProxyHost
           
protected static String NAMESPACE
           
 
Constructor Summary
Socks5TransferNegotiator(XMPPConnection connection)
           
 
Method Summary
 void cancel()
           
 void cleanup()
          Cleanup any and all resources associated with this negotiator.
 InputStream createIncomingStream(StreamInitiation initiation)
          This method handles the file stream download negotiation process.
 OutputStream createOutgoingStream(String streamID, String initiator, String target)
          This method handles the file upload stream negotiation process.
 PacketFilter getInitiationPacketFilter(String from, String sessionID)
          Returns the packet filter that will return the initiation packet for the appropriate stream initiation.
 String[] getNamespaces()
          Returns the XMPP namespace reserved for this particular type of file transfer.
 
Methods inherited from class org.jivesoftware.smackx.filetransfer.StreamNegotiator
createError, createInitiationAccept
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NAMESPACE

protected static final String NAMESPACE
See Also:
Constant Field Values

isAllowLocalProxyHost

public static boolean isAllowLocalProxyHost
Constructor Detail

Socks5TransferNegotiator

public Socks5TransferNegotiator(XMPPConnection connection)
Method Detail

getInitiationPacketFilter

public PacketFilter getInitiationPacketFilter(String from,
                                              String sessionID)
Description copied from class: StreamNegotiator
Returns the packet filter that will return the initiation packet for the appropriate stream initiation.

Specified by:
getInitiationPacketFilter in class StreamNegotiator
Parameters:
from - The initiatior of the file transfer.
sessionID - The stream ID related to the transfer.
Returns:
The PacketFilter that will return the packet relatable to the stream initiation.

createIncomingStream

public InputStream createIncomingStream(StreamInitiation initiation)
                                 throws XMPPException
Description copied from class: StreamNegotiator
This method handles the file stream download negotiation process. The appropriate stream negotiator's initiate incoming stream is called after an appropriate file transfer method is selected. The manager will respond to the initatior with the selected means of transfer, then it will handle any negotation specific to the particular transfer method. This method returns the InputStream, ready to transfer the file.

Specified by:
createIncomingStream in class StreamNegotiator
Parameters:
initiation - The initation that triggered this download.
Returns:
After the negotation process is complete, the InputStream to write a file to is returned.
Throws:
XMPPException - If an error occurs during this process an XMPPException is thrown.

createOutgoingStream

public OutputStream createOutgoingStream(String streamID,
                                         String initiator,
                                         String target)
                                  throws XMPPException
Description copied from class: StreamNegotiator
This method handles the file upload stream negotiation process. The particular stream negotiator is determined during the file transfer negotiation process. This method returns the OutputStream to transmit the file to the remote user.

Specified by:
createOutgoingStream in class StreamNegotiator
Parameters:
streamID - The streamID that uniquely identifies the file transfer.
initiator - The fully-qualified JID of the initiator of the file transfer.
target - The fully-qualified JID of the target or reciever of the file transfer.
Returns:
The negotiated stream ready for data.
Throws:
XMPPException - If an error occurs during the negotiation process an exception will be thrown.

getNamespaces

public String[] getNamespaces()
Description copied from class: StreamNegotiator
Returns the XMPP namespace reserved for this particular type of file transfer.

Specified by:
getNamespaces in class StreamNegotiator
Returns:
Returns the XMPP namespace reserved for this particular type of file transfer.

cleanup

public void cleanup()
Description copied from class: StreamNegotiator
Cleanup any and all resources associated with this negotiator.

Specified by:
cleanup in class StreamNegotiator

cancel

public void cancel()

Smack

Copyright © 2003-2007 Jive Software.