mirror of
https://github.com/wyx2685/V2bX.git
synced 2025-01-22 09:58:14 -05:00
修复hy2内核设备数统计错误的BUG
This commit is contained in:
parent
33d9ab4b0a
commit
8757b955a6
@ -5,6 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/InazumaV/V2bX/common/format"
|
||||||
"github.com/InazumaV/V2bX/limiter"
|
"github.com/InazumaV/V2bX/limiter"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
@ -46,12 +47,18 @@ var logFormatMap = map[string]zapcore.EncoderConfig{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *serverLogger) Connect(addr net.Addr, uuid string, tx uint64) {
|
func (l *serverLogger) Connect(addr net.Addr, uuid string, tx uint64) {
|
||||||
limiter, err := limiter.GetLimiter(l.Tag)
|
limiterinfo, err := limiter.GetLimiter(l.Tag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.logger.Panic("Get limiter error", zap.String("tag", l.Tag), zap.Error(err))
|
l.logger.Panic("Get limiter error", zap.String("tag", l.Tag), zap.Error(err))
|
||||||
}
|
}
|
||||||
if _, r := limiter.CheckLimit(uuid, extractIPFromAddr(addr), addr.Network() == "tcp"); r {
|
if _, r := limiterinfo.CheckLimit(format.UserTag(l.Tag, uuid), extractIPFromAddr(addr), addr.Network() == "tcp"); r {
|
||||||
l.logger.Warn("Need Reject", zap.String("addr", addr.String()), zap.String("uuid", uuid))
|
if userLimit, ok := limiterinfo.UserLimitInfo.Load(format.UserTag(l.Tag, uuid)); ok {
|
||||||
|
userLimit.(*limiter.UserLimitInfo).OverLimit = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if userLimit, ok := limiterinfo.UserLimitInfo.Load(format.UserTag(l.Tag, uuid)); ok {
|
||||||
|
userLimit.(*limiter.UserLimitInfo).OverLimit = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
l.logger.Info("client connected", zap.String("addr", addr.String()), zap.String("uuid", uuid), zap.Uint64("tx", tx))
|
l.logger.Info("client connected", zap.String("addr", addr.String()), zap.String("uuid", uuid), zap.Uint64("tx", tx))
|
||||||
}
|
}
|
||||||
@ -61,12 +68,18 @@ func (l *serverLogger) Disconnect(addr net.Addr, uuid string, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *serverLogger) TCPRequest(addr net.Addr, uuid, reqAddr string) {
|
func (l *serverLogger) TCPRequest(addr net.Addr, uuid, reqAddr string) {
|
||||||
limiter, err := limiter.GetLimiter(l.Tag)
|
limiterinfo, err := limiter.GetLimiter(l.Tag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.logger.Panic("Get limiter error", zap.String("tag", l.Tag), zap.Error(err))
|
l.logger.Panic("Get limiter error", zap.String("tag", l.Tag), zap.Error(err))
|
||||||
}
|
}
|
||||||
if _, r := limiter.CheckLimit(uuid, extractIPFromAddr(addr), addr.Network() == "tcp"); r {
|
if _, r := limiterinfo.CheckLimit(format.UserTag(l.Tag, uuid), extractIPFromAddr(addr), addr.Network() == "tcp"); r {
|
||||||
l.logger.Warn("Need Reject", zap.String("addr", addr.String()), zap.String("uuid", uuid))
|
if userLimit, ok := limiterinfo.UserLimitInfo.Load(format.UserTag(l.Tag, uuid)); ok {
|
||||||
|
userLimit.(*limiter.UserLimitInfo).OverLimit = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if userLimit, ok := limiterinfo.UserLimitInfo.Load(format.UserTag(l.Tag, uuid)); ok {
|
||||||
|
userLimit.(*limiter.UserLimitInfo).OverLimit = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
l.logger.Debug("TCP request", zap.String("addr", addr.String()), zap.String("uuid", uuid), zap.String("reqAddr", reqAddr))
|
l.logger.Debug("TCP request", zap.String("addr", addr.String()), zap.String("uuid", uuid), zap.String("reqAddr", reqAddr))
|
||||||
}
|
}
|
||||||
@ -80,12 +93,18 @@ func (l *serverLogger) TCPError(addr net.Addr, uuid, reqAddr string, err error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *serverLogger) UDPRequest(addr net.Addr, uuid string, sessionId uint32, reqAddr string) {
|
func (l *serverLogger) UDPRequest(addr net.Addr, uuid string, sessionId uint32, reqAddr string) {
|
||||||
limiter, err := limiter.GetLimiter(l.Tag)
|
limiterinfo, err := limiter.GetLimiter(l.Tag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.logger.Panic("Get limiter error", zap.String("tag", l.Tag), zap.Error(err))
|
l.logger.Panic("Get limiter error", zap.String("tag", l.Tag), zap.Error(err))
|
||||||
}
|
}
|
||||||
if _, r := limiter.CheckLimit(uuid, extractIPFromAddr(addr), addr.Network() == "tcp"); r {
|
if _, r := limiterinfo.CheckLimit(format.UserTag(l.Tag, uuid), extractIPFromAddr(addr), addr.Network() == "tcp"); r {
|
||||||
l.logger.Warn("Need Reject", zap.String("addr", addr.String()), zap.String("uuid", uuid))
|
if userLimit, ok := limiterinfo.UserLimitInfo.Load(format.UserTag(l.Tag, uuid)); ok {
|
||||||
|
userLimit.(*limiter.UserLimitInfo).OverLimit = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if userLimit, ok := limiterinfo.UserLimitInfo.Load(format.UserTag(l.Tag, uuid)); ok {
|
||||||
|
userLimit.(*limiter.UserLimitInfo).OverLimit = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
l.logger.Debug("UDP request", zap.String("addr", addr.String()), zap.String("uuid", uuid), zap.Uint32("sessionId", sessionId), zap.String("reqAddr", reqAddr))
|
l.logger.Debug("UDP request", zap.String("addr", addr.String()), zap.String("uuid", uuid), zap.Uint32("sessionId", sessionId), zap.String("reqAddr", reqAddr))
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ type UserLimitInfo struct {
|
|||||||
DeviceLimit int
|
DeviceLimit int
|
||||||
DynamicSpeedLimit int
|
DynamicSpeedLimit int
|
||||||
ExpireTime int64
|
ExpireTime int64
|
||||||
|
OverLimit bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddLimiter(tag string, l *conf.LimitConfig, users []panel.UserInfo) *Limiter {
|
func AddLimiter(tag string, l *conf.LimitConfig, users []panel.UserInfo) *Limiter {
|
||||||
@ -69,6 +70,7 @@ func AddLimiter(tag string, l *conf.LimitConfig, users []panel.UserInfo) *Limite
|
|||||||
if users[i].DeviceLimit != 0 {
|
if users[i].DeviceLimit != 0 {
|
||||||
userLimit.DeviceLimit = users[i].DeviceLimit
|
userLimit.DeviceLimit = users[i].DeviceLimit
|
||||||
}
|
}
|
||||||
|
userLimit.OverLimit = false
|
||||||
info.UserLimitInfo.Store(format.UserTag(tag, users[i].Uuid), userLimit)
|
info.UserLimitInfo.Store(format.UserTag(tag, users[i].Uuid), userLimit)
|
||||||
}
|
}
|
||||||
info.UUIDtoUID = uuidmap
|
info.UUIDtoUID = uuidmap
|
||||||
@ -110,6 +112,7 @@ func (l *Limiter) UpdateUser(tag string, added []panel.UserInfo, deleted []panel
|
|||||||
if added[i].DeviceLimit != 0 {
|
if added[i].DeviceLimit != 0 {
|
||||||
userLimit.DeviceLimit = added[i].DeviceLimit
|
userLimit.DeviceLimit = added[i].DeviceLimit
|
||||||
}
|
}
|
||||||
|
userLimit.OverLimit = false
|
||||||
l.UserLimitInfo.Store(format.UserTag(tag, added[i].Uuid), userLimit)
|
l.UserLimitInfo.Store(format.UserTag(tag, added[i].Uuid), userLimit)
|
||||||
l.UUIDtoUID[added[i].Uuid] = added[i].Id
|
l.UUIDtoUID[added[i].Uuid] = added[i].Id
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user