Class Socks5ClientConnector
- java.lang.Object
-
- org.eclipse.jgit.internal.transport.sshd.proxy.AbstractClientProxyConnector
-
- org.eclipse.jgit.internal.transport.sshd.proxy.Socks5ClientConnector
-
- All Implemented Interfaces:
org.apache.sshd.client.session.ClientProxyConnector
,StatefulProxyConnector
public class Socks5ClientConnector extends AbstractClientProxyConnector
AAbstractClientProxyConnector
to connect through a SOCKS5 proxy.- See Also:
- RFC 1928
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
Socks5ClientConnector.ProtocolState
private static class
Socks5ClientConnector.SocksAuthenticationMethod
Authentication methods for SOCKS5.private class
Socks5ClientConnector.SocksBasicAuthentication
private class
Socks5ClientConnector.SocksGssApiAuthentication
-
Field Summary
Fields Modifier and Type Field Description private byte[]
authenticationProposals
private AuthenticationHandler<org.apache.sshd.common.util.buffer.Buffer,org.apache.sshd.common.util.buffer.Buffer>
authenticator
private org.ietf.jgss.GSSContext
context
private static byte
SOCKS_ADDRESS_FQDN
private static byte
SOCKS_ADDRESS_IPv4
private static byte
SOCKS_ADDRESS_IPv6
private static byte
SOCKS_CMD_CONNECT
private static byte
SOCKS_REPLY_ADDRESS_UNSUPPORTED
private static byte
SOCKS_REPLY_COMMAND_UNSUPPORTED
private static byte
SOCKS_REPLY_CONNECTION_REFUSED
private static byte
SOCKS_REPLY_FAILURE
private static byte
SOCKS_REPLY_FORBIDDEN
private static byte
SOCKS_REPLY_HOST_UNREACHABLE
private static byte
SOCKS_REPLY_NETWORK_UNREACHABLE
private static byte
SOCKS_REPLY_SUCCESS
private static byte
SOCKS_REPLY_TTL_EXPIRED
private static byte
SOCKS_VERSION_5
private Socks5ClientConnector.ProtocolState
state
-
Fields inherited from class org.eclipse.jgit.internal.transport.sshd.proxy.AbstractClientProxyConnector
proxyAddress, proxyPassword, proxyUser, remoteAddress
-
Fields inherited from interface org.eclipse.jgit.internal.transport.sshd.proxy.StatefulProxyConnector
TIMEOUT_PROPERTY
-
-
Constructor Summary
Constructors Constructor Description Socks5ClientConnector(java.net.InetSocketAddress proxyAddress, java.net.InetSocketAddress remoteAddress)
Creates a newSocks5ClientConnector
.Socks5ClientConnector(java.net.InetSocketAddress proxyAddress, java.net.InetSocketAddress remoteAddress, java.lang.String proxyUser, char[] proxyPassword)
Creates a newSocks5ClientConnector
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
authStep(org.apache.sshd.common.io.IoSession session, org.apache.sshd.common.util.buffer.Buffer input)
private void
close()
private void
doGssApiAuth(org.apache.sshd.common.io.IoSession session)
private void
doPasswordAuth(org.apache.sshd.common.io.IoSession session)
private void
establishConnection(org.apache.sshd.common.util.buffer.Buffer data)
private byte[]
getAuthenticationProposals()
private Socks5ClientConnector.SocksAuthenticationMethod
getAuthMethod(byte value)
private static org.ietf.jgss.GSSContext
getGSSContext(java.net.InetSocketAddress address)
private static byte[]
getRawAddress(java.net.InetSocketAddress address)
void
messageReceived(org.apache.sshd.common.io.IoSession session, org.apache.sshd.common.util.Readable buffer)
Handle a received message.void
sendClientProxyMetadata(org.apache.sshd.client.session.ClientSession sshSession)
private void
sendConnectInfo(org.apache.sshd.common.io.IoSession session)
private void
startAuth(org.apache.sshd.common.io.IoSession session)
private void
versionCheck(byte version)
-
Methods inherited from class org.eclipse.jgit.internal.transport.sshd.proxy.AbstractClientProxyConnector
adjustTimeout, clearPassword, getTimeout, init, runWhenDone, setDone
-
-
-
-
Field Detail
-
SOCKS_VERSION_5
private static final byte SOCKS_VERSION_5
- See Also:
- Constant Field Values
-
SOCKS_CMD_CONNECT
private static final byte SOCKS_CMD_CONNECT
- See Also:
- Constant Field Values
-
SOCKS_ADDRESS_IPv4
private static final byte SOCKS_ADDRESS_IPv4
- See Also:
- Constant Field Values
-
SOCKS_ADDRESS_FQDN
private static final byte SOCKS_ADDRESS_FQDN
- See Also:
- Constant Field Values
-
SOCKS_ADDRESS_IPv6
private static final byte SOCKS_ADDRESS_IPv6
- See Also:
- Constant Field Values
-
SOCKS_REPLY_SUCCESS
private static final byte SOCKS_REPLY_SUCCESS
- See Also:
- Constant Field Values
-
SOCKS_REPLY_FAILURE
private static final byte SOCKS_REPLY_FAILURE
- See Also:
- Constant Field Values
-
SOCKS_REPLY_FORBIDDEN
private static final byte SOCKS_REPLY_FORBIDDEN
- See Also:
- Constant Field Values
-
SOCKS_REPLY_NETWORK_UNREACHABLE
private static final byte SOCKS_REPLY_NETWORK_UNREACHABLE
- See Also:
- Constant Field Values
-
SOCKS_REPLY_HOST_UNREACHABLE
private static final byte SOCKS_REPLY_HOST_UNREACHABLE
- See Also:
- Constant Field Values
-
SOCKS_REPLY_CONNECTION_REFUSED
private static final byte SOCKS_REPLY_CONNECTION_REFUSED
- See Also:
- Constant Field Values
-
SOCKS_REPLY_TTL_EXPIRED
private static final byte SOCKS_REPLY_TTL_EXPIRED
- See Also:
- Constant Field Values
-
SOCKS_REPLY_COMMAND_UNSUPPORTED
private static final byte SOCKS_REPLY_COMMAND_UNSUPPORTED
- See Also:
- Constant Field Values
-
SOCKS_REPLY_ADDRESS_UNSUPPORTED
private static final byte SOCKS_REPLY_ADDRESS_UNSUPPORTED
- See Also:
- Constant Field Values
-
state
private Socks5ClientConnector.ProtocolState state
-
authenticator
private AuthenticationHandler<org.apache.sshd.common.util.buffer.Buffer,org.apache.sshd.common.util.buffer.Buffer> authenticator
-
context
private org.ietf.jgss.GSSContext context
-
authenticationProposals
private byte[] authenticationProposals
-
-
Constructor Detail
-
Socks5ClientConnector
public Socks5ClientConnector(@NonNull java.net.InetSocketAddress proxyAddress, @NonNull java.net.InetSocketAddress remoteAddress)
Creates a newSocks5ClientConnector
. The connector supports anonymous connections as well as username-password or Kerberos5 (GSS-API) authentication.- Parameters:
proxyAddress
- of the proxy server we're connecting toremoteAddress
- of the target server to connect to
-
Socks5ClientConnector
public Socks5ClientConnector(@NonNull java.net.InetSocketAddress proxyAddress, @NonNull java.net.InetSocketAddress remoteAddress, java.lang.String proxyUser, char[] proxyPassword)
Creates a newSocks5ClientConnector
. The connector supports anonymous connections as well as username-password or Kerberos5 (GSS-API) authentication.- Parameters:
proxyAddress
- of the proxy server we're connecting toremoteAddress
- of the target server to connect toproxyUser
- to authenticate at the proxy withproxyPassword
- to authenticate at the proxy with
-
-
Method Detail
-
sendClientProxyMetadata
public void sendClientProxyMetadata(org.apache.sshd.client.session.ClientSession sshSession) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getAuthenticationProposals
private byte[] getAuthenticationProposals()
-
sendConnectInfo
private void sendConnectInfo(org.apache.sshd.common.io.IoSession session) throws java.lang.Exception
- Throws:
java.lang.Exception
-
doPasswordAuth
private void doPasswordAuth(org.apache.sshd.common.io.IoSession session) throws java.lang.Exception
- Throws:
java.lang.Exception
-
doGssApiAuth
private void doGssApiAuth(org.apache.sshd.common.io.IoSession session) throws java.lang.Exception
- Throws:
java.lang.Exception
-
close
private void close()
-
startAuth
private void startAuth(org.apache.sshd.common.io.IoSession session) throws java.lang.Exception
- Throws:
java.lang.Exception
-
authStep
private void authStep(org.apache.sshd.common.io.IoSession session, org.apache.sshd.common.util.buffer.Buffer input) throws java.lang.Exception
- Throws:
java.lang.Exception
-
establishConnection
private void establishConnection(org.apache.sshd.common.util.buffer.Buffer data) throws java.lang.Exception
- Throws:
java.lang.Exception
-
messageReceived
public void messageReceived(org.apache.sshd.common.io.IoSession session, org.apache.sshd.common.util.Readable buffer) throws java.lang.Exception
Description copied from interface:StatefulProxyConnector
Handle a received message.- Parameters:
session
- to use for writing databuffer
- received data- Throws:
java.lang.Exception
- if data cannot be read, or the connection attempt fails
-
versionCheck
private void versionCheck(byte version) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getAuthMethod
private Socks5ClientConnector.SocksAuthenticationMethod getAuthMethod(byte value)
-
getRawAddress
private static byte[] getRawAddress(@NonNull java.net.InetSocketAddress address)
-
getGSSContext
private static org.ietf.jgss.GSSContext getGSSContext(@NonNull java.net.InetSocketAddress address)
-
-