KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > chatserver > ChatAuthenticator


1 /*
2  * This file is part of the QuickServer library
3  * Copyright (C) 2003-2005 QuickServer.org
4  *
5  * Use, modification, copying and distribution of this software is subject to
6  * the terms and conditions of the GNU Lesser General Public License.
7  * You should have received a copy of the GNU LGP License along with this
8  * library; if not, you can download a copy from <http://www.quickserver.org/>.
9  *
10  * For questions, suggestions, bug-reports, enhancement-requests etc.
11  * visit http://www.quickserver.org
12  *
13  */

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 /**
23  *
24  * @author Akshathkumar Shetty
25  */

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 JavaDoc 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     /**
82      * This function is used to validate username and password.
83      * May be overridden to change username and/or password.
84      */

85     protected static boolean validate(ClientHandler handler, String JavaDoc username, byte[] password) {
86         return Arrays.equals(password,username.getBytes());
87     }
88     
89     /*
90     //simpler edition of ChatAuthenticator, that would extend QuickAuthenticator
91     public boolean askAuthorisation(ClientHandler handler)
92             throws IOException {
93         String username = askStringInput(handler, "{system.data} Username");
94         String password = askStringInput(handler, "{system.data} Password");
95         String room = askStringInput(handler, "{system.data} Room");
96
97         //no need to check username or username for null : done by QuickAuthenticator
98         
99         if(username.equals(password)) {
100             ChatData cd = (ChatData)handler.getClientData();
101             try {
102                 cd.setUsername(username);
103             } catch(IllegalArgumentException iae) {
104                 sendString(handler, "{system.error} AuthFailed. "+iae.getMessage());
105                 return false;
106             }
107             
108             if(room.length()==0) room = "home";
109
110             cd.setRoom(room); //"home"
111
112             sendString(handler, "{system.ok} Auth Ok");
113             sendString(handler, "{system.msg} Current Chat Room: "+cd.getRoom());
114
115             ChatMessaging.sendInfoMessage2Room(handler, room, "LoggedIn");
116
117             ChatMessaging.printHelp(handler, null);
118             
119             return true;
120         } else {
121             sendString(handler, "{system.error} AuthFailed");
122             return false;
123         }
124     }
125     */

126 }
127
Popular Tags