gameServer/EngineInteraction.hs
changeset 8485 7cae79214537
parent 8484 99c14f14f788
child 8496 a06b1598c3a2
equal deleted inserted replaced
8484:99c14f14f788 8485:7cae79214537
    33 
    33 
    34 
    34 
    35 checkNetCmd :: B.ByteString -> (B.ByteString, B.ByteString)
    35 checkNetCmd :: B.ByteString -> (B.ByteString, B.ByteString)
    36 checkNetCmd msg = check decoded
    36 checkNetCmd msg = check decoded
    37     where
    37     where
    38         decoded = liftM splitMessages $ fromEngineMsg msg
    38         decoded = liftM (splitMessages . BW.pack) $ Base64.decode $ B.unpack msg
    39         check Nothing = (B.empty, B.empty)
    39         check Nothing = (B.empty, B.empty)
    40         check (Just msgs) = let (a, b) = (filter isLegal msgs, filter isNonEmpty a) in (encode a, encode b)
    40         check (Just msgs) = let (a, b) = (filter isLegal msgs, filter isNonEmpty a) in (encode a, encode b)
    41         encode = B.pack . Base64.encode . BW.unpack . B.concat
    41         encode = B.pack . Base64.encode . BW.unpack . B.concat
    42         isLegal = flip Set.member legalMessages . B.head
    42         isLegal m = (B.length m > 1) && (flip Set.member legalMessages . B.head . B.tail $ m)
    43         isNonEmpty = (/=) '+' . B.head
    43         isNonEmpty = (/=) '+' . B.head
    44         legalMessages = Set.fromList $ "M#+LlRrUuDdZzAaSjJ,sNpPwtghbc12345" ++ slotMessages
    44         legalMessages = Set.fromList $ "M#+LlRrUuDdZzAaSjJ,sNpPwtghbc12345" ++ slotMessages
    45         slotMessages = "\128\129\130\131\132\133\134\135\136\137\138"
    45         slotMessages = "\128\129\130\131\132\133\134\135\136\137\138"
    46 
    46 
    47 
    47