Java 类io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder 实例源码

项目:slyak-commons    文件:Socks5ProxyServer.java   
@Override
ChannelHandler[] getCustomChannelHandlers(EventLoopGroup clientGroup) {
    //socks auth
    //new Socks5PasswordAuthRequestDecoder();
    //new Socks5PasswordAuthRequestHandler()
    return new ChannelHandler[] {
            //Socks5MessageByteBuf
            Socks5ServerEncoder.DEFAULT,
            //socks5 init
            new Socks5InitialRequestDecoder(),
            new Socks5InitialRequestHandler(),
            //socks connection
            new Socks5CommandRequestDecoder(),
            new Socks5CommandRequestHandler(clientGroup)
    };
}
项目:nitmproxy    文件:SocksProxyHandler.java   
@Override
protected void channelRead0(ChannelHandlerContext ctx, SocksMessage socksMessage)
        throws Exception {
    switch (socksMessage.version()) {
    case SOCKS4a:
        Socks4CommandRequest socksV4CmdRequest = (Socks4CommandRequest) socksMessage;
        if (socksV4CmdRequest.type() == Socks4CommandType.CONNECT) {
            onSocksSuccess(ctx, socksV4CmdRequest);
        } else {
            ctx.close();
        }
        break;
    case SOCKS5:
        if (socksMessage instanceof Socks5InitialRequest) {
            ctx.pipeline().addFirst(addChannelHandler(new Socks5CommandRequestDecoder()));
            ctx.writeAndFlush(new DefaultSocks5InitialResponse(Socks5AuthMethod.NO_AUTH));
        } else if (socksMessage instanceof Socks5PasswordAuthRequest) {
            ctx.pipeline().addFirst(addChannelHandler(new Socks5CommandRequestDecoder()));
            ctx.writeAndFlush(new DefaultSocks5PasswordAuthResponse(Socks5PasswordAuthStatus.SUCCESS));
        } else if (socksMessage instanceof Socks5CommandRequest) {
            Socks5CommandRequest socks5CmdRequest = (Socks5CommandRequest) socksMessage;
            if (socks5CmdRequest.type() == Socks5CommandType.CONNECT) {
                onSocksSuccess(ctx, socks5CmdRequest);
            } else {
                ctx.close();
            }
        } else {
            ctx.close();
        }
        break;
    case UNKNOWN:
        ctx.close();
        break;
    }
}
项目:netty-socks    文件:Socks5WorkerChannelInitializer.java   
@Override
protected void initChannel(io.netty.channel.socket.SocketChannel channel) throws Exception {
    ChannelPipeline pipeline = channel.pipeline();

    // 连接管理
    pipeline.addLast(ConnectionManageHandler.NAME, new ConnectionManageHandler(3000));

    // 空闲超时
    pipeline.addLast(new IdleStateHandler(10, 10, 0));
    pipeline.addLast(new IdleStateEventHandler());

    // 读写超时
    pipeline.addLast(new ReadTimeoutHandler(socksProperties.getReadTimeoutMillis(), TimeUnit.MILLISECONDS));
    pipeline.addLast(new WriteTimeoutHandler(socksProperties.getWriteTimeoutMillis(), TimeUnit.MILLISECONDS));

    // netty log
    //pipeline.addLast(new LoggingHandler());

    // 负责将输出的 Socks5Message 转为 ByteBuf
    pipeline.addLast(Socks5ServerEncoder.DEFAULT);

    // init
    pipeline.addLast(Socks5InitialRequestDecoder.class.getName(), new Socks5InitialRequestDecoder());
    pipeline.addLast(Socks5InitialRequestHandler.class.getName(), socks5InitialRequestHandler);

    // auth
    if (socks5PasswordAuthRequestHandler != null) {
        pipeline.addLast(Socks5PasswordAuthRequestDecoder.class.getName(), new Socks5PasswordAuthRequestDecoder());
        pipeline.addLast(Socks5PasswordAuthRequestHandler.class.getName(), socks5PasswordAuthRequestHandler);
    }

    // connection
    pipeline.addLast(Socks5CommandRequestDecoder.class.getName(), new Socks5CommandRequestDecoder());
    pipeline.addLast(Socks5CommandRequestHandler.class.getName(), socks5CommandRequestHandler);
}
项目:probe    文件:SocksServerInitializer.java   
@Override
protected void initChannel(SocketChannel ch) throws Exception {
    //流量统计
    ch.pipeline().addLast(
            ProxyChannelTrafficShapingHandler.PROXY_TRAFFIC,
            new ProxyChannelTrafficShapingHandler(3000)
    );
    //channel超时处理
    ch.pipeline().addLast(new IdleStateHandler(3, 30, 0));
    ch.pipeline().addLast(new ProxyIdleHandler());
    //netty日志
    if (config.isLogging()) {
        ch.pipeline().addLast(new LoggingHandler());
    }
    ch.pipeline().addLast(Socks5ServerEncoder.DEFAULT);
    //sock5 init decode
    ch.pipeline().addLast(new Socks5InitialRequestDecoder());
    //sock5 init handler
    ch.pipeline().addLast(new Socks5InitialRequestHandler(config));
    if (config.isAuth()) {
        //socks auth
        ch.pipeline().addLast(new Socks5PasswordAuthRequestDecoder());
        //socks auth
        ch.pipeline().addLast(new Socks5PasswordAuthRequestHandler(config));
    }
    //socks connection
    ch.pipeline().addLast(new Socks5CommandRequestDecoder());
    //Socks connection
    ch.pipeline().addLast(new Socks5CommandRequestHandler());
}
项目:socks5-netty    文件:ProxyServer.java   
public void start() throws Exception {
    if(proxyFlowLog == null) {
        proxyFlowLog = new ProxyFlowLog4j();
    }
    if(passwordAuth == null) {
        passwordAuth = new PropertiesPasswordAuth();
    }
    EventLoopGroup boss = new NioEventLoopGroup(2);
    EventLoopGroup worker = new NioEventLoopGroup();
    try {
        ServerBootstrap bootstrap = new ServerBootstrap();
        bootstrap.group(boss, worker)
        .channel(NioServerSocketChannel.class)
        .option(ChannelOption.SO_BACKLOG, 1024)
        .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000)
        .childHandler(new ChannelInitializer<SocketChannel>() {
            @Override
            protected void initChannel(SocketChannel ch) throws Exception {
                //流量统计
                ch.pipeline().addLast(
                        ProxyChannelTrafficShapingHandler.PROXY_TRAFFIC, 
                        new ProxyChannelTrafficShapingHandler(3000, proxyFlowLog, channelListener)
                        );
                //channel超时处理
                ch.pipeline().addLast(new IdleStateHandler(3, 30, 0));
                ch.pipeline().addLast(new ProxyIdleHandler());
                //netty日志
                if(logging) {
                    ch.pipeline().addLast(new LoggingHandler());
                }
                //Socks5MessagByteBuf
                ch.pipeline().addLast(Socks5ServerEncoder.DEFAULT);
                //sock5 init
                ch.pipeline().addLast(new Socks5InitialRequestDecoder());
                //sock5 init
                ch.pipeline().addLast(new Socks5InitialRequestHandler(ProxyServer.this));
                if(isAuth()) {
                    //socks auth
                    ch.pipeline().addLast(new Socks5PasswordAuthRequestDecoder());
                    //socks auth
                    ch.pipeline().addLast(new Socks5PasswordAuthRequestHandler(getPasswordAuth()));
                }
                //socks connection
                ch.pipeline().addLast(new Socks5CommandRequestDecoder());
                //Socks connection
                ch.pipeline().addLast(new Socks5CommandRequestHandler());
            }
        });

        ChannelFuture future = bootstrap.bind(port).sync();
        logger.debug("bind port : " + port);
        future.channel().closeFuture().sync();
    } finally {
        boss.shutdownGracefully();
        worker.shutdownGracefully();
    }
}
项目:socks5-netty    文件:ProxyServer.java   
public void start() throws Exception {
    if(proxyFlowLog == null) {
        proxyFlowLog = new ProxyFlowLog4j();
    }
    if(passwordAuth == null) {
        passwordAuth = new PropertiesPasswordAuth();
    }
    EventLoopGroup boss = new NioEventLoopGroup(2);
    EventLoopGroup worker = new NioEventLoopGroup();
    try {
        ServerBootstrap bootstrap = new ServerBootstrap();
        bootstrap.group(boss, worker)
        .channel(NioServerSocketChannel.class)
        .option(ChannelOption.SO_BACKLOG, 1024)
        .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000)
        .childHandler(new ChannelInitializer<SocketChannel>() {
            @Override
            protected void initChannel(SocketChannel ch) throws Exception {
                //流量统计
                ch.pipeline().addLast(
                        ProxyChannelTrafficShapingHandler.PROXY_TRAFFIC, 
                        new ProxyChannelTrafficShapingHandler(3000, proxyFlowLog, channelListener)
                        );
                //channel超时处理
                ch.pipeline().addLast(new IdleStateHandler(3, 30, 0));
                ch.pipeline().addLast(new ProxyIdleHandler());
                //netty日志
                if(logging) {
                    ch.pipeline().addLast(new LoggingHandler());
                }
                //Socks5MessagByteBuf
                ch.pipeline().addLast(Socks5ServerEncoder.DEFAULT);
                //sock5 init
                ch.pipeline().addLast(new Socks5InitialRequestDecoder());
                //sock5 init
                ch.pipeline().addLast(new Socks5InitialRequestHandler(ProxyServer.this));
                if(isAuth()) {
                    //socks auth
                    ch.pipeline().addLast(new Socks5PasswordAuthRequestDecoder());
                    //socks auth
                    ch.pipeline().addLast(new Socks5PasswordAuthRequestHandler(getPasswordAuth()));
                }
                //socks connection
                ch.pipeline().addLast(new Socks5CommandRequestDecoder());
                //Socks connection
                ch.pipeline().addLast(new Socks5CommandRequestHandler());
            }
        });

        ChannelFuture future = bootstrap.bind(port).sync();
        logger.debug("bind port : " + port);
        future.channel().closeFuture().sync();
    } finally {
        boss.shutdownGracefully();
        worker.shutdownGracefully();
    }
}
项目:JavaAyo    文件:SocksServerHandler.java   
@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;
    }
}