package kr.or.ddit.filter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IPCheckFilter implements Filter {
private Map<String, String> ipMap; //ip 정보가 저장될 Map 객체 변수 선언
public void init(FilterConfig fConfig) throws ServletException {
ipMap = new HashMap<>();
// 허용되는 IP와 불허되는 의 IP 정보를 구성한다.
// 값이 OK는 허용, NO 는 불허
ipMap.put("192.168.42.48", "OK"); //내 아이피 주소
ipMap.put("127.0.0.1", "OK"); // 로컬 호스트
ipMap.put("0:0:0:0:0:0:0:1", "OK");
ipMap.put("192.168.42.38", "NO");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String ip = request.getRemoteAddr(); //접속한 ip 주소 구하기
System.out.println("접속 IP : " + ip);
if(ip != null && ipMap.containsKey(ip)) {
System.out.println("값 ==> " + ipMap.get(ip));
if("OK".equals(ipMap.get(ip))) {
chain.doFilter(request, response);
}else {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<h2>접근이 거부된 IP 입니다. </h2>");
out.println("<h2>관리자에게 문의하세요</h2>");
}
}else { //목록에 없는 경우
//목록에 없으면 무조건 특정한 페이지로 이동시킨다.
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse )response;
res.sendRedirect(req.getContextPath() + "/servletTest.do");
}
}
public void destroy() {
}
}
댓글
댓글 쓰기