SocksServerHandler Class — netty Architecture
Architecture documentation for the SocksServerHandler class in SocksServerHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 60ef178d_6500_8cea_0a49_90bdd5ee27ff["SocksServerHandler"] d540f89b_1d04_a29b_c01a_ecc4c86c52b0["SocksServerHandler.java"] 60ef178d_6500_8cea_0a49_90bdd5ee27ff -->|defined in| d540f89b_1d04_a29b_c01a_ecc4c86c52b0 f85e06bd_577a_8dda_0b80_9db397c25339["SocksServerHandler()"] 60ef178d_6500_8cea_0a49_90bdd5ee27ff -->|method| f85e06bd_577a_8dda_0b80_9db397c25339 0e191940_5264_af6c_15ae_b9ec0daab66a["channelRead0()"] 60ef178d_6500_8cea_0a49_90bdd5ee27ff -->|method| 0e191940_5264_af6c_15ae_b9ec0daab66a 028e9fe2_62db_e473_e48b_7242454d7cbf["channelReadComplete()"] 60ef178d_6500_8cea_0a49_90bdd5ee27ff -->|method| 028e9fe2_62db_e473_e48b_7242454d7cbf 42073905_4301_4661_627c_370dfb87be15["exceptionCaught()"] 60ef178d_6500_8cea_0a49_90bdd5ee27ff -->|method| 42073905_4301_4661_627c_370dfb87be15
Relationship Graph
Source Code
example/src/main/java/io/netty/example/socksproxy/SocksServerHandler.java lines 37–99
@ChannelHandler.Sharable
public final class SocksServerHandler extends SimpleChannelInboundHandler<SocksMessage> {
public static final SocksServerHandler INSTANCE = new SocksServerHandler();
private SocksServerHandler() { }
@Override
public void channelRead0(ChannelHandlerContext ctx, SocksMessage socksRequest) throws Exception {
switch (socksRequest.version()) {
case SOCKS4a:
Socks4CommandRequest socksV4CmdRequest = (Socks4CommandRequest) socksRequest;
if (socksV4CmdRequest.type() == Socks4CommandType.CONNECT) {
ctx.pipeline().addLast(new SocksServerConnectHandler());
ctx.pipeline().remove(this);
ctx.fireChannelRead(socksRequest);
} else {
ctx.close();
}
break;
case SOCKS5:
if (socksRequest instanceof Socks5InitialRequest) {
// auth support example
//ctx.pipeline().addFirst(new Socks5PasswordAuthRequestDecoder());
//ctx.write(new DefaultSocks5AuthMethodResponse(Socks5AuthMethod.PASSWORD));
ctx.pipeline().addFirst(new Socks5CommandRequestDecoder());
ctx.write(new DefaultSocks5InitialResponse(Socks5AuthMethod.NO_AUTH));
} else if (socksRequest instanceof Socks5PasswordAuthRequest) {
ctx.pipeline().addFirst(new Socks5CommandRequestDecoder());
ctx.write(new DefaultSocks5PasswordAuthResponse(Socks5PasswordAuthStatus.SUCCESS));
} else if (socksRequest instanceof Socks5PrivateAuthRequest) {
ctx.pipeline().addFirst(new Socks5CommandRequestDecoder());
ctx.write(new DefaultSocks5PrivateAuthResponse(Socks5PrivateAuthStatus.SUCCESS));
} else if (socksRequest instanceof Socks5CommandRequest) {
Socks5CommandRequest socks5CmdRequest = (Socks5CommandRequest) socksRequest;
if (socks5CmdRequest.type() == Socks5CommandType.CONNECT) {
ctx.pipeline().addLast(new SocksServerConnectHandler());
ctx.pipeline().remove(this);
ctx.fireChannelRead(socksRequest);
} else {
ctx.close();
}
} else {
ctx.close();
}
break;
case UNKNOWN:
ctx.close();
break;
}
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
ctx.flush();
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable throwable) {
throwable.printStackTrace();
SocksServerUtils.closeOnFlush(ctx.channel());
}
}
Source
Frequently Asked Questions
What is the SocksServerHandler class?
SocksServerHandler is a class in the netty codebase, defined in example/src/main/java/io/netty/example/socksproxy/SocksServerHandler.java.
Where is SocksServerHandler defined?
SocksServerHandler is defined in example/src/main/java/io/netty/example/socksproxy/SocksServerHandler.java at line 37.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free