Socks4ProxyHandler Class — netty Architecture
Architecture documentation for the Socks4ProxyHandler class in Socks4ProxyHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD ca809e55_f724_dc71_a437_a2136b99321a["Socks4ProxyHandler"] 11cd5ef0_30b2_9280_f594_629fb7a10b1e["Socks4ProxyHandler.java"] ca809e55_f724_dc71_a437_a2136b99321a -->|defined in| 11cd5ef0_30b2_9280_f594_629fb7a10b1e 9694ec5a_ba37_00d0_cdb7_4d6686f34e88["Socks4ProxyHandler()"] ca809e55_f724_dc71_a437_a2136b99321a -->|method| 9694ec5a_ba37_00d0_cdb7_4d6686f34e88 d67543cd_1017_0f68_bcad_5683540e130c["String()"] ca809e55_f724_dc71_a437_a2136b99321a -->|method| d67543cd_1017_0f68_bcad_5683540e130c 3284c26f_1c61_3d1e_b607_bc7eabc45294["addCodec()"] ca809e55_f724_dc71_a437_a2136b99321a -->|method| 3284c26f_1c61_3d1e_b607_bc7eabc45294 c38f9364_6b66_1ba8_e8bc_c95ae3255af8["removeEncoder()"] ca809e55_f724_dc71_a437_a2136b99321a -->|method| c38f9364_6b66_1ba8_e8bc_c95ae3255af8 27ac3dcf_9e50_b503_3804_5ad12f1f89bc["removeDecoder()"] ca809e55_f724_dc71_a437_a2136b99321a -->|method| 27ac3dcf_9e50_b503_3804_5ad12f1f89bc f391bafb_a867_e9ff_cb06_e190f967345a["Object()"] ca809e55_f724_dc71_a437_a2136b99321a -->|method| f391bafb_a867_e9ff_cb06_e190f967345a c63f8d91_1302_3761_375a_82375b26d9a8["handleResponse()"] ca809e55_f724_dc71_a437_a2136b99321a -->|method| c63f8d91_1302_3761_375a_82375b26d9a8
Relationship Graph
Source Code
handler-proxy/src/main/java/io/netty/handler/proxy/Socks4ProxyHandler.java lines 35–120
public final class Socks4ProxyHandler extends ProxyHandler {
private static final String PROTOCOL = "socks4";
private static final String AUTH_USERNAME = "username";
private final String username;
private String decoderName;
private String encoderName;
public Socks4ProxyHandler(SocketAddress proxyAddress) {
this(proxyAddress, null);
}
public Socks4ProxyHandler(SocketAddress proxyAddress, String username) {
super(proxyAddress);
if (username != null && username.isEmpty()) {
username = null;
}
this.username = username;
}
@Override
public String protocol() {
return PROTOCOL;
}
@Override
public String authScheme() {
return username != null? AUTH_USERNAME : AUTH_NONE;
}
public String username() {
return username;
}
@Override
protected void addCodec(ChannelHandlerContext ctx) throws Exception {
ChannelPipeline p = ctx.pipeline();
String name = ctx.name();
Socks4ClientDecoder decoder = new Socks4ClientDecoder();
p.addBefore(name, null, decoder);
decoderName = p.context(decoder).name();
encoderName = decoderName + ".encoder";
p.addBefore(name, encoderName, Socks4ClientEncoder.INSTANCE);
}
@Override
protected void removeEncoder(ChannelHandlerContext ctx) throws Exception {
ChannelPipeline p = ctx.pipeline();
p.remove(encoderName);
}
@Override
protected void removeDecoder(ChannelHandlerContext ctx) throws Exception {
ChannelPipeline p = ctx.pipeline();
p.remove(decoderName);
}
@Override
protected Object newInitialMessage(ChannelHandlerContext ctx) throws Exception {
InetSocketAddress raddr = destinationAddress();
String rhost;
if (raddr.isUnresolved()) {
rhost = raddr.getHostString();
} else {
rhost = raddr.getAddress().getHostAddress();
}
return new DefaultSocks4CommandRequest(
Socks4CommandType.CONNECT, rhost, raddr.getPort(), username != null? username : "");
}
@Override
protected boolean handleResponse(ChannelHandlerContext ctx, Object response) throws Exception {
final Socks4CommandResponse res = (Socks4CommandResponse) response;
final Socks4CommandStatus status = res.status();
if (status == Socks4CommandStatus.SUCCESS) {
return true;
Source
Frequently Asked Questions
What is the Socks4ProxyHandler class?
Socks4ProxyHandler is a class in the netty codebase, defined in handler-proxy/src/main/java/io/netty/handler/proxy/Socks4ProxyHandler.java.
Where is Socks4ProxyHandler defined?
Socks4ProxyHandler is defined in handler-proxy/src/main/java/io/netty/handler/proxy/Socks4ProxyHandler.java at line 35.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free