mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2025-06-16 18:35:05 +08:00
[fix] socks、http代理 添加流量计费
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
package org.framework.lazy.cloud.network.heartbeat.common.advanced.flow.proxy;
|
||||
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyFlowTypeEnum;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelProxyTypeEnum;
|
||||
|
||||
public interface ChannelProxyFlow {
|
||||
|
||||
@ -32,6 +34,18 @@ public interface ChannelProxyFlow {
|
||||
*/
|
||||
ChannelFlowEnum channelFlowEnum();
|
||||
|
||||
/**
|
||||
* 代理流量类型
|
||||
* @see ChannelProxyFlowTypeEnum
|
||||
*/
|
||||
ChannelProxyFlowTypeEnum channelProxyFlowTypeEnum();
|
||||
|
||||
/**
|
||||
* 代理类型
|
||||
* @see ChannelProxyTypeEnum
|
||||
*/
|
||||
ChannelProxyTypeEnum channelProxyTypeEnum();
|
||||
|
||||
/**
|
||||
* 流量
|
||||
*
|
||||
|
@ -0,0 +1,21 @@
|
||||
package org.framework.lazy.cloud.network.heartbeat.common.advanced.proxy.http.server;
|
||||
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelTypeAdvanced;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.HandleChannelTypeAdvanced;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.advanced.payload.NettyProxyMsg;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.ProxyMessageTypeEnums;
|
||||
|
||||
public abstract class AbstractHandleHttpReportClientProxyClientTransferRequestTypeAdvanced<MSG> extends AbstractHandleChannelTypeAdvanced<NettyProxyMsg> implements HandleChannelTypeAdvanced {
|
||||
|
||||
|
||||
/**
|
||||
* 是否支持当前类型
|
||||
*
|
||||
* @param nettyProxyMsg 通道数据
|
||||
* @return 布尔类型 是、否
|
||||
*/
|
||||
@Override
|
||||
protected boolean doSupport(NettyProxyMsg nettyProxyMsg) {
|
||||
return ProxyMessageTypeEnums.HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_.getTypeByte() == nettyProxyMsg.getType();
|
||||
}
|
||||
}
|
@ -84,6 +84,14 @@ public class ProxyMessageType {
|
||||
*/
|
||||
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CONNECTION_ + 1;
|
||||
|
||||
/**
|
||||
* http 另一个客户端将返回数据通过传输通道返回
|
||||
*
|
||||
* @see ProxyMessageTypeEnums#HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_
|
||||
* @see AbstractHandleHttpReportClientProxyClientTransferRequestTypeAdvanced
|
||||
*/
|
||||
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL_ + 1;
|
||||
|
||||
|
||||
/**
|
||||
* http 另一个客户端将返回数据通过传输通道返回
|
||||
@ -91,7 +99,7 @@ public class ProxyMessageType {
|
||||
* @see ProxyMessageTypeEnums#HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_RESPONSE_
|
||||
* @see AbstractHandleHttpReportClientProxyClientTransferResponseTypeAdvanced
|
||||
*/
|
||||
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_RESPONSE_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL_ + 1;
|
||||
public static final byte HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_RESPONSE_ = HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_ + 1;
|
||||
|
||||
/**
|
||||
* 上报传输通道关闭
|
||||
|
@ -0,0 +1,17 @@
|
||||
package org.framework.lazy.cloud.network.heartbeat.common.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 代理流量类型
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ChannelProxyFlowTypeEnum {
|
||||
|
||||
// HTTP
|
||||
HTTP,
|
||||
// Socks
|
||||
SOCKS
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package org.framework.lazy.cloud.network.heartbeat.common.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 代理类型
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ChannelProxyTypeEnum {
|
||||
|
||||
SERVER_PROXY_SERVER("服务端代理服务端"),
|
||||
SERVER_PROXY_CLIENT("服务端远程客户端"),
|
||||
CLIENT_PROXY_CLIENT("客户端远程客户端"),
|
||||
CLIENT_PROXY_SEVER("客户端远程服务端");
|
||||
|
||||
private final String desc;
|
||||
}
|
@ -110,6 +110,14 @@ public enum ProxyMessageTypeEnums {
|
||||
* @see AbstractHandleHttpDistributeClientProxyClientTransferRequestTypeAdvanced
|
||||
*/
|
||||
HTTP_DISTRIBUTE_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_(ProxyMessageType.HTTP_DISTRIBUTE_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_, "http 下发数据到另一个客户端"),
|
||||
|
||||
/**
|
||||
* http 另一个客户端将返回数据通过传输通道 请求
|
||||
*
|
||||
* @see ProxyMessageTypeEnums#HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_
|
||||
* @see AbstractHandleHttpReportClientProxyClientTransferRequestTypeAdvanced
|
||||
*/
|
||||
HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_(ProxyMessageType.HTTP_REPORT_CLIENT_PROXY_CLIENT_TRANSFER_REQUEST_, "http 另一个客户端将返回数据通过传输通道请求"),
|
||||
/**
|
||||
* http 另一个客户端将返回数据通过传输通道返回
|
||||
*
|
||||
|
@ -18,6 +18,7 @@ public class ChannelAttributeKeyUtils {
|
||||
private static final AttributeKey<String> ORIGINAL_IP = AttributeKey.newInstance("originalIp");
|
||||
private static final AttributeKey<String> TARGET_IP = AttributeKey.newInstance("targetIp");
|
||||
private static final AttributeKey<Integer> TARGET_PORT = AttributeKey.newInstance("targetPort");
|
||||
private static final AttributeKey<String> TARGET_CLIENT_ID = AttributeKey.newInstance("targetClientId");
|
||||
private static final AttributeKey<Integer> OUT_FLOW = AttributeKey.newInstance("outFlow");
|
||||
private static final AttributeKey<Integer> IN_FLOW = AttributeKey.newInstance("inFlow");
|
||||
|
||||
@ -87,6 +88,36 @@ public class ChannelAttributeKeyUtils {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 为通道绑定 访客属性
|
||||
*
|
||||
* @param channel 通道
|
||||
* @param targetClientId 客户端ID
|
||||
*/
|
||||
public static void buildTargetClientId(Channel channel, byte[] targetClientId) {
|
||||
channel.attr(TARGET_CLIENT_ID).set(new String(targetClientId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 为通道绑定 访客属性
|
||||
*
|
||||
* @param channel 通道
|
||||
* @param targetClientId 客户端ID
|
||||
*/
|
||||
public static void buildTargetClientId(Channel channel, String targetClientId) {
|
||||
channel.attr(TARGET_CLIENT_ID).set(targetClientId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 通道中访客ID
|
||||
*
|
||||
* @param channel 通道
|
||||
*/
|
||||
public static String getTargetClientId(Channel channel) {
|
||||
return channel.attr(TARGET_CLIENT_ID).get();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 为通道绑定 出口流量
|
||||
*
|
||||
|
Reference in New Issue
Block a user