32 handleCmd_NotEntered :: CmdHandler |
32 handleCmd_NotEntered :: CmdHandler |
33 |
33 |
34 handleCmd_NotEntered ["NICK", newNick] = do |
34 handleCmd_NotEntered ["NICK", newNick] = do |
35 (ci, irnc) <- ask |
35 (ci, irnc) <- ask |
36 let cl = irnc `client` ci |
36 let cl = irnc `client` ci |
37 if not . B.null $ nick cl then return [ProtocolError $ loc "Nickname already chosen"] |
37 if not . B.null $ nick cl then return [ProtocolError $ loc "Nickname already taken."] |
38 else |
38 else |
39 if illegalName newNick then return [ByeClient $ loc "Illegal nickname"] |
39 if illegalName newNick then return [ByeClient $ loc "Illegal nickname! Nicknames must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}"] |
40 else |
40 else |
41 return $ |
41 return $ |
42 ModifyClient (\c -> c{nick = newNick}) : |
42 ModifyClient (\c -> c{nick = newNick}) : |
43 AnswerClients [sendChan cl] ["NICK", newNick] : |
43 AnswerClients [sendChan cl] ["NICK", newNick] : |
44 [CheckRegistered | clientProto cl /= 0] |
44 [CheckRegistered | clientProto cl /= 0] |
45 |
45 |
46 handleCmd_NotEntered ["PROTO", protoNum] = do |
46 handleCmd_NotEntered ["PROTO", protoNum] = do |
47 (ci, irnc) <- ask |
47 (ci, irnc) <- ask |
48 let cl = irnc `client` ci |
48 let cl = irnc `client` ci |
49 if clientProto cl > 0 then return [ProtocolError $ loc "Protocol already known"] |
49 if clientProto cl > 0 then return [ProtocolError $ loc "Protocol already known."] |
50 else |
50 else |
51 if parsedProto == 0 then return [ProtocolError $ loc "Bad number"] |
51 if parsedProto == 0 then return [ProtocolError $ loc "Bad number."] |
52 else |
52 else |
53 return $ |
53 return $ |
54 ModifyClient (\c -> c{clientProto = parsedProto}) : |
54 ModifyClient (\c -> c{clientProto = parsedProto}) : |
55 AnswerClients [sendChan cl] ["PROTO", showB parsedProto] : |
55 AnswerClients [sendChan cl] ["PROTO", showB parsedProto] : |
56 [CheckRegistered | not . B.null $ nick cl] |
56 [CheckRegistered | not . B.null $ nick cl] |
88 #if defined(OFFICIAL_SERVER) |
88 #if defined(OFFICIAL_SERVER) |
89 handleCmd_NotEntered ["CHECKER", protoNum, newNick, password] = do |
89 handleCmd_NotEntered ["CHECKER", protoNum, newNick, password] = do |
90 (ci, irnc) <- ask |
90 (ci, irnc) <- ask |
91 let cl = irnc `client` ci |
91 let cl = irnc `client` ci |
92 |
92 |
93 if parsedProto == 0 then return [ProtocolError $ loc "Bad number"] |
93 if parsedProto == 0 then return [ProtocolError $ loc "Bad number."] |
94 else |
94 else |
95 return $ [ |
95 return $ [ |
96 ModifyClient (\c -> c{clientProto = parsedProto, nick = newNick, webPassword = password, isChecker = True}) |
96 ModifyClient (\c -> c{clientProto = parsedProto, nick = newNick, webPassword = password, isChecker = True}) |
97 , CheckRegistered] |
97 , CheckRegistered] |
98 where |
98 where |