diff --git a/src/main/java/kcc/com/cmm/util/IpUtil.java b/src/main/java/kcc/com/cmm/util/IpUtil.java index a9e636f8..4cc188c0 100644 --- a/src/main/java/kcc/com/cmm/util/IpUtil.java +++ b/src/main/java/kcc/com/cmm/util/IpUtil.java @@ -16,7 +16,9 @@ package kcc.com.cmm.util; import java.io.UnsupportedEncodingException; +import java.net.InetAddress; import java.net.URLEncoder; +import java.net.UnknownHostException; import javax.servlet.http.HttpServletRequest; @@ -111,4 +113,37 @@ public class IpUtil { return ozServerNm; } + + + public static String getClientIPv4(HttpServletRequest request) { + String userip = request.getHeader("X-Forwarded-For"); // 아파치 아래에 웹로직이 있을경우 아이피 가져오기 + + if (userip == null || "".equals(userip)) { // 아이피 가져오기 , 바로 웹로직이 있을경우 + userip = request.getRemoteAddr(); + } + + if (userip == null || "".equals(userip)) { + return ""; + } + + // 여러 IP가 있을 경우 첫 번째 IP 사용 + String[] userips = userip.split(","); + userip = userips[0].trim(); + + // IPv6 주소인 경우 IPv4로 변환 시도 + try { + InetAddress inetAddress = InetAddress.getByName(userip); + if (inetAddress instanceof java.net.Inet6Address) { + byte[] ipv4Bytes = new byte[4]; + System.arraycopy(inetAddress.getAddress(), 12, ipv4Bytes, 0, 4); + InetAddress ipv4Address = InetAddress.getByAddress(ipv4Bytes); + return ipv4Address.getHostAddress(); + } + } catch (UnknownHostException e) { + e.printStackTrace(); // 예외 발생 시 로그 출력 + } + + // IPv4 주소라면 그대로 반환 + return userip; + } } \ No newline at end of file diff --git a/src/main/java/kcc/let/main/web/EgovMainController.java b/src/main/java/kcc/let/main/web/EgovMainController.java index 7e08aa34..10bb1e02 100644 --- a/src/main/java/kcc/let/main/web/EgovMainController.java +++ b/src/main/java/kcc/let/main/web/EgovMainController.java @@ -39,6 +39,7 @@ import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import kcc.com.cmm.ComDefaultVO; import kcc.com.cmm.LoginVO; +import kcc.com.cmm.util.IpUtil; import kcc.com.cmm.util.RedirectUrlMaker; import kcc.com.uss.ion.bnr.service.BannerVO; import kcc.com.uss.ion.bnr.service.EgovBannerService; @@ -197,14 +198,14 @@ public class EgovMainController { // model.addAttribute("uniqId", user.getUniqId()); //이전접속정보 -// LoginLog loginLog = new LoginLog(); -// loginLog.setConectId(user.getUniqId()); -// loginLog = loginLogService.selectBeforeAmdinLog(loginLog); //이전접속 시간 -// if(loginLog !=null) { -// model.addAttribute("beforeLoginDate", loginLog.getCreatDt()); -// }else { -// model.addAttribute("beforeLoginDate", ""); -// } + LoginLog loginLog = new LoginLog(); + loginLog.setConectId(user.getUniqId()); + loginLog = loginLogService.selectBeforeAmdinLog(loginLog); //이전접속 시간 + if(loginLog !=null) { + model.addAttribute("beforeLoginDate", loginLog.getCreatDt()); + }else { + model.addAttribute("beforeLoginDate", ""); + } }else{ //model.addAttribute("list_headmenu", menuManageService.selectMainMenuHeadAnonymous(menuManageVO)); //model.addAttribute("list_menulist", menuManageService.selectMainMenuLeftAnonymous(menuManageVO)); @@ -246,6 +247,8 @@ public class EgovMainController { model.addAttribute("memDept", memberDept); model.addAttribute("enaDept", memberJoinService.deptList(commandMap)); + model.addAttribute("IP", IpUtil.getClientIPv4(req)); + return "main/inc/EgovIncTopnav"; // 내부업무의 상단메뉴 화면 } @@ -526,26 +529,26 @@ public class EgovMainController { @RequestParam Map commandMap ,ModelMap model) throws Exception { -// SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyyMMdd", Locale.KOREA ); -// Date currentTime = new Date (); -// String mTime = mSimpleDateFormat.format ( currentTime ); -// HttpServletRequest req = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); -// String ip = req.getHeader("X-FORWARDED-FOR"); -// if (ip == null){ ip = req.getRemoteAddr();} -// LoginLog loginLog = new LoginLog(); -// loginLog.setLoginIp(ip); -// loginLog.setCreatDt(mTime); -// loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O -// loginLog.setErrOccrrAt("N"); -// loginLog.setErrorCode(""); -// loginLog.setUserAt("A"); //관리자 -// loginLog.setLoginId(""); //connnect_id -// loginLog.setUrl(req.getRequestURI()); -// if(EgovUserDetailsHelper.isAuthenticated()){ -// LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); -// loginLog.setLoginId(user.getUniqId()); -// } - //loginLogService.logInsertAdminLoginLog(loginLog); + SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyyMMdd", Locale.KOREA ); + Date currentTime = new Date (); + String mTime = mSimpleDateFormat.format ( currentTime ); + HttpServletRequest req = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); + String ip = req.getHeader("X-FORWARDED-FOR"); + if (ip == null){ ip = req.getRemoteAddr();} + LoginLog loginLog = new LoginLog(); + loginLog.setLoginIp(ip); + loginLog.setCreatDt(mTime); + loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O + loginLog.setErrOccrrAt("N"); + loginLog.setErrorCode(""); + loginLog.setUserAt("A"); //관리자 + loginLog.setLoginId(""); //connnect_id + loginLog.setUrl(req.getRequestURI()); + if(EgovUserDetailsHelper.isAuthenticated()){ + LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + loginLog.setLoginId(user.getUniqId()); + } + loginLogService.logInsertAdminLoginLog(loginLog); return "main/inc/EgovIncFooter"; // 내부업무의 상단메뉴 화면 } diff --git a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java index 04d5aa53..6f0420d1 100644 --- a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java @@ -635,13 +635,13 @@ public class EgovLoginController { } } - /* - * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); - * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); - * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("A"); - * loginLog.setDeviceType("P"); loginLog.setProgrmFileNm("adminLogin"); - * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog); - */ + /* + * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); + * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); + * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("A"); + * loginLog.setDeviceType("P"); loginLog.setProgrmFileNm("adminLogin"); + * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog); + */ } return "blank"; // 성공 시 페이지.. (redirect 불가) diff --git a/src/main/resources/egovframework/spring/com/context-idgen.xml b/src/main/resources/egovframework/spring/com/context-idgen.xml index 79bcf975..c8ef90a6 100644 --- a/src/main/resources/egovframework/spring/com/context-idgen.xml +++ b/src/main/resources/egovframework/spring/com/context-idgen.xml @@ -2187,7 +2187,7 @@ - + @@ -2205,7 +2205,7 @@ - + @@ -2235,7 +2235,7 @@ - + diff --git a/src/main/resources/egovframework/sqlmap/config/oracle/sql-map-config-oracle-sym-log-clg.xml b/src/main/resources/egovframework/sqlmap/config/oracle/sql-map-config-oracle-sym-log-clg.xml new file mode 100644 index 00000000..421de7c9 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/config/oracle/sql-map-config-oracle-sym-log-clg.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/sym/log/clg/EgovLoginLog_SQL_Oracle.xml b/src/main/resources/egovframework/sqlmap/let/sym/log/clg/EgovLoginLog_SQL_Oracle.xml index b877abf9..304d27bf 100644 --- a/src/main/resources/egovframework/sqlmap/let/sym/log/clg/EgovLoginLog_SQL_Oracle.xml +++ b/src/main/resources/egovframework/sqlmap/let/sym/log/clg/EgovLoginLog_SQL_Oracle.xml @@ -226,10 +226,9 @@ ,#deviceType# , - ( SELECT A.PROGRM_FILE_NM FROM LETTNPROGRMLIST A WHERE A.URL = #url# LIMIT 1 ) - ,( - SELECT B.MENU_NM FROM LETTNPROGRMLIST A INNER JOIN LETTNMENUINFO B - WHERE A.PROGRM_FILE_NM = B.PROGRM_FILE_NM AND A.URL = #url# LIMIT 1 ) + + , , SYSDATE) @@ -605,16 +604,35 @@ diff --git a/src/main/webapp/WEB-INF/jsp/layout/adminLayout.jsp b/src/main/webapp/WEB-INF/jsp/layout/adminLayout.jsp index c6c81885..f0b6a390 100644 --- a/src/main/webapp/WEB-INF/jsp/layout/adminLayout.jsp +++ b/src/main/webapp/WEB-INF/jsp/layout/adminLayout.jsp @@ -2,24 +2,40 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %> - + + - - + + + 관리자페이지 + + + + + + + + - <%-- 전자조정 --%> - + + + + + + + + - - - + + + - - + + <%-- 전자조정 --%> @@ -34,18 +50,16 @@ -<%-- 전자조정 --%> - -
- - -
- - +<%-- --%> + +
+ +
+ + +
- -
- + + - diff --git a/src/main/webapp/WEB-INF/jsp/main/inc/EgovIncLeftmenu.jsp b/src/main/webapp/WEB-INF/jsp/main/inc/EgovIncLeftmenu.jsp index 633d5cfb..03fb9449 100644 --- a/src/main/webapp/WEB-INF/jsp/main/inc/EgovIncLeftmenu.jsp +++ b/src/main/webapp/WEB-INF/jsp/main/inc/EgovIncLeftmenu.jsp @@ -40,30 +40,31 @@ $( document).ready(function() { location.href = "/EgovTopPageLink.do?link="+baseMenuUrl+"&baseMenuNo="+base; } + -
-

- - - -

+
+

FAIR 한국공정거래조정원 분쟁조정사건처리시스템

- +
--%>