Java tutorial
/* * Copyright (c) 2013 SK planet. * All right reserved. * * This software is the confidential and proprietary information of SK planet. * You shall not disclose such Confidential Information and * shall use it only in accordance with the terms of the license agreement * you entered into with SK planet. */ package com.skplanet.tcloud.common; import java.net.UnknownHostException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.springframework.util.StopWatch; import org.springframework.web.servlet.ModelAndView; import tframe.common.configuration.ConfigurationService; import com.skplanet.tcloud.common.configuration.ConfigProperties; import com.skplanet.tcloud.common.exception.UserHandleableException; import com.skplanet.tcloud.common.interceptor.SessionCheckInterceptor; import com.skplanet.tcloud.common.model.RequestCustomHeaderInfo; import com.skplanet.tcloud.common.util.CodeMessage; import com.skplanet.tcloud.common.util.Encryption; import com.skplanet.tcloud.common.util.HttpRequest; import com.skplanet.tcloud.common.util.ServiceConstants; /** * @author JM * */ public class OmcLogAdvice { /** ConfigurationService ? */ @Resource(name = "configurationService") protected ConfigurationService appConfig; /** LOG4J ? Log ? */ protected static final Log logger = LogFactory.getLog("OMC_LOG"); private static String localHostName; //private static String localHostAddress; static { try { // Local Server ? HostName ? HostAddress java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost(); localHostName = localMachine.getHostName(); //localHostAddress = localMachine.getHostAddress(); } catch (UnknownHostException uhe) { logger.error("Cannot obtain local host name", uhe); } } /** * <pre> * * </pre> * @author ? */ public static class JobConstants { /** */ public static String SERVICE_NAME = "TCLOUD"; /* ? -------------------------------------------------------------------- */ /** ? ? ? ? */ public static String DIRECTION_REQ = "REQ"; /** ? ? ? */ public static String DIRECTION_REP = "REP"; /* ? -------------------------------------------------------------- */ /** Application ? */ public static String SERVICE_SYS_NAME_APP = "APP"; /** Storage Control ? */ public static String SERVICE_SYS_NAME_STORAGE = "STORAGE"; /** ? ? */ public static String SERVICE_SYS_NAME_USER = "USER"; /** ? ? */ public static String SERVICE_SYS_NAME_LOGIN = "LOGIN"; /** ? / ? */ public static String SERVICE_SYS_NAME_MEMBER = "MEMBER"; /** ? ? */ public static String SERVICE_SYS_NAME_SMS = "SMS"; /** ?? / FAQ, , ? */ public static String SERVICE_SYS_NAME_CUG = "CUG"; /** Sample ? */ public static String SERVICE_SYS_NAME_SAMPLE = "SAMPLE"; /** ? */ public static String SERVICE_SYS_NAME_MYDIARY = "MYDIARY"; /** */ public static String SERVICE_SYS_NAME_BUDDY = "BUDDY"; /** SNS */ public static String SERVICE_SYS_NAME_SNS = "SNS"; /** SNS OPENAPI */ public static String SERVICE_SYS_NAME_SNS_OPENAPI = "SNSOPENAPI"; /** EMBEDED */ public static String SERVICE_SYS_NAME_EMBEDED = "EMBEDED"; /** ? ? */ public static String SERVICE_SYS_NAME_ADDR = "ADDR"; /** SPEED PIMS */ public static String SERVICE_SYS_NAME_SPEEDPIMS_STAT = "SPEEDPIMS"; /** MDN ? */ public static String SERVICE_SYS_NAME_MDN_MEMBER = "MDNMEMBER"; /* 2 */ /** PRESENSE */ public static String SERVICE_SYS_NAME_PRESENSE = "PRESENSE"; /** META */ public static String SERVICE_SYS_NAME_META = "META"; /** PUSH */ public static String SERVICE_SYS_NAME_PUSH = "PUSH"; /** DEVICE */ public static String SERVICE_SYS_NAME_DEVICE = "DEVICE"; /** TAG */ public static String SERVICE_SYS_NAME_TAG = "TAG"; /** STATS */ public static String SERVICE_SYS_NAME_STATS = "STATS"; /** PLAYTIME */ public static String SERVICE_SYS_NAME_PLAYTIME = "PLAYTIME"; /** SHARE */ public static String SERVICE_SYS_NAME_SHARE = "SHARE"; /** USERINDEX */ public static String SERVICE_SYS_NAME_USERINDEX = "USERINDEX"; /** MULTIMEDIA */ public static String SERVICE_SYS_NAME_MULTIMEDIA = "MULTIMEDIA"; /** SHAREURL */ public static String SERVICE_SYS_NAME_SHAREURL = "SHAREURL"; /** login request */ public static String SERVICE_SYS_NAME_REQUEST = "login"; /** OMC */ public static String SERVICE_SYS_NAME_OMC = "OMC"; /* v6 */ /** TIMELINE */ public static String SERVICE_SYS_NAME_TIMELINE = "TIMELINE"; /** CLIPPING */ public static String SERVICE_SYS_NAME_CLIPPING = "CLIPPING"; /** CLOUD */ public static String SERVICE_SYS_NAME_CLOUD = "CLOUD"; /** CONTENTS */ public static String SERVICE_SYS_NAME_CONTENTS = "CONTENTS"; /**ALBUM**/ public static String SERVICE_SYS_NAME_ALBUM = "ALBUM"; /* Tstore - Tcloud ? Hidden Invoke 2013-11-14 jung-su.Jang */ /** OMC */ public static String SERVICE_SYS_NAME_INVOKE = "INVOKE"; /* ? -------------------------------------------------------------- */ /** */ public static String SERVICE_RESULT_CODE_SUCC = "200"; /** ? */ public static String SERVICE_RESULT_CODE_FAIL = "999"; /** ?? ? IP */ public static String SERVICE_RESULT_UNAUTHORIZED_IP = "2006"; /* -------------------------------------------------------------- */ /** */ public static String OMC_RESULT_CODE_SUCC = "SUCC"; /** */ public static String OMC_RESULT_CODE_FAIL = "FAIL"; /** ? */ public static String OMC_RESULT_CODE_CHECK = "CHECK"; /** Unknown */ public static String OMC_RESULT_CODE_UNKNOWN = "Unknown"; } public OmcLogAdvice() { } /** * <pre> * ? ?? ?? ? . * </pre> * @param joinPoint AOP ? ?(logging,exception,etc...) ? ? ? * @return {@link Object} * @throws Throwable */ public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable { long startTime = System.currentTimeMillis(); // String startTimeStr = ""; // Map<String, Object> inResutlMap = new HashMap<String, Object>(); // Map<String, Object> outResutlMap = new HashMap<String, Object>(); // Map<String, Object> etcResutlMap = new HashMap<String, Object>(); // StopWatch stopWatch = new StopWatch(); // ? Signature signature = joinPoint.getSignature(); // String targetClassName = joinPoint.getTarget().getClass().getName(); // Class Name Object returnObj = null; // String hostAddress = ""; HttpServletRequest request = null; String key1 = ""; try { // Service ? - ETC SimpleDateFormat sdfYMDHMS = new SimpleDateFormat("yyyyMMddHHmmss"); startTimeStr = sdfYMDHMS.format(new Date(startTime)); etcResutlMap.put("serviceName", OmcLogAdvice.JobConstants.SERVICE_NAME); etcResutlMap.put("startTimeStr", startTimeStr); // etcResutlMap.put("hostName", hostName+" / "+hostAddress); etcResutlMap.put("hostName", localHostName); etcResutlMap.put("direction", OmcLogAdvice.JobConstants.DIRECTION_REP); // Service inResutlMap = getMakeIn(targetClassName, signature.getName(), joinPoint.getArgs(), request); stopWatch.start(joinPoint.toShortString()); // ? // Access ? IP? ? . // if (isAccessIp(inResutlMap.get("sysModule"), inResutlMap.get("clientIp"))) { if (true) { returnObj = joinPoint.proceed(); // Service ? if (stopWatch.isRunning()) { stopWatch.stop(); // ? } // Service outResutlMap = getMakeOut(returnObj, inResutlMap); outResutlMap.put("totalTimeSeconds", stopWatch.getTotalTimeMillis()); // if (inResutlMap.get("requestUrl").toString().contains("regMemberTOI") || // sjsim@20120920 inResutlMap.get("requestUrl").toString().contains("regIdpMemberTOI") || inResutlMap.get("requestUrl").toString().contains("modifyMemberIdTOI") || inResutlMap.get("requestUrl").toString().contains("ssoLoginTOI") || inResutlMap.get("signatureName").toString().contains("getSendEmail")) { // sjsim@20130207 String keyStr = inResutlMap.get("key1").toString(); if (JobConstants.SERVICE_RESULT_CODE_SUCC.equals(outResutlMap.get("resultCode"))) { if (keyStr.length() >= 5) { if (!keyStr.subSequence(0, 5).equals("memNo")) { ModelAndView mav = (ModelAndView) returnObj; String memNo = mav.getModel().get("memNo").toString(); inResutlMap.put("key1", "memNo=" + memNo); } } } else { if (keyStr.length() >= 7) { if (!keyStr.subSequence(0, 7).equals("loginId")) { ModelAndView mav = (ModelAndView) returnObj; String loginId = mav.getModel().get("loginId").toString(); inResutlMap.put("key1", "loginId=" + loginId); } } } } else if (JobConstants.SERVICE_SYS_NAME_REQUEST.equals(inResutlMap.get("signatureName"))) { if (JobConstants.SERVICE_RESULT_CODE_SUCC.equals(outResutlMap.get("resultCode"))) { if (!inResutlMap.get("key1").toString().subSequence(0, 5).equals("memNo")) { ModelAndView mav = (ModelAndView) returnObj; String memNo = mav.getModel().get("memNo").toString(); key1 = "memNo=" + memNo; inResutlMap.put("key1", key1); } } else { if (!inResutlMap.get("key1").toString().subSequence(0, 7).equals("loginId")) { ModelAndView mav = (ModelAndView) returnObj; String loginId = mav.getModel().get("loginId").toString(); key1 = "loginId=" + loginId; inResutlMap.put("key1", key1); } } // ? ? ? KEY1 ? sjsim@20130104 // ? ? , ? Key1 ? ? 2013.01.22. jhkwon } else if ("joinMdn".equals(signature.getName()) || "loginMdn".equals(signature.getName()) || "secedeMdn".equals(signature.getName())) { ModelAndView mav = (ModelAndView) returnObj; String memNo = mav.getModel().get("memNo").toString(); key1 = "memNo=" + memNo; inResutlMap.put("key1", key1); } else if ("loginMdnEx".equals(signature.getName())) { ModelAndView mav = (ModelAndView) returnObj; String memNo = mav.getModel().get("memNo").toString(); key1 = "memNo=" + memNo; inResutlMap.put("key1", key1); String userMdn = "userMdn=" + StringUtils.defaultString(mav.getModel().get("userMdn").toString()); String etc = userMdn; inResutlMap.put("etc", etc); } else if ("getSmsKey".equals(signature.getName()) || "getSmsKeyTOI".equals(signature.getName())) { ModelAndView mav = (ModelAndView) returnObj; String gubun = ","; String mdn = key1 + gubun + "mdn=" + StringUtils.defaultString(mav.getModel().get("mdn").toString()); String userMdnType = "userMdnType=" + StringUtils.defaultString(mav.getModel().get("userMdnType").toString()); //String smsAuthKey = "smsAuthKey="+StringUtils.defaultString(mav.getModel().get("smsAuthKey").toString()); //String etc=mdn+gubun+userMdnType+gubun+smsAuthKey; String etc = mdn + gubun + userMdnType + gubun; inResutlMap.put("etc", etc); } else if (inResutlMap.get("signatureName").toString().contains("startup")) { // dikey@20130220 for (Object object : joinPoint.getArgs()) { if (object instanceof HttpServletRequest) { request = (HttpServletRequest) object; } } // key1? ? ?? key2? T store? ? mdn if (request != null) { String etc = (String) inResutlMap.get("etc"); String deviceId = request.getParameter("deviceId") == null ? "" : request.getParameter("deviceId"); etc = etc + "|deviceId=" + deviceId; String userAgent = null; userAgent = request.getHeader("user-agent"); if (userAgent != null && !userAgent.trim().isEmpty()) { if (userAgent.contains("T store")) { etc = etc + new StringBuffer("|mdn=").append( request.getParameter("mdn") == null ? "" : request.getParameter("mdn")) .toString(); } } /* * Tstore -Tcloud? * - T store? T cloud? ? ?? T cloud ? UV - * startup.do ? etc? tctd-src? ?? append * 2013-11-26 jung-su.jang */ ModelAndView mav = (ModelAndView) returnObj; if (mav != null && mav.getModel() != null && mav.getModel().get("tcdSrc") != null) { String tcdSrc = mav.getModel().get("tcdSrc").toString(); etc += tcdSrc != null ? "|tcd-src=" + tcdSrc : ""; } String referer = request.getParameter("referer") == null ? "" : request.getParameter("referer"); etc = etc + "|referer=" + referer; String pushId = request.getParameter("pushId"); if (pushId != null && !"".equals(pushId)) { etc = etc + "|pushId=" + pushId; } inResutlMap.put("etc", etc); } } else if ("deviceToDevice".equals(signature.getName())) { // sjsim@20130402 String etc = (String) inResutlMap.get("etc"); ModelAndView mav = (ModelAndView) returnObj; String medTyCd = mav.getModel().get("medTyCd").toString(); etc += "|medTyCd=" + medTyCd; inResutlMap.put("etc", etc); } else if ("omcLog".equals(signature.getName()) || "omcDetailLog".equals(signature.getName())) { // dikey@20130423 ModelAndView mav = (ModelAndView) returnObj; inResutlMap.put("key2", mav.getModel().get("key2").toString()); } String requestUrl = inResutlMap.get("requestUrl") == null ? "" : inResutlMap.get("requestUrl").toString(); if (requestUrl.contains("regMemberTOI.do") || requestUrl.contains("mdnJoin.do") || requestUrl.contains("regIdpMemberTOI.do")) { ModelAndView mav = (ModelAndView) returnObj; if (mav.getModel().get("key2") != null) inResutlMap.put("key2", mav.getModel().get("key2").toString()); } /* Tstore-Tcloud ? omc ?? ?? ?? * ? requestHeader? ? ? ?? ?? ? * ? ? put 2013-11-14 jung-su.Jang */ if ("sync".equals(signature.getName())) { HttpServletRequest syncRequest = null; Object[] args = joinPoint.getArgs(); for (Object object : args) { if (object instanceof HttpServletRequest) { syncRequest = (HttpServletRequest) object; } } String tcdSrc = (String) syncRequest.getAttribute("tcdSrc"); if (tcdSrc != null && !"".equals(tcdSrc)) { String etc = (String) inResutlMap.get("etc"); etc += "|tcd-src=" + tcdSrc; inResutlMap.put("etc", etc); } } if ("startupsc".equals(signature.getName())) { ModelAndView mav = (ModelAndView) returnObj; if (mav != null && mav.getModel() != null) { inResutlMap.put("sessionID", mav.getModel().get("sessionID") != null && mav.getModel().get("sessionID").toString() != null ? mav.getModel().get("sessionID").toString() : ""); inResutlMap.put("key1", "memNo=" + mav.getModel().get("key1") != null && mav.getModel().get("key1").toString() != null ? mav.getModel().get("key1").toString() : "memNo="); inResutlMap.put("etc", mav.getModel().get("etc") != null && mav.getModel().get("etc").toString() != null ? mav.getModel().get("etc").toString() : "tcd-src=1"); } } if ("checkJoinMdn".equals(signature.getName())) { ModelAndView mav = (ModelAndView) returnObj; if (mav != null && mav.getModel() != null) { inResutlMap.put("etc", "uesrMdn=" + StringUtils.defaultString(mav.getModel().get("userMdn").toString())); } } // ? ? ?? log . /* Tstore-Tcloud ? mdnJoinNew ? ? OMC ? ?? * && !"mdnJoinNew".equals(signature.getName()) * 2013.11.18 jung-su.Jang */ // ? ? ?? log . if (!"".equals(inResutlMap.get("sysModule")) && !(inResutlMap.get("sysModule").equals(JobConstants.SERVICE_SYS_NAME_SAMPLE)) && !"mdnJoinNew".equals(signature.getName()) && !"mdnJoinNewForm".equals(signature.getName())) { //logger.info(makeLogString(inResutlMap, outResutlMap, etcResutlMap, true)); // artf120005 Token Expire ? OMC Log ? by jaeyeon.hwang 2014.03.13 if (!CodeMessage.RESPONSE_CODE_EXPIRED_TOKEN.equals(outResutlMap.get("resultCode"))) { logger.info(getFilterOmc(makeLogString(inResutlMap, outResutlMap, etcResutlMap, true))); } } } return returnObj; } catch (UserHandleableException ue) { if (!JobConstants.SERVICE_RESULT_UNAUTHORIZED_IP.equals(ue.getErrorCode())) { // IP? if (stopWatch.isRunning()) { stopWatch.stop(); // ? } outResutlMap.put("totalTimeSeconds", stopWatch.getTotalTimeMillis()); // outResutlMap.put("resultCode", ue.getErrorCode()); /* Tstore-Tcloud ? omc ?? ?? ?? * ? requestHeader? ? ? ?? ?? ? * ? ? put 2013-11-14 jung-su.Jang * */ if ("startupsc".equals(signature.getName()) || "mdnJoinNew".equals(signature.getName())) { inResutlMap.put("etc", "tcd-src=1"); if ("startupsc".equals(signature.getName())) { outResutlMap.put("resultCode", CodeMessage.RESPONSE_CODE_FAIL); logger.error(makeLogString(inResutlMap, outResutlMap, etcResutlMap, false)); } } /* artf113224 mdnLogin - TOKEN Expire ?? memNo by * Token Expired AOP ? OMC ? * jaeyeon.hwang 2014.02.18 */ if (!"startupsc".equals(signature.getName()) //artf120005 TokenExpire ? OMC Log by jaeyeon.hwang 2014.03.13 && !CodeMessage.RESPONSE_CODE_EXPIRED_TOKEN.equals(ue.getErrorCode())) { if (JobConstants.SERVICE_RESULT_CODE_FAIL.equals(ue.getErrorCode())) { logger.error(makeLogString(inResutlMap, outResutlMap, etcResutlMap, false)); } else { logger.error(makeLogString(inResutlMap, outResutlMap, etcResutlMap, true)); } } } throw new Exception(ue); } catch (Exception e) { if (stopWatch.isRunning()) { stopWatch.stop(); // ? } outResutlMap.put("totalTimeSeconds", stopWatch.getTotalTimeMillis()); // outResutlMap.put("resultCode", JobConstants.SERVICE_RESULT_CODE_FAIL); /* Tstore-Tcloud ? omc ?? ?? ?? * ? requestHeader? ? ? ?? ?? ? * ? ? put 2013-11-14 jung-su.Jang * */ if ("startupsc".equals(signature.getName()) || "mdnJoinNew".equals(signature.getName())) { inResutlMap.put("etc", "tcd-src=1"); if ("startupsc".equals(signature.getName())) { outResutlMap.put("resultCode", CodeMessage.RESPONSE_CODE_FAIL); } } else { logger.error(makeLogString(inResutlMap, outResutlMap, etcResutlMap, false)); } throw new Exception(e); } } @SuppressWarnings("unchecked") private Map<String, Object> getMakeIn(String targetClassName, String signatureName, Object[] args, HttpServletRequest request) { String clientIp = ""; String requestUrl = ""; String remoteUrl = ""; String key1 = ""; String key2 = ""; String etc = ""; String prameterName = ""; String prameterValue = ""; String sysModule = ""; String userAgent = ""; // OLAP ?? jhkwon String sessionId = ""; // OLAP ?? jhkwon ( ) String methodType = ""; Map<String, Object> resutlMap = new HashMap<String, Object>(); HttpServletRequest request2 = null; HttpRequest httpRequest = null; try { for (Object object : args) { if (object instanceof HttpServletRequest) { request = (HttpServletRequest) object; } } if (request != null) { // clientIp = request.getRemoteHost(); requestUrl = request.getRequestURL().toString(); userAgent = request.getHeader("user-agent"); // OLAP ?? jhkwon methodType = request.getMethod(); request2 = request; httpRequest = new HttpRequest(request2); /* Enumeration num = request.getHeaderNames(); while(num.hasMoreElements()){ String name = (String)num.nextElement(); String value = request.getHeader(name); logger.info(""+name+":"+value); }*/ // KEY1 ? try { //String sessionId = ""; if (request.getHeader("tcd-sessionid") != null) { sessionId = request.getHeader("tcd-sessionid").toString(); } RequestCustomHeaderInfo requestCustomHeaderInfo = new RequestCustomHeaderInfo(); requestCustomHeaderInfo = SessionCheckInterceptor.sessionCheckInfo .getSessionCheckInfo(sessionId); String memNo = requestCustomHeaderInfo.getTcdMemNo().toString(); clientIp = requestCustomHeaderInfo.getTcdCip().toString(); key1 = "memNo=" + memNo; } catch (NullPointerException ex) { // ? ?? loginId . Enumeration<String> e = request.getParameterNames(); // ? key while (e.hasMoreElements()) { prameterName = e.nextElement(); if (request.getParameterValues(prameterName) != null && "loginId".equals(prameterName)) { prameterValue = request.getParameter(prameterName); key1 = prameterName + "=" + prameterValue; break; } else if (request.getParameterValues(prameterName) != null && "memNo".equals(prameterName)) { prameterValue = request.getParameter(prameterName); key1 = prameterName + "=" + prameterValue; break; } else if (request.getParameterValues(prameterName) != null && "updateStorageMetaFile".equals(signatureName) && "cntsId".equals(prameterName)) { prameterValue = request.getParameter(prameterName); key2 = prameterName + "=" + prameterValue; } } } } String packageName = "tcloud.client.web."; String packageNameV6 = "com.skplanet.tcloud."; if ( // ? StringUtils.contains(targetClassName, packageName + "member.UserController") || StringUtils.contains(targetClassName, packageName + "member.dummy.UserDummyController")) { sysModule = JobConstants.SERVICE_SYS_NAME_USER; } else if ( // ? StringUtils.contains(targetClassName, packageName + "member.LoginController") || StringUtils.contains(targetClassName, packageName + "member.dummy.LoginDummyController")) { sysModule = JobConstants.SERVICE_SYS_NAME_LOGIN; /* Tstore-Tcloud ? Hidden Invoke sysModul 2013-11-14 jung-su.Jang */ if ("startupsc".equals(signatureName)) { sysModule = JobConstants.SERVICE_SYS_NAME_INVOKE; } } else if ( // ? StringUtils.contains(targetClassName, packageName + "member.MemberController") || StringUtils.contains(targetClassName, packageName + "member.dummy.MemberDummyController")) { sysModule = JobConstants.SERVICE_SYS_NAME_MEMBER; } else if ( // ? StringUtils.contains(targetClassName, packageName + "mydiary")) { sysModule = JobConstants.SERVICE_SYS_NAME_MYDIARY; // ? ? String memNo = key1.split("=")[1]; Enumeration<String> e = request.getParameterNames(); while (e.hasMoreElements()) { prameterName = e.nextElement(); if (request.getParameterValues(prameterName) != null && "tagetMemNO".equals(prameterName)) { if (StringUtils.isNotEmpty(request.getParameter(prameterName)) && !memNo.equals(request.getParameter(prameterName))) { key2 = "path=" + "buddyDiary"; break; } else { break; } } } } else if ( // StringUtils.contains(targetClassName, packageName + "buddy")) { sysModule = JobConstants.SERVICE_SYS_NAME_BUDDY; } else if ( // SNS StringUtils.contains(targetClassName, packageName + "sns")) { if (StringUtils.contains(targetClassName, "SnsOpenApiController")) { //SNS OPENAPI .openapi (tcif)? . //sysModule = JobConstants.SERVICE_SYS_NAME_SNS_OPENAPI; ; } else { sysModule = JobConstants.SERVICE_SYS_NAME_SNS; if (StringUtils.contains(targetClassName, "SnsCyworldController")) { etc = "snsType=cyworld"; } else if (StringUtils.contains(targetClassName, "SnsFacebookController")) { etc = "snsType=facebook"; } else if (StringUtils.contains(targetClassName, "SnsNateonController")) { etc = "snsType=nateon"; } else if (StringUtils.contains(targetClassName, "SnsMelonController")) { etc = "snsType=melon"; } else { etc = "snsType=" + request.getParameter("snsType"); } } } else if (isPackageCheck(targetClassName, packageName + "app.", false)) { // APP sysModule = JobConstants.SERVICE_SYS_NAME_APP; } else if (isPackageCheck(targetClassName, packageName + "cug.", false)) { // CUG sysModule = JobConstants.SERVICE_SYS_NAME_CUG; } else if (isPackageCheck(targetClassName, packageName + "sms.", false)) { // SMS sysModule = JobConstants.SERVICE_SYS_NAME_SMS; } else if (isPackageCheck(targetClassName, packageName + "sample", false)) { // Sample sysModule = JobConstants.SERVICE_SYS_NAME_SAMPLE; } else if (isPackageCheck(targetClassName, packageName + "presense", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_PRESENSE; if ("deviceToDevice".equals(signatureName)) { etc = "reqCl=" + StringUtils.defaultString(request.getParameter("reqCl")); } } else if (isPackageCheck(targetClassName, packageName + "meta", false)) { sysModule = JobConstants.SERVICE_SYS_NAME_META; Enumeration<String> e = request.getParameterNames(); while (e.hasMoreElements()) { prameterName = e.nextElement(); if (("modStorgeAndDbMetaFile".equals(signatureName) || "modDirStorageAndMetaInfoIUD".equals(signatureName)) && request.getParameterValues(prameterName) != null && "wrkDiv".equals(prameterName)) { prameterValue = request.getParameter(prameterName); if (StringUtils.isNotEmpty(prameterValue)) { key2 = "wrkDiv=" + prameterValue; } } if (("modStorgeAndDbMetaFile".equals(signatureName) || "modDirStorageAndMetaInfoIUD".equals(signatureName)) && request.getParameterValues(prameterName) != null && "strgWrkDiv".equals(prameterName)) { prameterValue = request.getParameter(prameterName); if (StringUtils.isNotEmpty(prameterValue)) { key2 += "|strgWrkDiv=" + prameterValue; } } } if (("findLibraryList".equals(signatureName) || "findLibraryMusicList".equals(signatureName)) || "modStorgeAndDbMetaFile".equals(signatureName) || "precheckMeta".equals(signatureName)) { if (StringUtils.isNotEmpty(request.getParameter("medTyCd"))) { etc = "medTyCd=" + request.getParameter("medTyCd"); } } // OLAB ? sysModule , 2013.03.19 if (("metaFileDirectorySearch".equals(signatureName)) || ("findLibraryList".equals(signatureName)) || ("findLibraryMusicList".equals(signatureName))) { sysModule = JobConstants.SERVICE_SYS_NAME_TAG; } else if ("modStorgeAndDbMetaFile".equals(signatureName)) { sysModule = JobConstants.SERVICE_SYS_NAME_STORAGE; } } else if (isPackageCheck(targetClassName, packageName + "push", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_PUSH; } else if (isPackageCheck(targetClassName, packageName + "device", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_DEVICE; } else if (isPackageCheck(targetClassName, packageName + "tag", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_TAG; if ("tagMapList".equals(signatureName) || "selectPlayInDeviceList".equals(signatureName) || "tagMapSimpleList".equals(signatureName) || "insertMediaTagIud".equals(signatureName) // || "insertMediaTagMapIud".equals(signatureName) // ?? / || "selectCloudTag".equals(signatureName) // Tag ? || "tagList".equals(signatureName)) { if ("tagMapList".equals(signatureName)) { if (StringUtils.isNotEmpty(request.getParameter("tagType"))) { etc = "tagType=" + request.getParameter("tagType"); } else { if (StringUtils.isNotEmpty(request.getParameter("chnlClCd"))) { etc = "chnlClCd=" + request.getParameter("chnlClCd"); } } } etc = StringUtils.isNotEmpty(etc) ? etc + "|medTyCd=" + request.getParameter("medTyCd") : "medTyCd=" + request.getParameter("medTyCd"); } } else if (isPackageCheck(targetClassName, packageName + "stats", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_STATS; } else if (isPackageCheck(targetClassName, packageName + "playtime", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_PLAYTIME; } /*else if (isPackageCheck(targetClassName, packageName+"share", false)){ // sysModule = JobConstants.SERVICE_SYS_NAME_SHARE; Enumeration<String> e = request.getParameterNames(); while (e.hasMoreElements()) { prameterName = e.nextElement(); if (("setShare".equals(signatureName) || "deleteShare".equals(signatureName) || "shareTagMapIUD".equals(signatureName)) && request.getParameterValues(prameterName) != null && "wrkDiv".equals(prameterName)) { prameterValue = request.getParameter(prameterName); if (StringUtils.isNotEmpty(prameterValue)) { key2 = "wrkDiv=" + prameterValue; } } } }*/ else if (isPackageCheck(targetClassName, packageName + "userindex", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_USERINDEX; } else if (isPackageCheck(targetClassName, packageName + "multimedia", false)) { // Multimedia sysModule = JobConstants.SERVICE_SYS_NAME_MULTIMEDIA; etc = "objectType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("objectType")); etc += "|networkType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("networkType")); etc += "|deviceType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("deviceType")); etc += "|hsModel=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("hsModel")); etc += "|medTyCd=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("objectType")); // 1:?, 2:??? } else if (isPackageCheck(targetClassName, packageName + "addr", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_ADDR; } else if (isPackageCheck(targetClassName, packageName + "stat.SpeedPimsStatController", false)) { // SpeedPIMS sysModule = JobConstants.SERVICE_SYS_NAME_SPEEDPIMS_STAT; etc = "userMdn=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("userMdn")); etc += "|model=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("model")); etc += "|OStype=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("OStype")); etc += "|addrTotalCount=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("addrTotalCount")); etc += "|addrTotalSize=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("addrTotalSize")); etc += "|picTotalCount=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("picTotalCount")); etc += "|picTotalSize=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("picTotalSize")); etc += "|agencyNo=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("agencyNo")); etc += "|agencyType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("agencyType")); etc += "|agencyHsNo=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("agencyHsNo")); etc += "|joinStatus=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("joinStatus")); } else if (isPackageCheck(targetClassName, packageName + "member.MdnController", false)) { sysModule = JobConstants.SERVICE_SYS_NAME_MDN_MEMBER; if (signatureName.equals("regMemberMDN")) { etc = "IDtoMDN"; // MDN -> ID/PW } else if (signatureName.equals("regIdpMemberMDN")) { etc = "IDPtoMDN"; // MDN -> IDP } else if (signatureName.equals("checkMdnJoinForPIMS") || signatureName.equals("getSmsKeyForPIMS")) { etc = "userMdn=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("mdn")); } else { etc = "userMdn=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("userMdn")); } } else if (isPackageCheck(targetClassName, packageName + "embeded.EmbededController", false)) { sysModule = JobConstants.SERVICE_SYS_NAME_EMBEDED; if ("mediaSetAutoUpload".equals(signatureName)) { etc = "medTyCd=" + StringUtils.defaultString(request.getParameter("medTyCd")); etc += "|autoUploadYn=" + StringUtils.defaultString(request.getParameter("autoUploadYn")); etc += "|standardDate=" + StringUtils.defaultString(request.getParameter("standardDate")); etc += "|imageSize=" + StringUtils.defaultString(request.getParameter("imageSize")); } else if ("mediaNetworkSet".equals(signatureName)) { etc = "wifiYn=" + StringUtils.defaultString(request.getParameter("wifiYn")); } } else if (isPackageCheck(targetClassName, packageName + "shareurl", false)) { // shareurl sysModule = JobConstants.SERVICE_SYS_NAME_SHAREURL; etc = "urlType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("urlType")); etc += "|shareType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("shareType")); etc += "|medTyCd=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("medTyCd")); etc += "|externalShareApp=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("externalShareApp")); } else if (isPackageCheck(targetClassName, packageName + "omc.OmcController", false)) { sysModule = JobConstants.SERVICE_SYS_NAME_OMC; //?? ? package ? Default //ex) tcloud.client.web.embeded.EmbededController ==> EMBEDED } else if (isPackageCheck(targetClassName, packageNameV6 + "timeline.controller", false)) { // timeline sysModule = JobConstants.SERVICE_SYS_NAME_TIMELINE; etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter(); } else if (isPackageCheck(targetClassName, packageNameV6 + "share.controller", false)) { // share - cloud sysModule = JobConstants.SERVICE_SYS_NAME_CLOUD; etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter(); } else if (isPackageCheck(targetClassName, packageNameV6 + "contents.controller", false)) { // contents if ("getSearch".equals(signatureName)) { // - cloud sysModule = JobConstants.SERVICE_SYS_NAME_CLOUD; } else { // contents sysModule = JobConstants.SERVICE_SYS_NAME_CONTENTS; } etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter(); } else if (isPackageCheck(targetClassName, packageNameV6 + "setting.controller", false)) { // setting - cloud sysModule = JobConstants.SERVICE_SYS_NAME_CLOUD; etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter(); } else if (isPackageCheck(targetClassName, packageNameV6 + "clipping.controller", false)) { // clipping sysModule = JobConstants.SERVICE_SYS_NAME_CLIPPING; etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter(); } else if (isPackageCheck(targetClassName, packageNameV6 + "contents.controller.RegionController", false)) { // - cloud sysModule = JobConstants.SERVICE_SYS_NAME_CLOUD; etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter(); } else if (isPackageCheck(targetClassName, packageNameV6 + "album.controller", false)) { // sysModule = JobConstants.SERVICE_SYS_NAME_ALBUM; etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter(); } else { if (requestUrl != null) { try { sysModule = targetClassName .substring(targetClassName.indexOf(packageName) + packageName.length(), targetClassName.lastIndexOf(".")) .toUpperCase(); } catch (Exception e) { e.printStackTrace(); } } } if (isPackageCheck(targetClassName, packageName + "storage.UploadCompleteAckController", false)) { if (StringUtils.isNotEmpty(prameterName) && "uploadType".equals(prameterName)) { etc = etc + "|" + prameterName + "=" + request.getParameter("uploadType"); } if (StringUtils.isNotEmpty(etc) && etc.indexOf("uploadType") == -1) { etc = etc + "|uploadType=0"; } if (StringUtils.isNotEmpty(prameterName) && "objectId".equals(prameterName)) { etc = etc + "|" + prameterName + "=" + request.getParameter("objectId"); } etc = getFilterParamUploadBasicAck(etc); } if (request != null && StringUtils.isNotEmpty(request.getHeader(ServiceConstants.RequestHeaderName.REQ_TCD_POC))) { etc = StringUtils.isNotEmpty(etc) ? etc + "|" + ServiceConstants.RequestHeaderName.REQ_TCD_POC + "=" + request.getHeader(ServiceConstants.RequestHeaderName.REQ_TCD_POC) : ServiceConstants.RequestHeaderName.REQ_TCD_POC + "=" + request.getHeader(ServiceConstants.RequestHeaderName.REQ_TCD_POC); } else { //thumbnail daemon? /meta/regStorageMetaFile.do update tcd-poc=9 if ("updateStorageMetaFile".equals(signatureName) || "deleteMemberForIdpdown".equals(signatureName) || "uploadCompleteBasickAckNoSession".equals(signatureName)) { // sjsim@20130401 //etc = etc + "|" + ServiceConstants.RequestHeaderName.REQ_TCD_POC + "=9"; etc = ServiceConstants.RequestHeaderName.REQ_TCD_POC + "=9"; } } // request.getHeader("tcd-poc") } catch (Exception e) { } if (signatureName.equals("loginNew") || signatureName.equals("loginSimple") || signatureName.equals("loginOld")) { signatureName = "login"; } resutlMap.put("sysModule", sysModule); resutlMap.put("signatureName", signatureName); resutlMap.put("key1", key1); resutlMap.put("key2", key2); resutlMap.put("clientIp", clientIp); resutlMap.put("requestUrl", requestUrl); resutlMap.put("remoteUrl", remoteUrl); resutlMap.put("etc", etc); if (userAgent != null) // http request header ? user-agent ? . { resutlMap.put("userAgent", userAgent); // OLAP ?? jhkwon } else { resutlMap.put("userAgent", ""); } if (sessionId != null) { if (sessionId.length() > 0) { Encryption sha = new Encryption(); sessionId = sha.getSHA256Digest(sessionId + "roffjrtlshxm"); // resutlMap.put("sessionID", sessionId); // OLAP ?? jhkwon } else { resutlMap.put("sessionID", ""); } } else { resutlMap.put("sessionID", ""); } return resutlMap; } private Map<String, Object> getMakeOut(Object returnObj, Map<String, Object> paramMap) { //String voKey = ""; String result = ""; String resultCode = ""; //String etc = ""; //ModelAndView mav = null; String nationCd = ""; String imChgType = ""; String chgType = ""; String chgStatCd = ""; String fileCount = "0"; Map<String, Object> resutlMap = new HashMap<String, Object>(); // TCloud 6.0? ? ( 2014.09.16 ) // returnObj = com.skplanet.tcloud.common.model.ResultMaster /*try { mav = (ModelAndView) returnObj; // Return ? ModelAndView? VO ? key ? if (mav.getModel().get("result") != null) { voKey = "result"; if (mav.getModel().get("resultCode") != null) { voKey = "resultCode"; } } else if (mav.getModel().get("info") != null) { voKey = "info"; } else if (mav.getModel().get("resultCode") != null) { voKey = "resultCode"; } if (!"".equals(voKey)) { if ("resultCode".equals(voKey)) { resultCode = mav.getModel().get("resultCode").toString(); } else { ResponseHeaderInfo info = (ResponseHeaderInfo) mav.getModel().get(voKey); resultCode = info.getCode(); // Upload Ack ? ? . if (StringUtils.isNotEmpty(info.getOmcMedTyCd())) { etc = paramMap.get("etc") != null || !"".equals(paramMap.get("etc").toString()) ? paramMap.get("etc").toString() + "|medTyCd=" + info.getOmcMedTyCd(): "medTyCd=" + info.getOmcMedTyCd(); paramMap.put("etc", etc); } } } if(mav.getModel().get("nationCd")!= null){ nationCd = mav.getModel().get("nationCd").toString(); } if(mav.getModel().get("imChgType") != null){ imChgType = mav.getModel().get("imChgType").toString(); } if(mav.getModel().get("chgType")!= null){ chgType = mav.getModel().get("chgType").toString(); } if(mav.getModel().get("chgStatCd") != null){ chgStatCd = mav.getModel().get("chgStatCd").toString(); } if(mav.getModel().get("fileCount") != null){ fileCount = mav.getModel().get("fileCount").toString(); } if(mav.getModel().get("memNo") != null){ resutlMap.put("key1", "memNo="+mav.getModel().get("memNo").toString()); } } catch (Exception e) { e.printStackTrace(); }*/ resutlMap.put("resultCode", resultCode); resutlMap.put("result", result); resutlMap.put("nationCd", nationCd); resutlMap.put("imChgType", imChgType); resutlMap.put("chgType", chgType); resutlMap.put("chgStatCd", chgStatCd); resutlMap.put("fileCount", fileCount); return resutlMap; } /** * <pre> * Log ? ?? ?. * </pre> * @param inResutlMap * @param outResutlMap * @param etcResutlMap * @param isSucc * @return */ private String makeLogString(Map<String, Object> inResutlMap, Map<String, Object> outResutlMap, Map<String, Object> etcResutlMap, boolean isSucc) { // null if (outResutlMap.get("totalTimeSeconds") == null) { outResutlMap.put("totalTimeSeconds", ""); } // ? String result = JobConstants.OMC_RESULT_CODE_FAIL; if (isSucc) { result = JobConstants.OMC_RESULT_CODE_SUCC; } // log ? StringBuffer strLog = new StringBuffer(); String gubun = ","; strLog.append(etcResutlMap.get("startTimeStr")).append(gubun); // - yyyymmddhhmmss strLog.append(etcResutlMap.get("serviceName")).append(gubun); // - TCLOUD strLog.append(etcResutlMap.get("hostName")).append(gubun); // - tcHs1 strLog.append(etcResutlMap.get("direction")).append(gubun); // ? : REQ ? REP strLog.append(inResutlMap.get("sysModule")).append(gubun); // ? // sjsim@20130205 if (inResutlMap.get("key1").toString().contains("loginId")) { // ? ? ? ? KEY1? strLog.append(inResutlMap.get("key1")).append(gubun); } else if (outResutlMap.get("key1") != null) { strLog.append(outResutlMap.get("key1")).append(gubun); // ?Key1 - memNo=1000 } else { strLog.append(inResutlMap.get("key1")).append(gubun); // ?Key1 - memNo=1000 } strLog.append(inResutlMap.get("key2")).append(gubun); // ?Key2 - /S001/XXX/YYY/ strLog.append("").append(gubun); // strLog.append(outResutlMap.get("resultCode")).append(gubun); // ? strLog.append(outResutlMap.get("totalTimeSeconds")).append(gubun); // ?() - msec strLog.append(result).append(gubun); // strLog.append(inResutlMap.get("clientIp")).append(gubun); // ClientIP strLog.append(inResutlMap.get("signatureName")).append(gubun); // : ?? Local ? ? ? strLog.append(inResutlMap.get("requestUrl")).append(gubun); // ? : ?? Local ? ?(JSP, ) strLog.append(inResutlMap.get("remoteUrl")).append(gubun); // Remote?URL : ? ? ? ?? URL ? strLog.append(inResutlMap.get("etc")).append(gubun); // // OLAP 2012.07.18. jhkwon strLog.append(inResutlMap.get("userAgent")).append(gubun); strLog.append(inResutlMap.get("sessionID")).append(gubun); // One ID sjsim strLog.append(outResutlMap.get("nationCd")).append(gubun); // strLog.append(outResutlMap.get("imChgType")).append(gubun); // strLog.append(outResutlMap.get("chgType")).append(gubun); // strLog.append(outResutlMap.get("chgStatCd")).append(gubun); // ? // sjsim@20121212 strLog.append(outResutlMap.get("fileCount")); // ? return strLog.toString().replaceAll("null", ""); } /** * <pre> * ?? ? ? * </pre> * @param targetPath * @param currentPath * @return */ private boolean isPackageCheck(String targetPath, String currentPath, boolean isFullPath) { try { if (isFullPath) { int targetLen = targetPath.lastIndexOf("."); int currentLen = currentPath.lastIndexOf("."); if (targetLen == -1 || currentLen == -1) { targetLen = targetPath.length(); currentLen = currentPath.length(); } String targetStr = targetPath.substring(0, targetLen); String currentStr = currentPath.substring(0, currentLen); if (targetStr.equals(currentStr)) { return true; } } else { String[] targetArr = targetPath.split("\\."); String[] currentArr = currentPath.split("\\."); if (targetArr[3].equals(currentArr[3])) { return true; } } } catch (Exception e) { return false; } return false; } /** * <pre> * access IP Properties ?. * </pre> * @param accessIp * @param clientIp * @return */ public boolean isAccessIpCheck(String accessIp, String clientIp) { if ("".equals(accessIp) || accessIp == null || "".equals(clientIp) || clientIp == null) { return false; } try { // client IP? 3? String[] clientIpArr = clientIp.split("\\."); if (clientIpArr.length != 4) { // 4? IP ? return false; } String currentIp = ""; StringBuffer buf = new StringBuffer(); for (int i = 0; i < 3; i++) { String gubun = "."; if (i == 2) { gubun = ""; } buf.append(clientIpArr[i]).append(gubun); //currentIp += clientIpArr[i]+gubun; } currentIp = buf.toString(); String[] accessIpArr = accessIp.split("#"); for (String string : accessIpArr) { // access IP ? if (string.equals(currentIp)) { return true; } } } catch (Exception e) { return false; } return false; } /** * <pre> * access IP ?. * </pre> * @return */ @SuppressWarnings("unused") private boolean isAccessIp(Object sysModule, Object clientIp) throws UserHandleableException { try { if (JobConstants.SERVICE_SYS_NAME_SAMPLE.equals(sysModule)) { String strClientIp = ""; if (clientIp != null) { strClientIp = clientIp.toString(); // IP Properties ? ? ? Access IP ?? ?. boolean isAccessIp = isAccessIpCheck(ConfigProperties.getProperty("omc.access.ip"), strClientIp); // Sample ?? Access ? IP ? . if (!isAccessIp) { return false; } } } } catch (Exception e) { } return true; } public String getSHA256Digest(String input) { String encryptData = ""; try { MessageDigest sha = MessageDigest.getInstance("SHA-256"); sha.update(input.getBytes()); byte[] messageDigest = sha.digest(); StringBuffer buf = new StringBuffer(); for (int i = 0; i < messageDigest.length; i++) { buf.append(Integer.toHexString(messageDigest[i] & 0xFF).toUpperCase()); //encryptData += Integer.toHexString(messageDigest[i] & 0xFF).toUpperCase(); } encryptData = buf.toString(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } return encryptData; } /** * uploadBasicAck ? filter * @param param * @return */ private String getFilterParamUploadBasicAck(String param) { StringTokenizer st = new StringTokenizer(param, "|"); StringBuffer buf = new StringBuffer(); while (st.hasMoreTokens()) { String param2 = st.nextToken(); if (buf.indexOf(param2) == -1) { buf.append(param2 + "|"); } } return buf.toString().substring(0, buf.toString().length() - 1); } /** * log4j? . * @param omc * @return */ private String getFilterOmc(String omc) { if (StringUtils.isNotEmpty(omc)) { omc = omc.replaceAll("\n", ""); } return omc; } }