类 io.netty.handler.codec.socks.SocksCmdRequest 源码实例Demo

下面列出了怎么用 io.netty.handler.codec.socks.SocksCmdRequest 的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: NSS   文件: SocksServerConnectHandler.java

/**
 * 获取远程ip地址
 * @param request
 * @return
 */
private String getIpAddr(SocksCmdRequest request) {
	if(isProxy) {
		return config.get_ipAddr();
	} else {
		return request.host();
	}
}
 
源代码2 项目: NSS   文件: SocksServerConnectHandler.java

/**
 * 获取远程端口
 * @param request
 * @return
 */
private int getPort(SocksCmdRequest request) {
	if(isProxy) {
		return config.get_port();
	} else {
		return request.port();
	}
}
 
源代码3 项目: NSS   文件: SocksServerConnectHandler.java

/**
 * localserver和remoteserver进行connect发送的数据
 * 
 * @param request
 * @param outboundChannel
 */
private void sendConnectRemoteMessage(SocksCmdRequest request,
		Channel outboundChannel) {
	ByteBuf buff = Unpooled.buffer();
	request.encodeAsByteBuf(buff);
	if (buff.hasArray()) {
		int len = buff.readableBytes();
		byte[] arr = new byte[len];
		buff.getBytes(0, arr);
		byte[] data = remoteByte(arr);
		sendRemote(data, data.length, outboundChannel);
	}
}
 
源代码4 项目: NSS   文件: SocksServerHandler.java

@Override
public void channelRead0(ChannelHandlerContext ctx,
		SocksRequest socksRequest) throws Exception {
	switch (socksRequest.requestType()) {
	case INIT: {
		logger.info("localserver init");
		ctx.pipeline().addFirst(new SocksCmdRequestDecoder());
		ctx.write(new SocksInitResponse(SocksAuthScheme.NO_AUTH));
		break;
	}
	case AUTH:
		ctx.pipeline().addFirst(new SocksCmdRequestDecoder());
		ctx.write(new SocksAuthResponse(SocksAuthStatus.SUCCESS));
		break;
	case CMD:
		SocksCmdRequest req = (SocksCmdRequest) socksRequest;
		if (req.cmdType() == SocksCmdType.CONNECT) {
			logger.info("localserver connect");
			ctx.pipeline().addLast(new SocksServerConnectHandler(config));
			ctx.pipeline().remove(this);
			ctx.fireChannelRead(socksRequest);
		} else {
			ctx.close();
		}
		break;
	case UNKNOWN:
		ctx.close();
		break;
	}
}
 

@Override
public void channelRead0(ChannelHandlerContext ctx, SocksRequest socksRequest) throws Exception {
    switch (socksRequest.requestType()) {
        case INIT: {
            // auth support example
            //ctx.pipeline().addFirst(new SocksAuthRequestDecoder());
            //ctx.write(new SocksInitResponse(SocksAuthScheme.AUTH_PASSWORD));
            ctx.pipeline().addFirst(new SocksCmdRequestDecoder());
            ctx.write(new SocksInitResponse(SocksAuthScheme.NO_AUTH));
            break;
        }
        case AUTH:
            ctx.pipeline().addFirst(new SocksCmdRequestDecoder());
            ctx.write(new SocksAuthResponse(SocksAuthStatus.SUCCESS));
            break;
        case CMD:
            SocksCmdRequest req = (SocksCmdRequest) socksRequest;
            if (req.cmdType() == SocksCmdType.CONNECT) {
                ctx.pipeline().addLast(new SocksServerConnectHandler());
                ctx.pipeline().remove(this);
                ctx.fireChannelRead(socksRequest);
            } else {
                ctx.close();
            }
            break;
        case UNKNOWN:
            ctx.close();
            break;
    }
}
 

private ChannelHandlerContext prepare(final ChannelHandlerContext ctx, Object msg, ChannelFuture future) throws IOException {
	if (msg.getClass() == SocksCmdRequest.class) {
		SocksCmdRequest cmd = SocksCmdRequest.class.cast(msg);
		return Socks5ProxyServerHandlerBuilder.this.exchangerContext.exists(cmd.host()) ? this.activate(Socks5ProxyServerHandlerBuilder.this.exchangerContext.activate(cmd.host()), future, ctx) : this.wait(cmd, ctx);
	}
	return ctx;
}
 
源代码7 项目: NSS   文件: SocksServerConnectHandler.java

private SocksCmdResponse getSuccessResponse(SocksCmdRequest request) {
	return new SocksCmdResponse(SocksCmdStatus.SUCCESS,
			request.addressType());
}
 
源代码8 项目: NSS   文件: SocksServerConnectHandler.java

private SocksCmdResponse getFailureResponse(SocksCmdRequest request) {
	return new SocksCmdResponse(SocksCmdStatus.FAILURE,
			request.addressType());
}
 

/**
 * 禁止关闭接收方,cascade = false
 * 
 * @param cmd
 * @param ctx
 * @return
 * @throws IOException
 */
private ChannelHandlerContext wait(SocksCmdRequest cmd, ChannelHandlerContext ctx) throws IOException {
	ctx.attr(Socks5ProxyServerHandlerBuilder.this.exchanger).set(Socks5ProxyServerHandlerBuilder.this.exchangerContext.wait(cmd.host(), false, new NetworkTransfer(ctx)));
	return ctx;
}
 
 类所在包
 类方法
 同包方法