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 |