'sslFilter'에 해당되는 글 1건

  1. 2010.12.12 sslFilter 적용하기

/**
 *
 */
package kr.co.khfc.filter;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Enumeration;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import kr.co.khfc.common.config.ApplicationConfig;
import kr.co.khfc.common.util.common.VariableMapping;
import kr.co.khfc.common.util.lang.StringUtil;

/**
 * @author KimJongMoon(mun@crimsonred.co.kr)
 * @date 2010. 12. 11.
 *
 */
public class SSLFilter implements Filter {
 protected static FilterConfig config = null;
 protected static ServletContext context = null;

 public void init(FilterConfig config) throws ServletException {
  SSLFilter.config = config;
  context = config.getServletContext();
 }

 public void destroy() {
  config = null;
 }

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  HttpSession session = null;

  HttpServletRequest req = (HttpServletRequest) request;
  HttpServletResponse res = (HttpServletResponse) response;

  if (request instanceof HttpServletRequest) {
   req = (HttpServletRequest) request;
   session = req.getSession();
  }

  String reqUrl = req.getRequestURI();
  if (reqUrl.indexOf(".jpg") > -1 || reqUrl.indexOf(".css") > -1 || reqUrl.indexOf(".gif") > -1 || reqUrl.indexOf(".png") > -1) {
  //if (reqUrl.indexOf("/images/") > -1 || reqUrl.indexOf("/css/") > -1 || reqUrl.indexOf("/script/") > -1 || reqUrl.indexOf("/xml/") > -1) {
  } else {
   //res.setCharacterEncoding("EUC-KR");
   res.setContentType("text/html; charset=euc-kr");
   PrintWriter out = res.getWriter();

   ArrayList sslList = VariableMapping.getVariableArrayList("ssl.xml", "SSL");

   if (req.getServerPort() == 80) {
    boolean urlCheck = false;
    for (int i = 0; i < sslList.size(); i++) {
     if (reqUrl.indexOf((String) sslList.get(i)) > -1) {
      urlCheck = true;
      if (urlCheck)
       break;
     }
    }
    if (urlCheck) {
     String url = ApplicationConfig.getString("ssl.domain") + ":" + ApplicationConfig.getString("ssl.port");
     url += req.getRequestURI();
     url += (req.getQueryString() == null ? "" : "?" + req.getQueryString());

     StringBuffer buf = new StringBuffer();
     buf.append("<html>\n");
     buf.append("<head></head>\n");
     buf.append("<body>\n");
     buf.append("<form action='"+url+"' name='mainForm' method='post'>\n");
     Enumeration e = request.getParameterNames();
     String name = null;
     while (e.hasMoreElements()){
      name = e.nextElement().toString();
      buf.append("<input type='hidden' name='"+ name +"' value='"+StringUtil.toString(request.getParameter(name))+"'>\n");
     }
     buf.append("<script language=javascript>\n<!--\n");
     buf.append("mainForm.submit();\n");
     buf.append("//-->\n</script>\n");
     buf.append("</body>\n");
     buf.append("</html>\n");

     out.println(buf);
     //res.sendRedirect(url);
    }
   } else if (req.getServerPort() == 7443) {

    boolean urlCheck = false;
    for (int i = 0; i < sslList.size(); i++) {
     if (reqUrl.indexOf((String) sslList.get(i)) > -1) {
      urlCheck = true;
     }
     if( urlCheck ) {
      break;
     }
    }

    if (!urlCheck) {
     String url = ApplicationConfig.getString("domain") + ":" + ApplicationConfig.getString("port");
     url += req.getRequestURI();
     url += (req.getQueryString() == null ? "" : "?" + req.getQueryString());

     StringBuffer buf = new StringBuffer();
     buf.append("<html>\n");
     buf.append("<head></head>\n");
     buf.append("<body>\n");
     buf.append("<form action='"+url+"' name='mainForm' method='post'>\n");
     Enumeration e = request.getParameterNames();
     String name = null;
     while (e.hasMoreElements()){
      name = e.nextElement().toString();
      buf.append("<input type='hidden' name='"+ name +"' value='"+StringUtil.toString(request.getParameter(name))+"'>\n");
     }
     buf.append("<script language=javascript>\n<!--\n");
     buf.append("mainForm.submit();\n");
     buf.append("//-->\n</script>\n");
     buf.append("</body>\n");
     buf.append("</html>\n");

     out.println(buf);

    }
   }
  }

  chain.doFilter(request, response);

 }
}

Posted by [czar]
,