读书人

判断每个ip是不是在以个指定的IP段内

发布时间: 2012-09-06 10:37:01 作者: rapoo

判断每个ip是否在以个指定的IP段内

Java代码  package com.tiansong.infosafetranflag.safe.www;           import java.io.IOException;      import java.util.Iterator;      import java.util.List;           import javax.servlet.Filter;      import javax.servlet.FilterChain;      import javax.servlet.FilterConfig;      import javax.servlet.ServletException;      import javax.servlet.ServletRequest;      import javax.servlet.ServletResponse;      import javax.servlet.http.HttpServletRequest;      import javax.servlet.http.HttpServletResponse;           import com.tiansong.infosafetranflag.safe.system.entity.IPItem;      import com.tiansong.infosafetranflag.safe.system.service.IPItemService;      import com.tiansong.infosafetranflag.safe.system.service.ServiceFactory;      import com.tiansong.infosafetranflag.safe.system.service.dao.DAOServiceFactory;           public class RemoteHostFilter implements Filter {               public RemoteHostFilter() {          }               public void doFilter(ServletRequest request, ServletResponse response,                  FilterChain chain) throws IOException, ServletException {              HttpServletRequest req = (HttpServletRequest) request;              HttpServletResponse resp = (HttpServletResponse) response;              // 取得本机的IP地址              //InetAddress localAddress = InetAddress.getLocalHost();                   //String ipAddress = localAddress.getHostAddress();                            String ipAddress = req.getRemoteHost();      System.out.println(ipAddress);              long ip = getIpNum(ipAddress);                   ServiceFactory factory = new DAOServiceFactory();              try {                  IPItemService ipService = factory.createIPItemService();                       // 从数据库中取出所有的IP段                  List ipList = ipService.getAllIPItem();                  if (ipList.size() > 0 && ipList != null) {                      for (Iterator it = ipList.iterator(); it.hasNext();) {                          IPItem item = (IPItem) it.next();                          String startIp = item.getStartIp();                          String endIp = item.getEndIp();                          long start_ip = getIpNum(startIp);                          long end_ip = getIpNum(endIp);                               if (isInner(ip, start_ip, end_ip)) {                              if (item.getStatus().equals("1")                                      || item.getStatus().equals("true")) {                                  //System.out.println("你的IP已被屏蔽,请跟管理员联系!");                                  //resp.sendError(404);                                  resp.sendRedirect(req.getContextPath()                                          + "/NoSecurity.html");                                  return;                              }                          }                      }                  }                   } catch (Exception e) {              }              chain.doFilter(request, response);          }               public void destroy() {               }               public void init(FilterConfig filterConfig) {               }               /**         * 分割IP         *          * @param ipAddress         * @return         */         private static long getIpNum(String ipAddress) {              String[] ip = ipAddress.split("\\.");              long a = Integer.parseInt(ip[0]);              long b = Integer.parseInt(ip[1]);              long c = Integer.parseInt(ip[2]);              long d = Integer.parseInt(ip[3]);                   long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;              return ipNum;          }               /**         * 判断客户端的IP是否在某个ip段中         *          * @param clientIp         *            客户端的IP         * @param begin         *            开始IP         * @param end         *            结束IP         * @return         */         private static boolean isInner(long clientIp, long begin, long end) {              return (clientIp >= begin) && (clientIp <= end);          }           }    package com.tiansong.infosafetranflag.safe.www;     import java.io.IOException;   import java.util.Iterator;   import java.util.List;     import javax.servlet.Filter;   import javax.servlet.FilterChain;   import javax.servlet.FilterConfig;   import javax.servlet.ServletException;   import javax.servlet.ServletRequest;   import javax.servlet.ServletResponse;   import javax.servlet.http.HttpServletRequest;   import javax.servlet.http.HttpServletResponse;     import com.tiansong.infosafetranflag.safe.system.entity.IPItem;   import com.tiansong.infosafetranflag.safe.system.service.IPItemService;   import com.tiansong.infosafetranflag.safe.system.service.ServiceFactory;   import com.tiansong.infosafetranflag.safe.system.service.dao.DAOServiceFactory;     public class RemoteHostFilter implements Filter {         public RemoteHostFilter() {       }         public void doFilter(ServletRequest request, ServletResponse response,               FilterChain chain) throws IOException, ServletException {           HttpServletRequest req = (HttpServletRequest) request;           HttpServletResponse resp = (HttpServletResponse) response;           // 取得本机的IP地址           //InetAddress localAddress = InetAddress.getLocalHost();             //String ipAddress = localAddress.getHostAddress();                      String ipAddress = req.getRemoteHost();   System.out.println(ipAddress);           long ip = getIpNum(ipAddress);             ServiceFactory factory = new DAOServiceFactory();           try {               IPItemService ipService = factory.createIPItemService();                 // 从数据库中取出所有的IP段               List ipList = ipService.getAllIPItem();               if (ipList.size() > 0 && ipList != null) {                   for (Iterator it = ipList.iterator(); it.hasNext();) {                       IPItem item = (IPItem) it.next();                       String startIp = item.getStartIp();                       String endIp = item.getEndIp();                       long start_ip = getIpNum(startIp);                       long end_ip = getIpNum(endIp);                         if (isInner(ip, start_ip, end_ip)) {                           if (item.getStatus().equals("1")                                   || item.getStatus().equals("true")) {                               //System.out.println("你的IP已被屏蔽,请跟管理员联系!");                               //resp.sendError(404);                               resp.sendRedirect(req.getContextPath()                                       + "/NoSecurity.html");                               return;                           }                       }                   }               }             } catch (Exception e) {           }           chain.doFilter(request, response);       }         public void destroy() {         }         public void init(FilterConfig filterConfig) {         }         /**       * 分割IP       *        * @param ipAddress       * @return       */      private static long getIpNum(String ipAddress) {           String[] ip = ipAddress.split("\\.");           long a = Integer.parseInt(ip[0]);           long b = Integer.parseInt(ip[1]);           long c = Integer.parseInt(ip[2]);           long d = Integer.parseInt(ip[3]);             long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;           return ipNum;       }         /**       * 判断客户端的IP是否在某个ip段中       *        * @param clientIp       *            客户端的IP       * @param begin       *            开始IP       * @param end       *            结束IP       * @return       */      private static boolean isInner(long clientIp, long begin, long end) {           return (clientIp >= begin) && (clientIp <= end);       }     }  js判断是否是ip字符串 Js代码  function iptest(v){              var ip = /^([1-9][0-9]{0,1}|1[013-9][0-9]|12[0-689]|2[01][0-9]|22[0-3])([.]([1-9]{0,1}[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-4])$/;              return ip.test(v);          }   

?

读书人网 >编程

热点推荐