diff --git a/internal/nodes/listener_tcp.go b/internal/nodes/listener_tcp.go index ddc90d2..cd0661c 100644 --- a/internal/nodes/listener_tcp.go +++ b/internal/nodes/listener_tcp.go @@ -145,6 +145,12 @@ func (this *TCPListener) handleConn(server *serverconfigs.ServerConfig, conn net stats.SharedTrafficStatManager.Add(server.UserId, server.Id, "", 0, 0, 1, 0, 0, 0, 0, server.ShouldCheckTrafficLimit(), server.PlanId()) } + // DAU统计 + clientIP, _, parseErr := net.SplitHostPort(conn.RemoteAddr().String()) + if parseErr == nil { + stats.SharedDAUManager.AddIP(server.Id, clientIP) + } + originConn, err := this.connectOrigin(server.Id, serverName, server.ReverseProxy, conn.RemoteAddr().String()) if err != nil { _ = conn.Close() diff --git a/internal/nodes/listener_udp.go b/internal/nodes/listener_udp.go index c413f05..7c8d7cd 100644 --- a/internal/nodes/listener_udp.go +++ b/internal/nodes/listener_udp.go @@ -359,9 +359,9 @@ type UDPConn struct { isClosed bool } -func NewUDPConn(server *serverconfigs.ServerConfig, addr net.Addr, proxyListener UDPPacketListener, cm any, serverConn *net.UDPConn) *UDPConn { +func NewUDPConn(server *serverconfigs.ServerConfig, clientAddr net.Addr, proxyListener UDPPacketListener, cm any, serverConn *net.UDPConn) *UDPConn { var conn = &UDPConn{ - addr: addr, + addr: clientAddr, proxyListener: proxyListener, serverConn: serverConn, activatedAt: time.Now().Unix(), @@ -371,6 +371,12 @@ func NewUDPConn(server *serverconfigs.ServerConfig, addr net.Addr, proxyListener // 统计 if server != nil { stats.SharedTrafficStatManager.Add(server.UserId, server.Id, "", 0, 0, 1, 0, 0, 0, 0, server.ShouldCheckTrafficLimit(), server.PlanId()) + + // DAU统计 + clientIP, _, parseErr := net.SplitHostPort(clientAddr.String()) + if parseErr == nil { + stats.SharedDAUManager.AddIP(server.Id, clientIP) + } } // 处理ControlMessage @@ -392,7 +398,7 @@ func NewUDPConn(server *serverconfigs.ServerConfig, addr net.Addr, proxyListener if n > 0 { conn.activatedAt = time.Now().Unix() - _, writingErr := proxyListener.WriteTo(buffer[:n], cm, addr) + _, writingErr := proxyListener.WriteTo(buffer[:n], cm, clientAddr) if writingErr != nil { conn.isOk = false break