album/src/ShardulFilter.java

87 lines
2.9 KiB
Java
Raw Normal View History

2008-11-24 19:54:24 +00:00
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
}
}