1 package org.claros.chat.ajax; 2 3 import java.io.IOException ; 4 import java.io.PrintWriter ; 5 6 import javax.servlet.ServletException ; 7 import javax.servlet.http.HttpServlet ; 8 import javax.servlet.http.HttpServletRequest ; 9 import javax.servlet.http.HttpServletResponse ; 10 11 import org.apache.commons.logging.Log; 12 import org.apache.commons.logging.LogFactory; 13 import org.claros.chat.controllers.TrafficController; 14 import org.claros.chat.threads.ChatListener; 15 import org.claros.chat.threads.ChatSender; 16 import org.jivesoftware.smack.GoogleTalkConnection; 17 import org.jivesoftware.smack.XMPPConnection; 18 import org.jivesoftware.smack.XMPPException; 19 20 public class Authenticate extends HttpServlet { 21 private static Log log = LogFactory.getLog(Authenticate.class); 22 23 26 private static final long serialVersionUID = 6002125607784963740L; 27 30 public Authenticate() { 31 super(); 32 } 33 34 44 public void doPost(HttpServletRequest request, HttpServletResponse response) 45 throws ServletException , IOException { 46 response.setHeader("Expires","-1"); 47 response.setHeader("Pragma","no-cache"); 48 response.setHeader("Cache-control","no-cache"); 49 50 response.setContentType("text/html"); 51 PrintWriter out = response.getWriter(); 52 53 String username = request.getParameter("username"); 54 request.getSession().setAttribute("user", username); 55 String password = request.getParameter("password"); 56 String server = request.getParameter("server"); 57 58 try { 59 XMPPConnection connection = null; 60 if (server == null || server.equals("Google Talk")) { 61 try { 62 connection = new GoogleTalkConnection(); 63 if (username.indexOf("@") > 0) { 64 username = username.substring(0, username.indexOf("@")); 65 } 66 } catch (Exception e1) { 67 throw e1; 68 } 69 } else { 70 try { 71 connection = new XMPPConnection(server, 5222); 72 } catch (Exception e1) { 73 throw e1; 74 } 75 } 76 77 try { 78 connection.login(username, password); 79 log.debug("connection established for user: " + username); 80 } catch (XMPPException e) { 81 throw e; 82 } 83 request.getSession().setAttribute("conn", connection); 84 85 String user = connection.getUser(); 87 if (request.getSession().getAttribute("listener") == null) { 88 ChatListener list = new ChatListener(user, connection); 89 TrafficController.addListener(user, list); 90 list.start(); 91 log.debug("listener created and added to the traffic controller for user: " + username); 92 } 93 94 if (request.getSession().getAttribute("sender") == null) { 95 ChatSender sender = new ChatSender(username, connection); 97 TrafficController.addSender(user, sender); 98 sender.start(); 99 log.debug("sender created and added to the traffic controller for user: " + username); 100 } 101 102 out.print("ok"); 103 } catch (Exception e) { 104 out.print("fail"); 105 } 106 log.debug("authentication complete finishing servlet for user: " + username); 107 } 110 } 111 | Popular Tags |