358 lines
12 KiB
Java
358 lines
12 KiB
Java
package seed.utils;
|
|
|
|
import java.io.IOException;
|
|
import java.net.InetAddress;
|
|
import java.net.UnknownHostException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
import org.apache.log4j.Logger;
|
|
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
|
|
import seed.dao.FirewallDAO;
|
|
|
|
public class InterceptorCheck extends HandlerInterceptorAdapter{
|
|
|
|
private Logger log = Logger.getLogger(this.getClass());
|
|
|
|
@Autowired
|
|
private FirewallDAO firewallDAO;
|
|
|
|
@Value("#{config['server.host.name']}")
|
|
private String serverHostName;
|
|
|
|
@Value("#{config['server.host.ip']}")
|
|
private String serverHostIp;
|
|
|
|
@Value("#{config['seed.key']}")
|
|
private String seedKey;
|
|
|
|
@Value("#{config['root.url']}")
|
|
private String rootUrl;
|
|
|
|
@Value("#{config['seed.key.date']}")
|
|
private String seedKeyDate;
|
|
|
|
private static String licenseKey = "seed";
|
|
|
|
public static String getLicenseKey() {
|
|
return licenseKey;
|
|
}
|
|
|
|
public void setSessionRemove(HttpSession session){
|
|
session.removeAttribute("memberIdx");
|
|
session.removeAttribute("memberId");
|
|
session.removeAttribute("memberName");
|
|
session.removeAttribute("memberDept");
|
|
session.removeAttribute("memberPosition");
|
|
session.removeAttribute("memberTel");
|
|
session.removeAttribute("memberPhone");
|
|
session.removeAttribute("memberEmail1");
|
|
session.removeAttribute("memberEmail2");
|
|
session.removeAttribute("memberGrant");
|
|
|
|
session.removeAttribute("url");
|
|
session.removeAttribute("message");
|
|
session.removeAttribute("opener");
|
|
session.removeAttribute("append");
|
|
session.removeAttribute("self");
|
|
}
|
|
|
|
@Override
|
|
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler) {
|
|
|
|
HttpSession session = httpServletRequest.getSession();
|
|
|
|
session.removeAttribute("url");
|
|
session.removeAttribute("message");
|
|
session.removeAttribute("opener");
|
|
session.removeAttribute("append");
|
|
session.removeAttribute("self");
|
|
|
|
/*try{
|
|
|
|
boolean hostNameChk = false;
|
|
boolean hostIpChk = false;
|
|
|
|
StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();
|
|
pbeEnc.setPassword(InterceptorCheck.getLicenseKey());
|
|
|
|
if(!pbeEnc.decrypt(seedKeyDate).equals("*")){
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
|
|
|
Date getDate = new Date();
|
|
Date seedKeyDateChk = sdf.parse(pbeEnc.decrypt(seedKeyDate));
|
|
|
|
if(Integer.parseInt(sdf.format(getDate)) > Integer.parseInt(sdf.format(seedKeyDateChk))){
|
|
session.setAttribute("url", "/common/seed.do");
|
|
session.setAttribute("message", "common.message.no.seed");
|
|
log.error("seedKeyDate Error");
|
|
|
|
httpServletResponse.sendRedirect("/common/message.do");
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
String seedKeys[] = seedKey.split(",");
|
|
String rootUrls[] = rootUrl.split(",");
|
|
|
|
if(seedKeys.length != rootUrls.length){
|
|
|
|
session.setAttribute("url", "/common/seed.do");
|
|
session.setAttribute("message", "common.message.no.seed");
|
|
log.error("seedKeys.length Error, rootUrls.length Error");
|
|
|
|
httpServletResponse.sendRedirect("/common/message.do");
|
|
|
|
return false;
|
|
}
|
|
|
|
for(int i=0; i<seedKeys.length; i++){
|
|
|
|
if(!pbeEnc.decrypt(seedKeys[i]).equals(rootUrls[i])){
|
|
|
|
session.setAttribute("url", "/common/seed.do");
|
|
session.setAttribute("message", "common.message.no.seed");
|
|
log.error("seedKeys Error");
|
|
|
|
httpServletResponse.sendRedirect("/common/message.do");
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
String hostName = "";
|
|
String hostIp = "";
|
|
InetAddress ip;
|
|
|
|
try{
|
|
|
|
ip = InetAddress.getLocalHost();
|
|
hostName = ip.getHostName();
|
|
hostIp = ip.getHostAddress();
|
|
|
|
}catch (UnknownHostException ex) {
|
|
log.error("CHECK ERROR:",ex);
|
|
}catch (Exception ex) {
|
|
log.error("CHECK ERROR:",ex);
|
|
}
|
|
|
|
String serverHostNames[] = serverHostName.split(",");
|
|
String serverHostIps[] = serverHostIp.split(",");
|
|
|
|
if(serverHostNames.length != serverHostIps.length){
|
|
|
|
session.setAttribute("url", "/common/seed.do");
|
|
session.setAttribute("message", "common.message.no.seed");
|
|
log.error("serverHostNames.length Error, serverHostIps.length Error");
|
|
|
|
httpServletResponse.sendRedirect("/common/message.do");
|
|
|
|
return false;
|
|
}
|
|
|
|
for(int i=0; i<serverHostNames.length; i++){
|
|
|
|
if(hostName.replaceAll(" ", "").equals(pbeEnc.decrypt(serverHostNames[i].replaceAll(" ", "")))){
|
|
hostNameChk = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
for(int i=0; i<serverHostIps.length; i++){
|
|
|
|
if(hostIp.replaceAll(" ", "").equals(pbeEnc.decrypt(serverHostIps[i].replaceAll(" ", "")))){
|
|
hostIpChk = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!hostNameChk || !hostIpChk){
|
|
|
|
session.setAttribute("url", "/common/seed.do");
|
|
session.setAttribute("message", "common.message.no.seed");
|
|
log.error("hostName Error : " + hostNameChk + ", hostIp Error : " + hostIpChk);
|
|
|
|
httpServletResponse.sendRedirect("/common/message.do");
|
|
|
|
return false;
|
|
}
|
|
|
|
}catch (Exception e) {
|
|
|
|
session.setAttribute("url", "/common/seed.do");
|
|
session.setAttribute("message", "common.message.no.seed");
|
|
log.error("CHECK ERROR:",e);
|
|
|
|
try {
|
|
httpServletResponse.sendRedirect("/common/message.do");
|
|
} catch (IOException ex) {
|
|
log.error("CHECK ERROR:",ex);
|
|
}
|
|
|
|
return false;
|
|
}*/
|
|
|
|
// boolean firewallChk = false;
|
|
//테스트를 위한 수정_이준호_240704!!!!!!!!!!!!!!!!
|
|
// boolean firewallChk = true;
|
|
//
|
|
// System.out.println("tset");
|
|
// log.info("testsetset");
|
|
//
|
|
// List<Map<Object, Object>> firewallList = firewallDAO.getFirewallList();
|
|
//
|
|
// httpServletRequest.getHeader("WL-Proxy-Client-IP");
|
|
//
|
|
// String memberIp = httpServletRequest.getRemoteAddr();
|
|
//
|
|
// for(int i=0; i<firewallList.size(); i++){
|
|
//
|
|
// Map<Object, Object> tFirewallDB = firewallList.get(i);
|
|
//
|
|
// if(memberIp.indexOf(":") > 0){
|
|
//
|
|
// if(tFirewallDB.get("_firewallAClass").equals("*") && tFirewallDB.get("_firewallBClass").equals("*") && tFirewallDB.get("_firewallCClass").equals("*")
|
|
// && tFirewallDB.get("_firewallDClass").equals("*") && tFirewallDB.get("_firewallEClass").equals("*") && tFirewallDB.get("_firewallFClass").equals("*")
|
|
// && tFirewallDB.get("_firewallGClass").equals("*") && tFirewallDB.get("_firewallHClass").equals("*")){
|
|
// firewallChk = true;
|
|
// break;
|
|
// }
|
|
//
|
|
// String[] memberIps = memberIp.split(":");
|
|
//
|
|
// if((memberIps[0].equals(tFirewallDB.get("_firewallAClass")) || tFirewallDB.get("_firewallAClass").equals("*")) &&
|
|
// (memberIps[1].equals(tFirewallDB.get("_firewallBClass")) || tFirewallDB.get("_firewallBClass").equals("*")) &&
|
|
// (memberIps[2].equals(tFirewallDB.get("_firewallCClass")) || tFirewallDB.get("_firewallCClass").equals("*")) &&
|
|
// (memberIps[3].equals(tFirewallDB.get("_firewallDClass")) || tFirewallDB.get("_firewallDClass").equals("*")) &&
|
|
// (memberIps[4].equals(tFirewallDB.get("_firewallEClass")) || tFirewallDB.get("_firewallEClass").equals("*")) &&
|
|
// (memberIps[5].equals(tFirewallDB.get("_firewallFClass")) || tFirewallDB.get("_firewallFClass").equals("*")) &&
|
|
// (memberIps[6].equals(tFirewallDB.get("_firewallGClass")) || tFirewallDB.get("_firewallGClass").equals("*")) &&
|
|
// (memberIps[7].equals(tFirewallDB.get("_firewallHClass")) || tFirewallDB.get("_firewallHClass").equals("*"))){
|
|
//
|
|
// firewallChk = true;
|
|
// }
|
|
//
|
|
// }else{
|
|
//
|
|
// if(tFirewallDB.get("_firewallAClass").equals("*") && tFirewallDB.get("_firewallBClass").equals("*") && tFirewallDB.get("_firewallCClass").equals("*")){
|
|
// firewallChk = true;
|
|
// break;
|
|
// }
|
|
//
|
|
// String[] memberIps = memberIp.split("\\.");
|
|
//
|
|
// if((memberIps[0].equals(tFirewallDB.get("_firewallAClass")) || tFirewallDB.get("_firewallAClass").equals("*")) &&
|
|
// (memberIps[1].equals(tFirewallDB.get("_firewallBClass")) || tFirewallDB.get("_firewallBClass").equals("*")) &&
|
|
// (memberIps[2].equals(tFirewallDB.get("_firewallCClass")) || tFirewallDB.get("_firewallCClass").equals("*"))){
|
|
//
|
|
// firewallChk = true;
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
//// if(!firewallChk){
|
|
////
|
|
//// setSessionRemove(session);
|
|
//// session.setAttribute("url", "/common/firewall.do");
|
|
//// session.setAttribute("message", "(message)현재 접속한 아이피("+memberIp+")는 접근하실수 없습니다.");
|
|
////
|
|
//// try {
|
|
//// httpServletResponse.sendRedirect("/common/message.do");
|
|
//// } catch (IOException ex) {
|
|
//// log.error("CHECK ERROR:",ex);
|
|
//// }
|
|
////
|
|
//// return false;
|
|
//// }
|
|
//
|
|
// boolean sessionChk = false;
|
|
//
|
|
// String[] urlChecks = {"/gta/login.do", "/gta/proc/loginProc.do", "/gta/proc/logoutProc.do",
|
|
// "/gtu/login.do", "/gtu/proc/loginProc.do", "/gtu/proc/logoutProc.do",
|
|
// "/gtm/login.do", "/gtm/proc/loginProc.do", "/gtm/proc/logoutProc.do",
|
|
// "/gte/login.do", "/gte/proc/loginProc.do", "/gte/proc/logoutProc.do",
|
|
// "Page.do", "PageProc.do"};
|
|
//
|
|
// for(int i=0; i<urlChecks.length; i++){
|
|
// if(httpServletRequest.getRequestURI().indexOf(urlChecks[i]) > -1){
|
|
// sessionChk = true;
|
|
// break;
|
|
// }
|
|
// }
|
|
//
|
|
// if(!sessionChk){
|
|
//
|
|
// Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
|
|
// String memberGrant = (String)SeedUtils.setReplaceNull(session.getAttribute("memberGrant"),"N");
|
|
//
|
|
// if(memberIdx == 0 || (!memberGrant.equals("S") && !memberGrant.equals("U") && !memberGrant.equals("SM") && !memberGrant.equals("M"))){
|
|
//
|
|
// setSessionRemove(session);
|
|
// if(httpServletRequest.getRequestURI().indexOf("/gta/") >= 0){
|
|
// session.setAttribute("url", "/gta/login.do");
|
|
// }else if(httpServletRequest.getRequestURI().indexOf("/gtu/") >= 0){
|
|
// session.setAttribute("url", "/gtu/login.do");
|
|
// }else if(httpServletRequest.getRequestURI().indexOf("/gtm/") >= 0){
|
|
// session.setAttribute("url", "/gtm/login.do");
|
|
// }else if(httpServletRequest.getRequestURI().indexOf("/gte/") >= 0){
|
|
// session.setAttribute("url", "/gte/login.do");
|
|
// }
|
|
//
|
|
// session.setAttribute("message", "common.message.no.login");
|
|
//
|
|
// try {
|
|
// httpServletResponse.sendRedirect("/common/message.do");
|
|
// } catch (IOException ex) {
|
|
// log.error("CHECK ERROR:",ex);
|
|
// }
|
|
//
|
|
// return false;
|
|
// }
|
|
// }
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, ModelAndView modelAndView) {
|
|
|
|
//log.error("postHandle : " + request.getRequestURI());
|
|
|
|
/*
|
|
log.error("request : " + request);
|
|
log.error("response : " + response);
|
|
log.error("handler : " + handler);
|
|
log.error("modelAndView : " + modelAndView);
|
|
*/
|
|
|
|
//log.error("check postHandle");
|
|
}
|
|
|
|
@Override
|
|
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, Exception ex) {
|
|
|
|
//log.error("afterCompletion : " + request.getRequestURI());
|
|
|
|
/*
|
|
log.error("request : " + request);
|
|
log.error("response : " + response);
|
|
log.error("handler : " + handler);
|
|
*/
|
|
|
|
//log.error("check afterCompletion");
|
|
}
|
|
}
|