package itn.let.utl.sim.service; import javax.servlet.http.HttpServletRequest; import itn.com.cmm.util.IpUtil; //import itn.com.cmm.service.EgovProperties; /** * 클라이언트(Client)의 IP주소, OS정보, 웹브라우저정보를 조회하는 Business Interface class * @author 공통서비스개발팀 박지욱 * @since 2009.01.19 * @version 1.0 * @see * *
 * << 개정이력(Modification Information) >>
 *   
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *   2009.01.19  박지욱          최초 생성
 *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성 
 *
 * 
*/ public class EgovClntInfo { /** * 클라이언트(Client)의 IP주소를 조회하는 기능 * @param HttpServletRequest request Request객체 * @return String ipAddr IP주소 * @exception Exception */ public static String getClntIP(HttpServletRequest request) throws Exception { String ip = request.getHeader("X-Forwarded-For"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } public static String getClntIP2(HttpServletRequest request) throws Exception { // IP주소 //String ipAddr = request.getRemoteAddr(); // String ipAddr = IpUtil.getClientIP(request) ; // IP주소 //String ipAddr = request.getRemoteAddr(); String ip = request.getHeader("X-Forwarded-For"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } /** * 클라이언트(Client)의 OS 정보를 조회하는 기능 * @param HttpServletRequest request Request객체 * @return String osInfo OS 정보 * @exception Exception public static String getClntOsInfo(HttpServletRequest request) throws Exception { String user_agent = request.getHeader("user-agent"); String os_info = user_agent.toUpperCase().split(";")[2].split("\\)")[0]; //String os_conf = EgovProperties.getProperty(Globals.CLIENT_CONF_PATH, os_info.replaceAll(" ", "")); String os_conf = EgovProperties.getProperty("", os_info.replaceAll(" ", "")); String osInfo = ""; if (os_conf != null && !"".equals(os_conf)) { osInfo = os_conf; } else { osInfo = os_info; } return osInfo; } */ /** * 클라이언트(Client)의 웹브라우저 종류를 조회하는 기능 * @param HttpServletRequest request Request객체 * @return String webKind 웹브라우저 종류 * @exception Exception */ public static String getClntWebKind(HttpServletRequest request) throws Exception { String user_agent = request.getHeader("user-agent"); // 웹브라우저 종류 조회 String webKind = ""; if (user_agent.toUpperCase().indexOf("GECKO") != -1) { if (user_agent.toUpperCase().indexOf("NESCAPE") != -1) { webKind = "Netscape (Gecko/Netscape)"; } else if (user_agent.toUpperCase().indexOf("FIREFOX") != -1) { webKind = "Mozilla Firefox (Gecko/Firefox)"; } else { webKind = "Mozilla (Gecko/Mozilla)"; } } else if (user_agent.toUpperCase().indexOf("MSIE") != -1) { if (user_agent.toUpperCase().indexOf("OPERA") != -1) { webKind = "Opera (MSIE/Opera/Compatible)"; } else { webKind = "Internet Explorer (MSIE/Compatible)"; } } else if (user_agent.toUpperCase().indexOf("SAFARI") != -1) { if (user_agent.toUpperCase().indexOf("CHROME") != -1) { webKind = "Google Chrome"; } else { webKind = "Safari"; } } else if (user_agent.toUpperCase().indexOf("THUNDERBIRD") != -1) { webKind = "Thunderbird"; } else { webKind = "Other Web Browsers"; } return webKind; } /** * 클라이언트(Client)의 웹브라우저 버전을 조회하는 기능 * @param HttpServletRequest request Request객체 * @return String webVer 웹브라우저 버전 * @exception Exception */ public static String getClntWebVer(HttpServletRequest request) throws Exception { String user_agent = request.getHeader("user-agent"); // 웹브라우저 버전 조회 String webVer = ""; String [] arr = {"MSIE", "OPERA", "NETSCAPE", "FIREFOX", "SAFARI"}; for (int i = 0; i < arr.length; i++) { int s_loc = user_agent.toUpperCase().indexOf(arr[i]); if (s_loc != -1) { int f_loc = s_loc + arr[i].length(); webVer = user_agent.toUpperCase().substring(f_loc, f_loc+5); webVer = webVer.replaceAll("/", "").replaceAll(";", "").replaceAll("^", "").replaceAll(",", "").replaceAll("//.", ""); } } return webVer; } }