Package rabbit.filter

Source Code of rabbit.filter.DontFilterFilter

package rabbit.filter;

import java.nio.channels.SocketChannel;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import java.util.regex.Matcher;
import rabbit.http.HttpHeader;
import rabbit.proxy.Connection;
import rabbit.util.Logger;
import rabbit.util.SProperties;
import rabbit.util.PatternHelper;

/** This is a class that makes sure the proxy doesnt filter certain pages.
*  It matches pages based on the URL.
<p>
*  It uses the config option <tt>dontFilterURLmatching</tt>
*  with a default value of the empty string. <br>
*  Matching is done with regular expressions, using find on the url.
*
* @author <a href="mailto:robo@khelekore.org">Robert Olofsson</a>
*/
public class DontFilterFilter implements HttpFilter {
    private Pattern pattern;
    private Pattern uap;

    /**
     */
    public DontFilterFilter () {
    }
   
    /** Test if a socket/header combination is valid or return a new HttpHeader.
     *  If the request matches a certain criteria dont filter it. This filter
     *  is good for pages with broken HTML that would wreck the HTML parser.
     * @param socket the SocketChannel that made the request.
     * @param header the actual request made.
     * @param con the Connection handling the request.
     * @return This filter always returns null
     */
    public HttpHeader doHttpInFiltering (SocketChannel socket,
           HttpHeader header, Connection con) {
  Matcher m = pattern.matcher (header.getRequestURI ());
  if (m.find ())
      con.setMayFilter (false);

  String ua = header.getHeader ("User-Agent");
  if (ua != null) {
      m = uap.matcher (ua);
      if (m.find ())
    con.setMayFilter (false);
  }
  return null;
    }
   
    /** test if a socket/header combination is valid or return a new HttpHeader.
     * @param socket the SocketChannel that made the request.
     * @param header the actual request made.
     * @param con the Connection handling the request.
     * @return This filter always returns null
     */
    public HttpHeader doHttpOutFiltering (SocketChannel socket,
            HttpHeader header, Connection con) {
  return null;
    }

    /** Setup this class with the given properties.
     * @param logger the Logger for errors/warnings.
     * @param properties the new configuration of this class.
     */
    public void setup (Logger logger, SProperties properties) {
  PatternHelper ph = new PatternHelper ();
  pattern = ph.getPattern (properties, "dontFilterURLmatching",
         "DontFilterFilter: bad pattern: ", logger);
  uap = ph.getPattern (properties, "dontFilterAgentsMatching",
           "DontFilterFilter: bad user agent pattern: ",
           logger);
    }
}
TOP

Related Classes of rabbit.filter.DontFilterFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.