gameServer/FloodDetection.hs
changeset 14841 111c4d750c6d
parent 11466 4b5c7a5c49fd
equal deleted inserted replaced
14840:b02581c5b0c5 14841:111c4d750c6d
    34 
    34 
    35     where
    35     where
    36     einfo LobbyChatMessage = eiLobbyChat
    36     einfo LobbyChatMessage = eiLobbyChat
    37     einfo EngineMessage = eiEM
    37     einfo EngineMessage = eiEM
    38     einfo RoomJoin = eiJoin
    38     einfo RoomJoin = eiJoin
       
    39     einfo RoomNameUpdate = eiLobbyChat
    39 
    40 
    40     transformField LobbyChatMessage f = \c -> c{eiLobbyChat = f $ eiLobbyChat c}
    41     transformField LobbyChatMessage f = \c -> c{eiLobbyChat = f $ eiLobbyChat c}
    41     transformField EngineMessage f = \c -> c{eiEM = f $ eiEM c}
    42     transformField EngineMessage f = \c -> c{eiEM = f $ eiEM c}
    42     transformField RoomJoin f = \c -> c{eiJoin = f $ eiJoin c}
    43     transformField RoomJoin f = \c -> c{eiJoin = f $ eiJoin c}
       
    44     transformField RoomNameUpdate f = transformField LobbyChatMessage f
       
    45     
    43 
    46 
    44     boundaries :: Event -> (Int, (NominalDiffTime, Int), (NominalDiffTime, Int), ([Action], [Action]))
    47     boundaries :: Event -> (Int, (NominalDiffTime, Int), (NominalDiffTime, Int), ([Action], [Action]))
    45     boundaries LobbyChatMessage = (3, (10, 2), (30, 3), (chat1, chat2))
    48     boundaries LobbyChatMessage = (3, (10, 2), (30, 3), (chat1, chat2))
    46     boundaries EngineMessage = (8, (10, 4), (25, 5), (em1, em2))
    49     boundaries EngineMessage = (8, (10, 4), (25, 5), (em1, em2))
    47     boundaries RoomJoin = (2, (10, 2), (35, 3), (join1, join2))
    50     boundaries RoomJoin = (2, (10, 2), (35, 3), (join1, join2))
       
    51     boundaries RoomNameUpdate = (\(a, b, c, _) -> (a, b, c, (roomName1, roomName2))) $ boundaries LobbyChatMessage
    48 
    52 
    49     chat1 = [Warning $ loc "Warning! Chat flood protection activated"]
    53     chat1 = [Warning $ loc "Warning! Chat flood protection activated"]
    50     chat2 = [ByeClient $ loc "Excess flood"]
    54     chat2 = [ByeClient $ loc "Excess flood"]
    51     em1 = [Warning $ loc "Game messages flood detected - 1"]
    55     em1 = [Warning $ loc "Game messages flood detected - 1"]
    52     em2 = [ByeClient $ loc "Excess flood"]
    56     em2 = [ByeClient $ loc "Excess flood"]
    53     join1 = [Warning $ loc "Warning! Joins flood protection activated"]
    57     join1 = [Warning $ loc "Warning! Joins flood protection activated"]
    54     join2 = [ByeClient $ loc "Excess flood"]
    58     join2 = [ByeClient $ loc "Excess flood"]
       
    59     roomName1 = [Warning $ loc "Warning! Room name change flood protection activated"]
       
    60     roomName2 = [ByeClient $ loc "Excess flood"]
    55 
    61 
    56     doCheck ei = do
    62     doCheck ei = do
    57         curTime <- io getCurrentTime
    63         curTime <- io getCurrentTime
    58         let (numPerEntry, (sec1, num1), (sec2, num2), (ac1, ac2)) = boundaries e
    64         let (numPerEntry, (sec1, num1), (sec2, num2), (ac1, ac2)) = boundaries e
    59 
    65