Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/alicebot/server/core/responder/HTMLResponder.java


1   // Decompiled by Jad v1.5.8c. Copyright 2001 Pavel Kouznetsov.
2   // Jad home page: http://www.geocities.com/kpdus/jad.html
3   // Decompiler options: packimports(3) 
4   
5   package org.alicebot.server.core.responder;
6   
7   import java.io.*;
8   import java.util.*;
9   import javax.servlet.http.*;
10  import org.alicebot.server.core.*;
11  import org.alicebot.server.core.logging.Log;
12  import org.alicebot.server.core.util.SuffixFilenameFilter;
13  import org.alicebot.server.core.util.Trace;
14  
15  // Referenced classes of package org.alicebot.server.core.responder:
16  //            AbstractMarkupResponder
17  
18  public class HTMLResponder extends AbstractMarkupResponder
19  {
20  
21      public HTMLResponder(String s, String s1)
22          throws IOException
23      {
24          super(s);
25          if(s1.equals(""))
26          {
27              parseTemplate(chatTemplatePath);
28          } else
29          {
30              String s2 = (String)templates.get(s1);
31              if(s2 != null)
32                  parseTemplate(s2);
33              else
34                  parseTemplate(chatTemplatePath);
35          }
36      }
37  
38      public static String loginRequest()
39      {
40          return loginRequest("", "");
41      }
42  
43      public static String loginRequest(String s, String s1)
44      {
45          if(loginTemplate != null)
46          {
47              StringBuffer stringbuffer = new StringBuffer();
48              StringBuffer stringbuffer1;
49              for(ListIterator listiterator = loginTemplate.listIterator(0); listiterator.hasNext(); stringbuffer.append(stringbuffer1.toString()))
50              {
51                  String s2 = (String)listiterator.next();
52                  stringbuffer1 = new StringBuffer(s2);
53                  int i = 0;
54                  if((i = s2.indexOf("name=\"user\"")) != -1 && (i = s2.indexOf("value=\"\"")) != -1)
55                      stringbuffer1.replace(i + 6, i + 7, "\"" + s + "\"");
56                  if((i = s2.indexOf("name=\"password\"")) != -1 && (i = s2.indexOf("value=\"\"")) != -1)
57                      stringbuffer1.replace(i + 6, i + 7, "\"" + s1 + "\"");
58              }
59  
60              return stringbuffer.toString();
61          } else
62          {
63              return "";
64          }
65      }
66  
67      public static String registerRequest()
68      {
69          StringBuffer stringbuffer = new StringBuffer("");
70          if(registerTemplate != null)
71          {
72              for(ListIterator listiterator = registerTemplate.listIterator(0); listiterator.hasNext(); stringbuffer.append((String)listiterator.next()));
73              return stringbuffer.toString();
74          } else
75          {
76              return "";
77          }
78      }
79  
80      public static String changePasswordRequest()
81      {
82          if(changePasswordTemplate != null)
83          {
84              StringBuffer stringbuffer = new StringBuffer("");
85              for(ListIterator listiterator = changePasswordTemplate.listIterator(0); listiterator.hasNext(); stringbuffer.append((String)listiterator.next()));
86              return stringbuffer.toString();
87          } else
88          {
89              return "";
90          }
91      }
92  
93      public String authenticate(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, String s)
94      {
95          int i = 0;
96          Cookie acookie[] = httpservletrequest.getCookies();
97          boolean flag = false;
98          HttpSession httpsession = httpservletrequest.getSession(true);
99          int j = acookie.length;
100         for(int k = 0; k < j; k++)
101         {
102             if(acookie[k].getName().equals("alicebot_user"))
103             {
104                 user = acookie[k].getValue();
105                 flag = true;
106             }
107             if(acookie[k].getName().equals("alicebot_password"))
108                 password = acookie[k].getValue();
109         }
110 
111         String s1 = httpservletrequest.getParameter("user");
112         String s2 = httpservletrequest.getParameter("password");
113         String s3 = httpservletrequest.getParameter("oldPassword");
114         String s4 = httpservletrequest.getParameter("password1");
115         if(parameterEquals(httpservletrequest, "login", "yes"))
116         {
117             i |= 8;
118             i |= 4;
119         } else
120         if(parameterEquals(httpservletrequest, "change-password", "yes"))
121         {
122             i |= 0x20;
123             i |= 1;
124         } else
125         if(parameterEquals(httpservletrequest, "checkauth", "auth"))
126         {
127             i |= 8;
128             i |= 1;
129         } else
130         if(parameterEquals(httpservletrequest, "register", "yes"))
131         {
132             i |= 0x10;
133             i |= 4;
134         } else
135         if(parameterEquals(httpservletrequest, "register", "auth"))
136         {
137             i |= 0x10;
138             i |= 1;
139         } else
140         if(flag)
141         {
142             if(ActiveMultiplexor.getInstance().checkUser(user, password, SECRET_KEY, botid))
143                 i |= 0x80;
144             else
145             if(makeNewCookies(httpservletresponse))
146             {
147                 Trace.devinfo("Found invalid cookie but created new one because autocookie is on.");
148                 i |= 0x80;
149             } else
150             {
151                 Log.userinfo("Server error: Could not create new user using autocookie.", Log.ERROR);
152                 return loginRequest();
153             }
154         } else
155         if(autocookie)
156         {
157             if(makeNewCookies(httpservletresponse))
158             {
159                 i |= 0x80;
160             } else
161             {
162                 Log.userinfo("Server error: Could not create new user using autocookie.", Log.ERROR);
163                 return loginRequest();
164             }
165         } else
166         {
167             return loginRequest();
168         }
169         if((i & 1) == 1)
170             if(s1 != null)
171             {
172                 if(s2 != null)
173                 {
174                     if((i & 8) == 8)
175                         i |= 2;
176                     else
177                     if(s4 != null)
178                     {
179                         if((i & 0x10) == 16)
180                         {
181                             if(s2.equals(s4))
182                                 i |= 2;
183                             else
184                                 return "<p>Invalid user id or password.</p>" + registerRequest();
185                         } else
186                         if((i & 0x20) == 32)
187                             if(s2.equals(s3))
188                                 i |= 2;
189                             else
190                                 return "<p>Password mismatch.</p>" + changePasswordRequest();
191                     } else
192                     {
193                         i |= 4;
194                     }
195                 } else
196                 {
197                     i |= 4;
198                 }
199             } else
200             {
201                 i |= 4;
202             }
203         if((i & 2) == 2)
204         {
205             if((i & 8) == 8)
206             {
207                 if(ActiveMultiplexor.getInstance().checkUser(s1, s2, SECRET_KEY, botid))
208                 {
209                     Cookie cookie = new Cookie("alicebot_user", s1);
210                     Cookie cookie2 = new Cookie("alicebot_password", s2);
211                     cookie.setMaxAge(0xf4240);
212                     cookie2.setMaxAge(0xf4240);
213                     httpservletresponse.addCookie(cookie);
214                     httpservletresponse.addCookie(cookie2);
215                     httpsession.setAttribute("alicebot_user", user);
216                     i |= 0x100;
217                 } else
218                 {
219                     return "<p>Invalid user id or password.</p>" + loginRequest();
220                 }
221             } else
222             if((i & 0x20) == 32)
223             {
224                 if(ActiveMultiplexor.getInstance().checkUser(user, s3, SECRET_KEY, botid))
225                 {
226                     Cookie cookie1 = new Cookie("alicebot_password", s2);
227                     cookie1.setMaxAge(0xf4240);
228                     httpservletresponse.addCookie(cookie1);
229                     i |= 0x100;
230                 } else
231                 {
232                     return "<p>Invalid user id or password.</p>" + loginRequest();
233                 }
234             } else
235             if((i & 0x10) == 16)
236                 if(ActiveMultiplexor.getInstance().createUser(s1, s2, SECRET_KEY, botid))
237                     i |= 0x100;
238                 else
239                     return "<p>User id already exists.</p>" + registerRequest();
240         } else
241         if((i & 4) == 4)
242         {
243             if((i & 8) == 8)
244                 return loginRequest();
245             if((i & 0x10) == 16)
246                 return registerRequest();
247             if((i & 0x20) == 32)
248                 return changePasswordRequest();
249         }
250         if((i & 0x80) == 128)
251         {
252             httpsession.setAttribute("alicebot_user", user);
253             return null;
254         }
255         if((i & 0x100) == 256)
256         {
257             if((i & 8) == 8)
258             {
259                 httpsession.setAttribute("alicebot_user", user);
260                 return null;
261             }
262             if((i & 0x10) == 16)
263                 return "<p>Successfully registered.</p>" + loginRequest(s1, s2);
264             if((i & 0x20) == 16)
265                 return "<p>Successfully changed password.</p>" + loginRequest(s1, s2);
266             else
267                 return "<p>Developer error.  Please login.</p>" + loginRequest();
268         } else
269         {
270             return "<p>Developer error.  Please login.</p>" + loginRequest();
271         }
272     }
273 
274     private static boolean parameterEquals(HttpServletRequest httpservletrequest, String s, String s1)
275     {
276         String s2 = httpservletrequest.getParameter(s);
277         if(s2 != null)
278             return s2.equals(s1);
279         else
280             return false;
281     }
282 
283     private boolean makeNewCookies(HttpServletResponse httpservletresponse)
284     {
285         StringBuffer stringbuffer = new StringBuffer(17);
286         StringBuffer stringbuffer1 = new StringBuffer(10);
287         stringbuffer.append("webuser");
288         long l = System.currentTimeMillis();
289         stringbuffer.append(l);
290         stringbuffer1.append(l);
291         for(int j = 6; --j > 0;)
292         {
293             int i = (int)(Math.random() * 5D);
294             stringbuffer.append(i);
295             stringbuffer1.append(i);
296         }
297 
298         user = stringbuffer.toString();
299         password = stringbuffer1.toString();
300         Cookie cookie = new Cookie("alicebot_user", user);
301         Cookie cookie1 = new Cookie("alicebot_password", password);
302         cookie.setMaxAge(0xf4240);
303         cookie1.setMaxAge(0xf4240);
304         httpservletresponse.addCookie(cookie);
305         httpservletresponse.addCookie(cookie1);
306         return ActiveMultiplexor.getInstance().createUser(user, password, SECRET_KEY, botid);
307     }
308 
309     private static final SuffixFilenameFilter htmlFilenameFilter;
310     private static HashMap templates;
311     private static final String templatesDirectoryName;
312     private static String chatTemplatePath;
313     private static final String registerTemplatePath;
314     private static final String loginTemplatePath;
315     private static final String changePasswordTemplatePath;
316     private static boolean requirelogin = Boolean.valueOf(Globals.getProperty("programd.httpserver.requirelogin", "false")).booleanValue();
317     private static boolean autocookie = Boolean.valueOf(Globals.getProperty("programd.httpserver.autocookie", "true")).booleanValue();
318     private static LinkedList registerTemplate;
319     private static LinkedList loginTemplate;
320     private static LinkedList changePasswordTemplate;
321     private static final String badUserIDOrPasswordMessage = "<p>Invalid user id or password.</p>";
322     private static final String passwordMismatchMessage = "<p>Password mismatch.</p>";
323     private static final String userAlreadyExistsMessage = "<p>User id already exists.</p>";
324     private static final String successfulRegistrationMessage = "<p>Successfully registered.</p>";
325     private static final String successfulPasswordChangeMessage = "<p>Successfully changed password.</p>";
326     private static final String developerErrorMessage = "<p>Developer error.  Please login.</p>";
327     private static String SECRET_KEY;
328     private static final int QUALIFY = 1;
329     private static final int DO = 2;
330     private static final int SEND_FORM = 4;
331     private static final int LOGIN = 8;
332     private static final int REGISTER = 16;
333     private static final int CHANGE_PASSWORD = 32;
334     private static final int GO_USER = 128;
335     private static final int PROCESS_OK = 256;
336     private static final int BAD_PASSWORD = 512;
337     private static final int PASSWORD_MISMATCH = 1024;
338     public static final String USER_COOKIE_NAME = "alicebot_user";
339     public static final String PASSWORD_COOKIE_NAME = "alicebot_password";
340     private static String user;
341     private static String password;
342 
343     static 
344     {
345         htmlFilenameFilter = new SuffixFilenameFilter(new String[] {
346             ".html", ".htm", ".data", ".php"
347         });
348         templatesDirectoryName = Globals.getProperty("programd.responder.html.template.directory", "templates" + File.separator + "html");
349         chatTemplatePath = templatesDirectoryName + File.separator + Globals.getProperty("programd.responder.html.template.chat-default", "chat.html");
350         registerTemplatePath = templatesDirectoryName + File.separator + Globals.getProperty("programd.responder.html.template.register", "register.html");
351         loginTemplatePath = templatesDirectoryName + File.separator + Globals.getProperty("programd.responder.html.template.login", "login.html");
352         changePasswordTemplatePath = templatesDirectoryName + File.separator + Globals.getProperty("programd.responder.html.template.change-password", "change-password.html");
353         registerTemplate = AbstractMarkupResponder.loadTemplate(registerTemplatePath);
354         loginTemplate = AbstractMarkupResponder.loadTemplate(loginTemplatePath);
355         changePasswordTemplate = AbstractMarkupResponder.loadTemplate(changePasswordTemplatePath);
356         if(SECRET_KEY == null)
357             try
358             {
359                 BufferedReader bufferedreader = new BufferedReader(new FileReader("secret.key"));
360                 SECRET_KEY = bufferedreader.readLine();
361             }
362             catch(FileNotFoundException filenotfoundexception)
363             {
364                 Trace.userinfo("Could not find secret.key file!");
365                 SECRET_KEY = "";
366             }
367             catch(IOException ioexception)
368             {
369                 Trace.userinfo("I/O error reading secret.key file!");
370                 SECRET_KEY = "";
371             }
372         templates = AbstractMarkupResponder.registerTemplates(templatesDirectoryName, htmlFilenameFilter);
373     }
374 }