Update of /var/cvs/contributions/natmm/src/nl/leocms/servlets
In directory james.mmbase.org:/tmp/cvs-serv13683/src/nl/leocms/servlets

Modified Files:
        IPFilter.java 
Log Message:
NMCMS-644 IPFilter implementation


See also: 
http://cvs.mmbase.org/viewcvs/contributions/natmm/src/nl/leocms/servlets
See also: http://www.mmbase.org/jira/browse/NMCMS-644


Index: IPFilter.java
===================================================================
RCS file: /var/cvs/contributions/natmm/src/nl/leocms/servlets/IPFilter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- IPFilter.java       28 Apr 2009 14:06:06 -0000      1.1
+++ IPFilter.java       28 Apr 2009 15:46:57 -0000      1.2
@@ -28,7 +28,8 @@
 
    private FilterConfig config;
    
-   private List allowedIPRanges;  
+   private List allowedIPList; 
+   private boolean IPFilterEnabled;
    
    private static Logger log;
 
@@ -40,16 +41,17 @@
     */
    public void init(FilterConfig filterConfig) throws ServletException {
       this.config = filterConfig;
-      this.allowedIPRanges = new ArrayList();
+      this.allowedIPList = new ArrayList();
+      this.IPFilterEnabled = NatMMConfig.isIPFilterEnabled();
       
-      String allowedIPRangesProperty = NatMMConfig.getAllowedIPRanges();
-      StringTokenizer token = new StringTokenizer(allowedIPRangesProperty, 
",");
+      String allowedIPProperty = NatMMConfig.getAllowedIP();
+      StringTokenizer token = new StringTokenizer(allowedIPProperty, ",");
 
       while (token.hasMoreTokens()) {
-         allowedIPRanges.add(token.nextToken());
+         allowedIPList.add(token.nextToken());
       }      
 
-      log = Logging.getLoggerInstance(UrlInterceptor.class.getName());
+      log = Logging.getLoggerInstance(IPFilter.class.getName());
       log.debug("IPFilter initialized");
    }
 
@@ -64,8 +66,14 @@
     * @throws IOException thrown when an exception occurs
     */
    public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {
-      String ip = request.getRemoteAddr();
 
+      // skip IPFiltering if disabled
+      if (!IPFilterEnabled) {
+         log.debug("Ip filtering disabled.");
+         chain.doFilter(request, response);
+         
+      } else {     
+         String ip = request.getRemoteAddr();
       log.debug("Incoming ip, ip = " + ip);
       
       HttpServletResponse httpResp = null;
@@ -74,29 +82,7 @@
          httpResp = (HttpServletResponse) response;         
       }
 
-      StringTokenizer toke = new StringTokenizer(ip, ".");
-      int dots = 0;
-      String byte1 = "";
-      String byte2 = "";
-      String client = "";
-
-      while (toke.hasMoreTokens()) {
-         ++dots;
-
-         // if we've reached the second dot, break and check out the index 
value
-         if (dots == 1)  {
-            byte1 = toke.nextToken();
-         } else {
-            byte2 = toke.nextToken();
-            break;
-         }
-      }
-      
-      // Piece together half of the client IP address so it can be compared
-      // with the forbidden range represented by IPFilter.IP_RANGE
-      client = byte1 + "." + byte2;
-
-      if (allowedIPRanges.contains(client)) {
+         if (allowedIPList.contains(ip)) {
          log.debug("Ip " + ip + " allowed.");
          chain.doFilter(request, response);
       } else {
@@ -104,6 +90,7 @@
          httpResp.sendError(HttpServletResponse.SC_FORBIDDEN, "That means 
goodbye forever!");
       }
    }
+   }
 
    /**
     * Destroy method
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to