diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/UdpProxyMessageTransferHandler.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/UdpProxyMessageTransferHandler.java index 210fe06d..7052b5d9 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/UdpProxyMessageTransferHandler.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/handler/UdpProxyMessageTransferHandler.java @@ -12,6 +12,10 @@ import org.dromara.neutrinoproxy.core.ProxyDataTypeEnum; import org.dromara.neutrinoproxy.core.ProxyMessage; import org.dromara.neutrinoproxy.core.ProxyMessageHandler; import org.dromara.neutrinoproxy.core.dispatcher.Match; +import org.dromara.neutrinoproxy.server.proxy.domain.VisitorChannelAttachInfo; +import org.dromara.neutrinoproxy.server.service.FlowReportService; +import org.dromara.neutrinoproxy.server.util.ProxyUtil; +import org.noear.solon.Solon; import org.noear.solon.annotation.Component; import java.net.InetSocketAddress; @@ -34,6 +38,12 @@ public class UdpProxyMessageTransferHandler implements ProxyMessageHandler { InetSocketAddress address = new InetSocketAddress(udpBaseInfo.getVisitorIp(), udpBaseInfo.getVisitorPort()); ByteBuf byteBuf = Unpooled.copiedBuffer(proxyMessage.getData()); visitorChannel.writeAndFlush(new DatagramPacket(byteBuf, address)); + + // 增加流量计数(TODO 如果UDP映射服务端端口修改,这个似乎不准) + Integer licenseId = visitorChannel.attr(Constants.LICENSE_ID).get(); + if (null != licenseId) { + Solon.context().getBean(FlowReportService.class).addReadByte(licenseId, proxyMessage.getData().length); + } } } diff --git a/todolist.MD b/todolist.MD index d04f112d..769b844b 100644 --- a/todolist.MD +++ b/todolist.MD @@ -29,6 +29,7 @@ - [x] 新增/编辑端口映射时端口占用检测功能屏蔽,解决docker下使用的各种问题 # 1.9.1 +- [ ] 如果UDP映射服务端端口变动,流量统计似乎不准,转发功能或许也受到影响,需要评估、测试、思考如何优化 - [ ] 增加服务端/客户端jar式一键部署脚本 - [ ] 排查解决问题:https://gitee.com/dromara/neutrino-proxy/issues/I7LGLB - [ ] 访问白名单