@@ -212,6 +212,13 @@ protected override void OnConnected()
212212 try
213213 {
214214 RealIpAddress = GetSessionIp ( ) ;
215+ var ipToCheck = ( ( IPEndPoint ) Socket . RemoteEndPoint ) . Address ;
216+ if ( IPBan . IsIPBanned ( ipToCheck ) )
217+ {
218+ Console . WriteLine ( $ "Banned IP tried to connect: { ipToCheck } ") ;
219+ Disconnect ( ) ;
220+ return ;
221+ }
215222 }
216223 catch
217224 {
@@ -317,6 +324,16 @@ private void HandleScan(LdnHeader ldnPacket, ScanFilter filter)
317324
318325 private void HandleCreateAccessPoint ( LdnHeader ldnPacket , CreateAccessPointRequest request , byte [ ] advertiseData )
319326 {
327+ var nameAsString = StringUtils . ReadUtf8String ( request . UserConfig . UserName . AsSpan ( ) ) ;
328+ if ( nameAsString . ContainsSlur ( ) )
329+ {
330+ var ipToBan = ( ( IPEndPoint ) Socket . RemoteEndPoint ) . Address ;
331+ Console . WriteLine ( $ "Banning { nameAsString } ({ ipToBan } )") ;
332+ IPBan . BanIP ( ipToBan ) ;
333+ SendAsync ( RyuLdnProtocol . Encode ( PacketId . NetworkError , new NetworkErrorMessage { Error = NetworkError . BannedByServer } ) ) ;
334+ Disconnect ( ) ;
335+ return ;
336+ }
320337 if ( CurrentGame != null || ! _initialized )
321338 {
322339 // Cannot create an access point while in a game.
@@ -487,6 +504,17 @@ private bool IsProxyReachable(ushort port)
487504
488505 private void ConnectImpl ( string id , UserConfig userConfig , uint localCommunicationVersion )
489506 {
507+ var nameAsString = StringUtils . ReadUtf8String ( userConfig . UserName . AsSpan ( ) ) ;
508+ if ( nameAsString . ContainsSlur ( ) )
509+ {
510+ var ipToBan = ( ( IPEndPoint ) Socket . RemoteEndPoint ) . Address ;
511+ Console . WriteLine ( $ "Banning { nameAsString } ({ ipToBan } )") ;
512+ IPBan . BanIP ( ipToBan ) ;
513+ SendAsync ( RyuLdnProtocol . Encode ( PacketId . NetworkError , new NetworkErrorMessage { Error = NetworkError . BannedByServer } ) ) ;
514+ Disconnect ( ) ;
515+ return ;
516+ }
517+
490518 HostedGame game = _tcpServer . FindGame ( id ) ;
491519
492520 if ( game != null )
0 commit comments