86 lines
2.9 KiB
Java
86 lines
2.9 KiB
Java
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
|
|
}
|
|
|
|
}
|