refactor dispatch securit only kick without ip blacklist

pull/358/head
q191201771 9 months ago
parent 8bd4a50e49
commit 8b4126e4e5

@ -16,7 +16,10 @@ import (
)
func securityMaxSubSessionPerIp(info base.UpdateInfo) {
if config.MaxSubSessionPerIp > 0 {
if config.MaxSubSessionPerIp <= 0 {
return
}
ip2SubSessions := make(map[string][]base.StatSub)
sessionId2StreamName := make(map[string]string)
for _, g := range info.Groups {
@ -30,28 +33,31 @@ func securityMaxSubSessionPerIp(info base.UpdateInfo) {
sessionId2StreamName[sub.SessionId] = g.StreamName
}
}
for ip, subs := range ip2SubSessions {
if len(subs) > config.MaxSubSessionPerIp {
nazalog.Debugf("close session. ip=%s, session count=%d", ip, len(subs))
for _, sub := range subs {
if sub.Protocol == base.SessionProtocolHlsStr {
host, _, err := net.SplitHostPort(sub.RemoteAddr)
if err != nil {
nazalog.Warnf("split host port failed. remote addr=%s", sub.RemoteAddr)
if len(subs) <= config.MaxSubSessionPerIp {
continue
}
addIpBlacklist(info.ServerId, host, 60)
} else {
nazalog.Debugf("close session. ip=%s, session count=%d", ip, len(subs))
for _, sub := range subs {
//if sub.Protocol == base.SessionProtocolHlsStr {
// host, _, err := net.SplitHostPort(sub.RemoteAddr)
// if err != nil {
// nazalog.Warnf("split host port failed. remote addr=%s", sub.RemoteAddr)
// continue
// }
// addIpBlacklist(info.ServerId, host, 60)
//}
kickSession(info.ServerId, sessionId2StreamName[sub.SessionId], sub.SessionId)
}
}
}
}
}
}
func securityMaxSubDurationSec(info base.UpdateInfo) {
if config.MaxSubDurationSec > 0 {
if config.MaxSubDurationSec <= 0 {
return
}
now := time.Now()
for _, g := range info.Groups {
for _, sub := range g.StatSubs {
@ -61,20 +67,11 @@ func securityMaxSubDurationSec(info base.UpdateInfo) {
continue
}
diff := int(now.Sub(st).Seconds())
if diff > config.MaxSubDurationSec {
nazalog.Infof("close session. sub session start time=%s, diff=%d", sub.StartTime, diff)
if sub.Protocol == base.SessionProtocolHlsStr {
host, _, err := net.SplitHostPort(sub.RemoteAddr)
if err != nil {
nazalog.Warnf("split host port failed. remote addr=%s", sub.RemoteAddr)
if diff <= config.MaxSubDurationSec {
continue
}
addIpBlacklist(info.ServerId, host, 60)
} else {
nazalog.Infof("close session. sub session start time=%s, diff=%d", sub.StartTime, diff)
kickSession(info.ServerId, g.StreamName, sub.SessionId)
}
}
}
}
}
}

Loading…
Cancel
Save