Search in sources :

Example 1 with Socks5PasswordAuthRequestDecoder

use of io.netty.handler.codec.socksx.v5.Socks5PasswordAuthRequestDecoder in project netty by netty.

the class Socks5ProxyServer method authenticate.

boolean authenticate(ChannelHandlerContext ctx, Object msg) {
    if (username == null) {
        ctx.pipeline().replace(DECODER, DECODER, new Socks5CommandRequestDecoder());
        ctx.write(new DefaultSocks5InitialResponse(Socks5AuthMethod.NO_AUTH));
        return true;
    }
    if (msg instanceof Socks5InitialRequest) {
        ctx.pipeline().replace(DECODER, DECODER, new Socks5PasswordAuthRequestDecoder());
        ctx.write(new DefaultSocks5InitialResponse(Socks5AuthMethod.PASSWORD));
        return false;
    }
    Socks5PasswordAuthRequest req = (Socks5PasswordAuthRequest) msg;
    if (req.username().equals(username) && req.password().equals(password)) {
        ctx.pipeline().replace(DECODER, DECODER, new Socks5CommandRequestDecoder());
        ctx.write(new DefaultSocks5PasswordAuthResponse(Socks5PasswordAuthStatus.SUCCESS));
        return true;
    }
    ctx.pipeline().replace(DECODER, DECODER, new Socks5PasswordAuthRequestDecoder());
    ctx.write(new DefaultSocks5PasswordAuthResponse(Socks5PasswordAuthStatus.FAILURE));
    return false;
}
Also used : DefaultSocks5InitialResponse(io.netty.handler.codec.socksx.v5.DefaultSocks5InitialResponse) Socks5PasswordAuthRequest(io.netty.handler.codec.socksx.v5.Socks5PasswordAuthRequest) Socks5InitialRequest(io.netty.handler.codec.socksx.v5.Socks5InitialRequest) DefaultSocks5PasswordAuthResponse(io.netty.handler.codec.socksx.v5.DefaultSocks5PasswordAuthResponse) Socks5PasswordAuthRequestDecoder(io.netty.handler.codec.socksx.v5.Socks5PasswordAuthRequestDecoder) Socks5CommandRequestDecoder(io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder)

Example 2 with Socks5PasswordAuthRequestDecoder

use of io.netty.handler.codec.socksx.v5.Socks5PasswordAuthRequestDecoder in project netty by netty.

the class SocksServerHandler method channelRead0.

@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 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;
    }
}
Also used : DefaultSocks5InitialResponse(io.netty.handler.codec.socksx.v5.DefaultSocks5InitialResponse) Socks5PasswordAuthRequest(io.netty.handler.codec.socksx.v5.Socks5PasswordAuthRequest) Socks5InitialRequest(io.netty.handler.codec.socksx.v5.Socks5InitialRequest) DefaultSocks5PasswordAuthResponse(io.netty.handler.codec.socksx.v5.DefaultSocks5PasswordAuthResponse) Socks5CommandRequest(io.netty.handler.codec.socksx.v5.Socks5CommandRequest) Socks4CommandRequest(io.netty.handler.codec.socksx.v4.Socks4CommandRequest) Socks5CommandRequestDecoder(io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder)

Aggregations

DefaultSocks5InitialResponse (io.netty.handler.codec.socksx.v5.DefaultSocks5InitialResponse)2 DefaultSocks5PasswordAuthResponse (io.netty.handler.codec.socksx.v5.DefaultSocks5PasswordAuthResponse)2 Socks5CommandRequestDecoder (io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder)2 Socks5InitialRequest (io.netty.handler.codec.socksx.v5.Socks5InitialRequest)2 Socks5PasswordAuthRequest (io.netty.handler.codec.socksx.v5.Socks5PasswordAuthRequest)2 Socks4CommandRequest (io.netty.handler.codec.socksx.v4.Socks4CommandRequest)1 Socks5CommandRequest (io.netty.handler.codec.socksx.v5.Socks5CommandRequest)1 Socks5PasswordAuthRequestDecoder (io.netty.handler.codec.socksx.v5.Socks5PasswordAuthRequestDecoder)1