import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.net.URI; import java.util.Date; import java.util.Enumeration; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ShardulFilter implements Filter { public void doFilter(ServletRequest req0, ServletResponse res0, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)req0; HttpServletResponse res = (HttpServletResponse)res0; String ref = req.getHeader("Referer"); if (ref != null) { try { URI refUri = new URI(ref); String host = refUri.getHost(); if (host != null && host.toLowerCase().endsWith(".wordpress.com")) { logRequest("redirect", req, null); res.sendRedirect("http://www.forkalsrud.org/stalker.jpg"); return; } } catch (Exception e) { logRequest("error", req, e); } } chain.doFilter(req, res); } private void logRequest(String string, HttpServletRequest req, Exception e) { try { File logfile = new File(System.getProperty("user.home"), "stalker.log"); FileWriter fw = new FileWriter(logfile, true); fw.write("--------------------\n"); fw.write("" + new Date() + "\n"); fw.write("IP: " + req.getRemoteAddr() + " " + req.getRemoteHost() + " " + req.getRequestURL().toString() + "\n"); Enumeration enm = req.getParameterNames(); while (enm.hasMoreElements()) { String param = (String)enm.nextElement(); String[] val = req.getParameterValues(param); for (String s : val) { fw.write("param " + param + ": " + s + "\n"); } } fw.write("\n"); enm = req.getHeaderNames(); while (enm.hasMoreElements()) { String header = (String)enm.nextElement(); String val = req.getHeader(header); fw.write(header + ": " + val + "\n"); } fw.write("\n"); if (e != null) { e.printStackTrace(new PrintWriter(fw, true)); } fw.write("\n"); fw.flush(); fw.close(); } catch (IOException e1) { e1.printStackTrace(); } } public void init(FilterConfig arg0) throws ServletException { // noop } public void destroy() { // noop } }