1 14 package org.compiere.wstore; 15 16 import javax.servlet.*; 17 import javax.servlet.http.*; 18 import java.io.*; 19 import java.util.*; 20 import java.sql.*; 21 22 import org.compiere.www.*; 23 import org.compiere.model.*; 24 import org.compiere.util.*; 25 26 38 public class Click extends HttpServlet implements Runnable 39 { 40 41 private Logger log = Logger.getCLogger(getClass()); 42 43 44 static public final String NAME = "click"; 45 46 47 static public final String PARA_TARGET = "target"; 48 static public final String DEFAULT_TARGET = "http://www.compiere.org/"; 49 50 51 private List m_requests = Collections.synchronizedList(new ArrayList()); 52 53 59 public void init(ServletConfig config) 60 throws ServletException 61 { 62 super.init(config); 63 if (!WEnv.initWeb(config)) 64 throw new ServletException("Click.init"); 65 } 67 71 public String getServletInfo() 72 { 73 return "Compiere Click Servlet"; 74 } 76 79 public void destroy() 80 { 81 log.debug("destroy"); 82 } 84 85 86 94 public void doGet(HttpServletRequest request, HttpServletResponse response) 95 throws ServletException, IOException 96 { 97 String url = getTargetURL(request); 98 response.sendRedirect(url); 99 response.flushBuffer(); 100 log.debug("redirect - " + url); 102 m_requests.add(request); 103 new Thread (this).start(); 104 } 106 114 public void doPost(HttpServletRequest request, HttpServletResponse response) 115 throws ServletException, IOException 116 { 117 doGet (request, response); 118 } 120 128 private String getTargetURL (HttpServletRequest request) 129 { 130 String url = request.getParameter(PARA_TARGET); 132 if (url == null || url.length() == 0) 134 { 135 Enumeration e = request.getParameterNames (); 136 if (e.hasMoreElements ()) 137 url = (String )e.nextElement (); 138 } 139 if (url == null || url.length() == 0) 141 { 142 url = request.getPathInfo (); 143 if (url != null) 144 url = url.substring(1); } 146 if (url == null || url.length() == 0) 148 url = DEFAULT_TARGET; 149 if (url.indexOf("://") == -1) 151 url = "http://" + url; 152 return url; 153 } 155 156 157 158 161 public void run() 162 { 163 long time = System.currentTimeMillis(); 164 HttpServletRequest request = null; 166 if (m_requests.size() > 0) 167 request = (HttpServletRequest)m_requests.remove(0); 168 if (request == null) 169 { 170 log.error("run - nothing in queue"); 171 return; 172 } 173 174 Properties ctx = JSPEnv.getCtx(request); 176 String url = getTargetURL(request); 177 MClick mc = new MClick (ctx, url); 179 mc.setRemote_Addr(request.getRemoteAddr()); 180 mc.setRemote_Host(request.getRemoteHost()); 181 String ref = request.getHeader("referer"); 182 if (ref == null || ref.length() == 0) 183 ref = request.getRequestURL().toString(); 184 mc.setReferrer(ref); 185 mc.setAcceptLanguage(request.getHeader("accept-language")); 187 mc.setUserAgent(request.getHeader("user-agent")); 188 HttpSession session = request.getSession(false); 190 if (session != null) 191 { 192 WebUser wu = (WebUser)session.getAttribute (WebUser.NAME); 193 if (wu != null) 194 { 195 mc.setEmail (wu.getEmail()); 196 mc.setAD_User_ID (wu.getAD_User_ID()); 197 } 198 } 199 mc.save(); 200 log.debug("run - end " + (System.currentTimeMillis()-time) + "ms"); 201 } 203 } | Popular Tags |