package itn.let.mjo.cert.web; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.FileVO; import itn.com.cmm.util.RedirectUrlMaker; import itn.let.mjo.cert.service.CertService; import itn.let.mjo.cert.service.CertVO; @Controller public class CertController { @Resource(name = "certService") private CertService certService; /** EgovMessageSource */ @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; @Resource(name = "EgovFileMngService") private EgovFileMngService fileService; /** * * (관리자)인증서류 목록을 조회한다. (pageing) * /uss/ion/cert/CertSentList.do //발신번호 인증서류 * /uss/ion/cert/CertEtcList.do //기타인증 서류 * @param userSearchVO 검색조건정보 * @param model 화면모델 * @return cmm/uss/umt/EgovUserManage * @throws Exception */ @RequestMapping({"/uss/ion/cert/CertSentList.do", "/uss/ion/cert/CertEtcList.do"}) public String certEtcList(@ModelAttribute("searchVO") CertVO certVO, ModelMap model, HttpServletRequest request, HttpSession session) throws Exception { if(certVO.getPageUnit() != 10) { certVO.setPageUnit(certVO.getPageUnit()); } /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(certVO.getPageIndex()); paginationInfo.setRecordCountPerPage(certVO.getPageUnit()); paginationInfo.setPageSize(certVO.getPageSize()); certVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); certVO.setLastIndex(paginationInfo.getLastRecordIndex()); certVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); //userSearchVO.setAdminYn("Y"); if("".equals(certVO.getSearchSortCnd())){ //최초조회시 최신것 조회List certVO.setSearchSortCnd("certId"); certVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; if(pattern.equals("/uss/ion/cert/CertSentList.do")){ //발신인증서류 certVO.setCertType("01"); } if(pattern.equals("/uss/ion/cert/CertEtcList.do")){ //기타인증서류 certVO.setCertType("09"); } resultList = certService.selectCertEtcList(certVO); for(CertVO tempCertVO : resultList) { //첨부파일 id 와 확장자 추출 if(null != tempCertVO.getAtchFileIds()) { if(tempCertVO.getAtchFileIds().contains("^")) { //첨부파일 2개 이상 EX)FILE_000000000011221^FILE_000000000011221|test.jpg^test.PNG if(tempCertVO.getAtchFileIds().split("\\|").length > 1) { //형식 맞을때 if((tempCertVO.getAtchFileIds().split("\\|")[0]).split("\\^").length > 1) { //형식체크 List tempFileSn = new ArrayList<>(); for(int i = 0 ; i < (tempCertVO.getAtchFileIds().split("\\|")[0]).split("\\^").length ; i++){ tempFileSn.add((tempCertVO.getAtchFileIds().split("\\|")[0]).split("\\^")[i]) ; } List tempOrignlFileNm = new ArrayList<>(); for(int i = 0 ; i < (tempCertVO.getAtchFileIds().split("\\|")[1]).split("\\^").length ; i++){ tempOrignlFileNm.add((tempCertVO.getAtchFileIds().split("\\|")[1]).split("\\^")[i].toUpperCase()) ; } tempCertVO.setFileSnList(tempFileSn); tempCertVO.setOrignlFileNmList(tempOrignlFileNm); } } }else { //첨부파일 하나일때 if(tempCertVO.getAtchFileIds().split("\\|").length > 1) { //형식 맞을때 List tempFileSn = new ArrayList<>(); List tempOrignlFileNm = new ArrayList<>(); tempFileSn.add(tempCertVO.getAtchFileIds().split("\\|")[0]); tempOrignlFileNm.add(tempCertVO.getAtchFileIds().split("\\|")[1].toUpperCase()); tempCertVO.setFileSnList(tempFileSn); tempCertVO.setOrignlFileNmList(tempOrignlFileNm); } } } } model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((CertVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); /* String command = "ls -al"; shellCmd(command); execute("ipconfig"); execute("ps ef | grep java"); */ if(pattern.equals("/uss/ion/cert/CertSentList.do")){ //발신인증서류 return "uss/ion/cert/CertSentList"; } return "uss/ion/cert/CertEtcList"; } public void execute(String cmd) { Process process = null; Runtime runtime = Runtime.getRuntime(); StringBuffer successOutput = new StringBuffer(); // 성공 스트링 버퍼 StringBuffer errorOutput = new StringBuffer(); // 오류 스트링 버퍼 BufferedReader successBufferReader = null; // 성공 버퍼 BufferedReader errorBufferReader = null; // 오류 버퍼 String msg = null; // 메시지 List cmdList = new ArrayList(); // 운영체제 구분 (window, window 가 아니면 무조건 linux 로 판단) if (System.getProperty("os.name").indexOf("Windows") > -1) { cmdList.add("cmd"); cmdList.add("/c"); } else { cmdList.add("/bin/sh"); cmdList.add("-c"); } // 명령어 셋팅 cmdList.add(cmd); String[] array = cmdList.toArray(new String[cmdList.size()]); try { // 명령어 실행 process = runtime.exec(array); // shell 실행이 정상 동작했을 경우 successBufferReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "EUC-KR")); while ((msg = successBufferReader.readLine()) != null) { successOutput.append(msg + System.getProperty("line.separator")); } // shell 실행시 에러가 발생했을 경우 errorBufferReader = new BufferedReader(new InputStreamReader(process.getErrorStream(), "EUC-KR")); while ((msg = errorBufferReader.readLine()) != null) { errorOutput.append(msg + System.getProperty("line.separator")); } // 프로세스의 수행이 끝날때까지 대기 process.waitFor(); // shell 실행이 정상 종료되었을 경우 if (process.exitValue() == 0) { System.out.println("성공"); System.out.println(successOutput.toString()); } else { // shell 실행이 비정상 종료되었을 경우 System.out.println("비정상 종료"); System.out.println(successOutput.toString()); } // shell 실행시 에러가 발생 if ("".equals(errorOutput.toString())) { // shell 실행이 비정상 종료되었을 경우 System.out.println("오류"); System.out.println(successOutput.toString()); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } finally { try { process.destroy(); if (successBufferReader != null) successBufferReader.close(); if (errorBufferReader != null) errorBufferReader.close(); } catch (IOException e1) { e1.printStackTrace(); } } } public void shellCmd(String command) throws Exception{ Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(command); InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; while((line = br.readLine()) != null) { System.out.println(line); } } /** * 기타서류관리 등록/수정 * @param searchVO * @param model * @return "/uss/ion/cert/CertSentModify.do" * @throws Exception */ @RequestMapping(value = {"/uss/ion/cert/CertSentModify.do" , "/uss/ion/cert/CertEtcModify.do"}) public String CashModify( @ModelAttribute("searchVO") CertVO searchVO, HttpServletRequest request , Model model) throws Exception { String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; List certFileList = new ArrayList(); if(pattern.equals("/uss/ion/cert/CertSentModify.do")){ //발신인증서류 searchVO.setCertEtcType("01"); } if(pattern.equals("/uss/ion/cert/CertEtcModify.do")){ //기타인증서류 searchVO.setCertEtcType("09"); } if(null != searchVO.getCertId() && !"".equals(searchVO.getCertId())) { //수정 certFileList = certService.selectCertFileList(searchVO); } model.addAttribute("certFileList", certFileList); //CertFile파일정보 List fileList = new ArrayList<>(); //첨부파일정보 if(certFileList !=null){ if(1==certFileList.size() && ((CertVO)certFileList.get(0)).getOrignlFileNm() == null) { }else { fileList.addAll(certFileList); } } model.addAttribute("fileList", fileList); model.addAttribute("searchVO", searchVO); if(pattern.equals("/uss/ion/cert/CertSentModify.do")){ //발신번호 인증 searchVO.setCertEtcType("01"); return "/uss/ion/cert/CertSentModify"; } return "/uss/ion/cert/CertEtcModify"; } /*기타서류 삭제 */ @RequestMapping({"/uss/ion/cert/CertEtcDelete.do" , "/uss/ion/cert/CertSentDelete.do"}) public String deleteCertEtc(@RequestParam("del") String[] del, RedirectAttributes redirectAttributes , HttpServletRequest request , Model model) throws Exception { CertVO tempCertVO = new CertVO(); boolean delete = false; List certFileList = new ArrayList<>(); String whFile = ""; for(String id:del) { tempCertVO.setCertId(id); List fileDelList = new ArrayList<>(); //파일테이블 삭제 조회 fileDelList = certService.selectCertDetailFileList(tempCertVO); for(FileVO delCertFileVo : fileDelList){ whFile = delCertFileVo.getWhFile() ; if(whFile !=null){ File delFile = new File(whFile); delete = delFile.delete(); } } fileService.deleteFileInfs(fileDelList); certService.deleteCertEtc(tempCertVO); } redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; if(pattern.equals("/uss/ion/cert/CertSentDelete.do")){ //발신번호 인증 RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/cert/CertSentList.do"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/cert/CertEtcList.do"); return redirectUrlMaker.getRedirectUrl(); } }