Example usage for io.netty.handler.codec.socksx.v5 Socks5PasswordAuthRequest username

List of usage examples for io.netty.handler.codec.socksx.v5 Socks5PasswordAuthRequest username

Introduction

In this page you can find the example usage for io.netty.handler.codec.socksx.v5 Socks5PasswordAuthRequest username.

Prototype

String username();

Source Link

Document

Returns the username of this request.

Usage

From source file:com.github.sinsinpub.pero.manual.proxyhandler.Socks5ProxyServer.java

License:Apache License

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;
    }// w  w w. jav a  2s .  co m

    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;
}

From source file:com.mapple.forward.socks.SocksServerHandlerEx.java

License:Apache License

@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(SocksServerConnectHandlerEx.INSTANCE);
            ctx.pipeline().remove(this);
            ctx.fireChannelRead(socksRequest);
        } else {// w w w.java2  s . c o  m
            ctx.close();
        }
        break;
    case SOCKS5:
        if (socksRequest instanceof Socks5InitialRequest) {
            // auth support example
            ctx.pipeline().addFirst(new Socks5PasswordAuthRequestDecoder());
            ctx.write(new DefaultSocks5InitialResponse(Socks5AuthMethod.PASSWORD));
            //                    ctx.pipeline().addFirst(new Socks5CommandRequestDecoder());
            //                    ctx.write(new DefaultSocks5InitialResponse(Socks5AuthMethod.NO_AUTH));
        } else if (socksRequest instanceof Socks5PasswordAuthRequest) {
            ctx.pipeline().addFirst(new Socks5CommandRequestDecoder());

            Socks5PasswordAuthRequest request = (Socks5PasswordAuthRequest) socksRequest;
            //                    System.out.println("Socks5:" + request.username() + " " + request.password());

            AttributeKey<String> SOCKS5 = AttributeKey.valueOf("socks5");
            ctx.channel().attr(SOCKS5).set(request.username());

            ctx.write(new DefaultSocks5PasswordAuthResponse(Socks5PasswordAuthStatus.SUCCESS));
        } else if (socksRequest instanceof Socks5CommandRequest) {
            /*Socks5InitialRequestDecoder handle = ctx.pipeline().get(Socks5InitialRequestDecoder.class);
            if(handle != null) {
                System.out.println("LWZ Remove" + handle);
                ctx.pipeline().remove(handle);
            }*/
            Socks5CommandRequest socks5CmdRequest = (Socks5CommandRequest) socksRequest;
            if (socks5CmdRequest.type() == Socks5CommandType.CONNECT) {
                ctx.pipeline().addLast(SocksServerConnectHandlerEx.INSTANCE);
                ctx.pipeline().remove(this);
                ctx.fireChannelRead(socksRequest);
            } else {
                ctx.close();
            }
        } else {
            ctx.close();
        }
        break;
    case UNKNOWN:
        ctx.close();
        break;
    }
}