1 14 package org.compiere.www; 15 16 import java.io.*; 17 import java.util.*; 18 import javax.servlet.*; 19 import javax.servlet.http.*; 20 21 import org.apache.log4j.Logger; 22 import org.apache.ecs.xhtml.*; 23 import org.compiere.util.*; 24 25 26 31 32 public final class WFilter implements javax.servlet.Filter 33 { 34 36 private FilterConfig m_filterConfig = null; 37 38 39 private boolean m_timing = false; 40 41 private Logger log = Logger.getLogger(getClass()); 42 43 49 public void init (FilterConfig filterConfig) throws ServletException 50 { 51 m_filterConfig = filterConfig; 52 log.info("WFilter.init - " + filterConfig.getFilterName()); 54 Enumeration en = filterConfig.getInitParameterNames(); 55 while (en.hasMoreElements()) 56 { 57 String name = en.nextElement().toString(); 58 String value = filterConfig.getInitParameter(name); 59 log.info(" - " + name + "=" + value); 60 if (name.equals("Timing") && value.equals("Y")) 61 m_timing = true; 62 } 63 } 65 68 public void destroy() 69 { 70 m_filterConfig = null; 71 } 73 84 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 85 throws IOException, ServletException 86 { 87 String uri = ""; 89 if (request instanceof HttpServletRequest) 90 { 91 HttpServletRequest req = (HttpServletRequest)request; 92 uri = req.getRequestURI(); 93 } 94 95 boolean check = true; 97 if (!uri.startsWith(WEnv.DIR_BASE) || uri.endsWith(".gif") || uri.endsWith(".html") || uri.endsWith(".css") 99 || uri.endsWith(".js")) 100 check = false; 101 boolean pass = true; 103 104 StringBuffer sb = new StringBuffer ("| Parameters"); 106 if (check) 107 { 108 Enumeration en = request.getParameterNames(); 110 while (en.hasMoreElements()) 111 { 112 String name = (String )en.nextElement(); 113 sb.append(" - ").append(name).append("=").append(request.getParameter(name)); 114 } 115 if (uri.endsWith("WWindowStatus")) 116 pass = false; 117 } 118 if (pass && check) 119 log.info("Start " + uri + sb.toString()); 120 121 long myTime = 0l; 123 if (pass && check && m_timing) 124 myTime = System.currentTimeMillis(); 125 126 if (pass) 128 chain.doFilter(request, response); 129 else 130 { 131 log.warn("Rejected " + uri); 132 String msg = "Error: Access Rejected"; 133 WDoc doc = WDoc.create (msg); 134 body b = doc.getBody(); 136 b.addElement(new p(uri, "center")); 137 response.setContentType("text/html"); 139 PrintWriter out = new PrintWriter (response.getOutputStream()); 140 doc.output(out); 141 out.close(); 142 } 143 144 if (check && pass) 146 { 147 if (m_timing) 148 myTime = System.currentTimeMillis() - myTime; 149 log.info("End " + uri + "| " + (m_timing ? String.valueOf(myTime) : null)); 150 } 151 } 153 154 158 public String toString() 159 { 160 if (m_filterConfig == null) 161 return ("WFilter()"); 162 StringBuffer sb = new StringBuffer ("WFilter("); 163 sb.append(m_filterConfig); 164 sb.append(")"); 165 return (sb.toString()); 166 } 168 } | Popular Tags |