package dk.thoerup.traininfoservice; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RequestPlotter extends HttpServlet { private static final long serialVersionUID = 1L; static final Logger log = Logger.getLogger(RequestPlotter.class.getName()); protected String getKml() { StringBuilder sb = new StringBuilder(); try { FileInputStream fis = new FileInputStream("/var/log/apache2/access.log"); BufferedReader in = new BufferedReader( new InputStreamReader(fis) ); sb.append( "\n" ); sb.append( "\n" ); sb.append( "\n" ); String line; while ( (line=in.readLine()) != null) { if (line.indexOf("LocateStation") == -1 ){ continue; } if (line.indexOf("latitude") == -1 ) { continue; } String toks[] = line.split(" "); String ip = toks[0]; String time = toks[3].replace("[", ""); String argpart = toks[6].split("?")[1]; String args[] = argpart.split("&"); String lat = args[0].split("=")[1]; String lng = args[0].split("=")[1]; sb.append( " " ); sb.append( " IP=" + ip + " Time=" + time + "" ); sb.append( " " + lng + "," + lat + ",0" ); sb.append( " " ); } sb.append( "\n" ); sb.append( "\n" ); } catch (Exception e) { sb.append(""); log.log(Level.SEVERE, "getKml()", e); } return sb.toString(); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("application/vnd.google-earth.kml"); resp.getWriter().print( getKml() ); } }