UDP连接也检查IP名单

This commit is contained in:
GoEdgeLab
2024-05-03 15:11:54 +08:00
parent f8f17881aa
commit 6db792a7c9

View File

@@ -3,7 +3,9 @@ package nodes
import ( import (
"errors" "errors"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/TeaOSLab/EdgeNode/internal/firewalls"
"github.com/TeaOSLab/EdgeNode/internal/goman" "github.com/TeaOSLab/EdgeNode/internal/goman"
"github.com/TeaOSLab/EdgeNode/internal/iplibrary"
"github.com/TeaOSLab/EdgeNode/internal/remotelogs" "github.com/TeaOSLab/EdgeNode/internal/remotelogs"
"github.com/TeaOSLab/EdgeNode/internal/stats" "github.com/TeaOSLab/EdgeNode/internal/stats"
"github.com/TeaOSLab/EdgeNode/internal/utils" "github.com/TeaOSLab/EdgeNode/internal/utils"
@@ -164,7 +166,7 @@ func (this *UDPListener) servePacketListener(listener UDPPacketListener) error {
} }
}) })
var buffer = make([]byte, 4*1024) var buffer = make([]byte, 4<<10)
for { for {
if this.isClosed { if this.isClosed {
return nil return nil
@@ -183,6 +185,16 @@ func (this *UDPListener) servePacketListener(listener UDPPacketListener) error {
return err return err
} }
// 检查IP名单
clientIP, _, parseHostErr := net.SplitHostPort(clientAddr.String())
if parseHostErr == nil {
ok, _, expiresAt := iplibrary.AllowIP(clientIP, firstServer.Id)
if !ok {
firewalls.DropTemporaryTo(clientIP, expiresAt)
continue
}
}
if n > 0 { if n > 0 {
this.connLocker.Lock() this.connLocker.Lock()
conn, ok := this.connMap[clientAddr.String()] conn, ok := this.connMap[clientAddr.String()]