/******************************************************************************* * Copyright (c) 2013 hangum. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * hangum - initial API and implementation ******************************************************************************/ package com.hangum.tadpole.commons.util; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.eclipse.rap.rwt.RWT; import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine; /** * <pre> * 사용자 정보를 보기 좋게 * * 1. email. * 2. accept ip * 3. os * 4. brower * 5. full version * </pre> * * @author hangum * */ public class RequestInfoUtils { private static final Logger logger = Logger.getLogger(RequestInfoUtils.class); /** * Return request locale * * @return */ public static String getDisplayLocale() { HttpServletRequest request = RWT.getRequest(); Locale locale = request.getLocale(); return locale.getDisplayLanguage(Locale.ENGLISH); } /** * browser support * @return */ public static boolean isSupportBrowserIP() { ServletUserAgent sua = new ServletUserAgent(); sua.detect(RWT.getRequest()); String strBrowser = sua.getBrowserType().toString(); if(logger.isDebugEnabled()) { logger.debug("Browser is " + strBrowser); logger.debug("version is " + sua.getMajorVersion()); } for(PublicTadpoleDefine.TADPOLE_SUPPORT_BROWSERIP supportBrowser: PublicTadpoleDefine.TADPOLE_SUPPORT_BROWSERIP.values()) { if(strBrowser.equalsIgnoreCase(supportBrowser.toString())) return true; } return false; } /** * 올챙이가 동작 할 수 없는 브라우저라면, 사용자 브라우저 를 리턴합니다. * * @return */ public static boolean isSupportBrowser() { ServletUserAgent sua = new ServletUserAgent(); sua.detect(RWT.getRequest()); String strBrowser = sua.getBrowserType().toString(); if(logger.isDebugEnabled()) { logger.debug("Browser is " + strBrowser); logger.debug("version is " + sua.getMajorVersion()); } for(PublicTadpoleDefine.TADPOLE_SUPPORT_BROWSER supportBrowser: PublicTadpoleDefine.TADPOLE_SUPPORT_BROWSER.values()) { if("IE".equals(strBrowser)) { if(10 > sua.getMajorVersion()) return false; else return true; } else { if(strBrowser.equalsIgnoreCase(supportBrowser.toString())) return true; } } return false; } /** * Get user browser and browser version information. * * @return */ public static String getUserBrowser() { ServletUserAgent sua = new ServletUserAgent(); sua.detect(RWT.getRequest()); String strBrowser = sua.getBrowserType().toString(); String strFullVersion = sua.getFullVersion() + sua.getMajorVersion(); return strBrowser + " Ver" + strFullVersion; } /** * 사용자 인포 * * @param prefixMsg * @param email * @return */ public static String requestInfo(String prefixMsg, String email) { StringBuffer retMsg = new StringBuffer(prefixMsg + "\r\n"); ServletUserAgent sua = new ServletUserAgent(); sua.detect(RWT.getRequest()); String strOs = sua.getOSSimpleType().toString(); String strBrowser = sua.getBrowserType().toString(); String strFullVersion = sua.getFullVersion() + sua.getMajorVersion(); retMsg.append("[email]" + email + "[os]" + strOs + "[browser]" + strBrowser + "[full version]" + strFullVersion); return retMsg.toString(); } /** * 사용자의 os를 얻습니다. * * @return */ public static ServletUserAgent.OS_SIMPLE_TYPE findOSSimpleType() { ServletUserAgent sua = new ServletUserAgent(); sua.detect(RWT.getRequest()); return sua.getOSSimpleType(); } /** * user request ip * * @return */ public static String getRequestIP() { HttpServletRequest request = RWT.getRequest(); String strIP = request.getHeader("X-Forwarded-For"); // if(logger.isDebugEnabled()) logger.debug("X-Forwarded-For: " + strIP); if (StringUtils.defaultString(strIP).length() == 0 || "unknown".equalsIgnoreCase(strIP)) { strIP = request.getHeader("Proxy-Client-IP"); // if(logger.isDebugEnabled()) logger.debug("Proxy-Client-IP[ip]" + strIP); } if (StringUtils.defaultString(strIP).length() == 0 || "unknown".equalsIgnoreCase(strIP)) { strIP = request.getHeader("WL-Proxy-Client-IP"); // if(logger.isDebugEnabled()) logger.debug("WL-Proxy-Client-IP[ip]" + strIP); } if (StringUtils.defaultString(strIP).length() == 0 || "unknown".equalsIgnoreCase(strIP)) { strIP = request.getHeader("HTTP_CLIENT_IP"); // if(logger.isDebugEnabled()) logger.debug("HTTP_CLIENT_IP[ip]" + strIP); } if (StringUtils.defaultString(strIP).length() == 0 || "unknown".equalsIgnoreCase(strIP)) { strIP = request.getHeader("HTTP_X_FORWARDED_FOR"); // if(logger.isDebugEnabled()) logger.debug("HTTP_X_FORWARDED_FOR[ip]" + strIP); } if (StringUtils.defaultString(strIP).length() == 0 || "unknown".equalsIgnoreCase(strIP)) { strIP = request.getRemoteAddr(); // if(logger.isDebugEnabled()) logger.debug("[ip]" + strIP); } return strIP; } }