1 14 15 package chatserver; 16 17 import org.quickserver.net.server.*; 18 import java.io.*; 19 import java.util.*; 20 import org.quickserver.net.*; 21 22 26 public class ChatAuthenticator extends QuickAuthenticationHandler { 27 public AuthStatus askAuthentication(ClientHandler handler) 28 throws IOException, AppException { 29 ChatData data = (ChatData) handler.getClientData(); 30 data.setLastAsked("U"); 31 handler.sendClientMsg("{system.data} Username"); 32 return null; 33 } 34 35 public AuthStatus handleAuthentication(ClientHandler handler, String command) 36 throws IOException, AppException { 37 ChatData data = (ChatData)handler.getClientData(); 38 39 if(data.getLastAsked().equals("U")) { 40 data.setUsername(command); 41 data.setLastAsked("P"); 42 handler.sendClientMsg("{system.data} Password"); 43 return null; 44 } 45 46 if(data.getLastAsked().equals("P")) { 47 data.setPassword(command.getBytes()); 48 data.setLastAsked("R"); 49 handler.sendClientMsg("{system.data} Room"); 50 return null; 51 } 52 53 if(data.getLastAsked().equals("R")) { 54 if(data.registerUsername(data.getUsername())==false) { 55 handler.sendClientMsg("{system.error} AuthFailed. Username taken!"); 56 data.setUsername(null); 57 return AuthStatus.FAILURE; 58 } 59 60 if(validate(handler, data.getUsername(), data.getPassword())) { 61 data.setRoom(command); 62 handler.sendClientMsg("{system.ok} Auth Ok"); 63 handler.sendClientMsg("{system.msg} Current Chat Room: "+data.getRoom()); 64 data.setPassword(null); 65 66 ChatMessaging.sendInfoMessage2Room(handler, data.getRoom(), "LoggedIn"); 67 ChatMessaging.printHelp(handler, null); 68 69 return AuthStatus.SUCCESS; 70 } else { 71 handler.sendClientMsg("{system.error} AuthFailed"); 72 data.deregisterUsername(data.getUsername()); 73 data.setPassword(null); 74 return AuthStatus.FAILURE; 75 } 76 } else { 77 throw new AppException("Unknown LastAsked!"); 78 } 79 } 80 81 85 protected static boolean validate(ClientHandler handler, String username, byte[] password) { 86 return Arrays.equals(password,username.getBytes()); 87 } 88 89 126 } 127 | Popular Tags |