FileDocCategorySizeDatePackage
IPFilter.javaAPI DocExample2001Wed Jul 30 16:08:30 BST 2003com.jspservletcookbook

IPFilter.java

package com.jspservletcookbook;

import java.io.IOException;
import java.util.StringTokenizer;

import javax.servlet.*;
import javax.servlet.http.*;

public class IPFilter implements Filter {
    
    private FilterConfig config;
    public final static String IP_RANGE = "192.168";
    
    public IPFilter() {}
    
    public void  init(FilterConfig filterConfig)  throws ServletException {
    
      this.config = filterConfig;
      
    }
    
    public void  doFilter(ServletRequest request, ServletResponse response, 
      FilterChain chain) throws IOException, ServletException {
        
        String ip = request.getRemoteAddr();

        HttpServletResponse httpResp = null;
        
        if (response instanceof HttpServletResponse)
            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 indx value    
            if (dots == 1){
            
                byte1 = toke.nextToken();
                
            } else {
            
                byte2 = toke.nextToken();
                break;
            }
        }//while
        
        //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 (IP_RANGE.equals(client)){
        
            httpResp.sendError(HttpServletResponse.SC_FORBIDDEN,
			    "That means goodbye forever!" );
            
        } else {
        
            chain.doFilter(request,response);
        }
        
    }// doFilter
    
    public void destroy(){
        /*called before the Filter instance is removed 
        from service by the web container*/
    }
    
}