SFTP유틸 클래스 추가

main
이범준 3 weeks ago
parent 90b2c623cf
commit 6077a6b468

@ -46,10 +46,12 @@ public class FtpUtil {
* @param iPort
* @param strDir
*/
public boolean checkFtpServerStatus (
public int checkFtpServerStatus (
String strHost, String strId, String strPassWord, int iPort, String strDir
){
int step = 1;
boolean exception = false;
ftpClient = new FTPClient();
@ -61,22 +63,24 @@ public class FtpUtil {
int resultCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(resultCode)){
ftpClient.disconnect();
return false;
return step;
}
ftpClient.setSoTimeout(3000);
boolean isLogin = ftpClient.login(strId, strPassWord);
if(!isLogin){
return false;
return step;
}
step++;
if(strDir != null && !strDir.equals("")){
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.changeWorkingDirectory(strDir);
if (ftpClient.getReplyCode() == 550) { //디렉토리 없음
ftpClient.logout();
return false;
return step;
}
}
@ -99,9 +103,10 @@ public class FtpUtil {
}
if(exception){
return false;
return step;
}
return true;
return 0;
}
/**

@ -0,0 +1,161 @@
package cfs.common.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@SuppressFBWarnings
@Component
public class SftpUtil {
static Logger logger = Logger.getLogger(SftpUtil.class.getName());
private Session session;
private Channel channel;
private ChannelSftp channelSftp;
/**
*
* @param host
* @param userName
* @param passWord
* @param port
*/
public int checkSftpServerStatus(String host, String userName, String passWord, int port, String path) {
int step = 1;
boolean exception = false;
JSch jsch = new JSch();
try {
session = jsch.getSession(userName, host, port);
session.setPassword(passWord);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
if(!channel.isConnected()){
return step;
}
channelSftp = (ChannelSftp) channel;
step++;
channelSftp.cd(path);
channelSftp.disconnect();
} catch (JSchException e) {
exception = true;
} catch (Exception e) {
exception = true;
} finally {
if (channelSftp != null && channelSftp.isConnected()){
try {
channelSftp.disconnect();
} catch (RuntimeException e) {
exception = true;
} catch (Exception e) {
exception = true;
}
}
}
if(exception){
return step;
}
return 0;
}
public boolean init(String host, String userName, String passWord, int port) {
JSch jsch = new JSch();
try {
session = jsch.getSession(userName, host, port);
session.setPassword(passWord);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
} catch (JSchException e) {
return false;
} catch (Exception e) {
return false;
}
return true;
}
/**
* .
* @param dir ()
* @param file
*/
public boolean sFtpUpload(String strDir, File file) {
boolean isResult = true;
FileInputStream in = null;
try {
in = new FileInputStream(file);
if(channelSftp !=null){
channelSftp.cd(strDir);
channelSftp.put(in, file.getName());
}else{
isResult = false;
}
} catch (SftpException e) {
isResult = false;
} catch (FileNotFoundException e) {
isResult = false;
} finally {
try {
sFtpDisConnection();
if(in != null)
in.close();
} catch (IOException e) {
logger.info(e);
} catch (Exception e) {
logger.info(e);
}
}
return isResult;
}
public void sFtpDisConnection() {
if(channelSftp != null){
channelSftp.quit();
}
}
}

@ -20,6 +20,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import cfs.WASInfo;
import cfs.common.util.FtpUtil;
import cfs.common.util.SftpUtil;
import cfs.schd.BrsEndOfDayInfo;
import cfs.schd.ExemptCarInfo;
import cfs.schd.LocalResidentsCarInfo;
@ -38,6 +39,8 @@ public class CfsScheduleCron {
@Autowired
private FtpUtil ftpUtil;
@Autowired
private SftpUtil sftpUtil;
@Resource(name="schdDao")
private SchdDao schdDao;
@ -101,7 +104,7 @@ public class CfsScheduleCron {
//이그린ESB 연결 체크
Map<String,String> egreenESB = trsmrcvDao.selectConnectionInfo("EGREEN_ESB_AGENT_FTP");
boolean egreenESB_OK = ftpUtil.checkFtpServerStatus(
int egreenESB_OK = sftpUtil.checkSftpServerStatus(
egreenESB.get("CONNECT_IP"),
egreenESB.get("USER_ID"),
egreenESB.get("USER_PASS"),
@ -109,7 +112,7 @@ public class CfsScheduleCron {
egreenESB.get("PATH_INFO")
);
if(!egreenESB_OK){
if(egreenESB_OK != 0){
Map<String, String> map = new HashMap<String, String>();
//mapOrg.put("ERROR_NAME", "이그린ESB연결실패");
//trsmrcvDao.insertError(map);

@ -1,6 +1,7 @@
package cfs.trsmrcv.web;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
@ -33,6 +34,7 @@ import cfs.common.util.ConnectUtil;
import cfs.common.util.FtpUtil;
import cfs.common.util.Result;
import cfs.common.util.ResultSmartPlatform;
import cfs.common.util.SftpUtil;
import cfs.schd.dao.SchdDao;
import cfs.trsmrcv.dao.TrsmrcvDao;
@ -49,6 +51,8 @@ public class TestController {
@Autowired
private FtpUtil ftpUtil;
@Autowired
private SftpUtil sftpUtil;
@RequestMapping(value="/cfs/trsmrcv/sleep.do", method=RequestMethod.GET)
public @ResponseBody Map<String, Object> sleep(HttpServletRequest request) throws Exception {
@ -254,14 +258,14 @@ public class TestController {
return result;
}
@RequestMapping(value="/cfs/trsmrcv/ftptest.do", method=RequestMethod.GET)
public @ResponseBody Map<String, Object> ftptest(HttpServletRequest request) throws Exception {
@RequestMapping(value="/cfs/trsmrcv/sftptest.do", method=RequestMethod.GET)
public @ResponseBody Map<String, Object> sftptest(HttpServletRequest request) throws Exception {
ResultSmartPlatform result = new ResultSmartPlatform();
Map<String,String> connectionInfo = trsmrcvDao.selectConnectionInfo("EGREEN_ESB_AGENT_FTP");
boolean ftpServerOk = ftpUtil.checkFtpServerStatus(
int ftpServerOk = sftpUtil.checkSftpServerStatus(
connectionInfo.get("CONNECT_IP"),
connectionInfo.get("USER_ID"),
connectionInfo.get("USER_PASS"),
@ -269,7 +273,8 @@ public class TestController {
connectionInfo.get("PATH_INFO")
);
if(!ftpServerOk){
if(ftpServerOk != 0){
result.setData("errorStep", ftpServerOk);
result.setErrorMsg(Result.STATUS_ERROR, "이그린 연계 서버 연결 오류가 발생하였습니다.");
return result.getResult();
}
@ -278,6 +283,41 @@ public class TestController {
return result.getResult();
}
@RequestMapping(value="/cfs/trsmrcv/sftpUtest.do", method=RequestMethod.GET)
public @ResponseBody Map<String, Object> sftpUtest(HttpServletRequest request) throws Exception {
ResultSmartPlatform result = new ResultSmartPlatform();
Map<String,String> connectionInfo = trsmrcvDao.selectConnectionInfo("EGREEN_ESB_AGENT_FTP");
boolean initResult = sftpUtil.init(
connectionInfo.get("CONNECT_IP"),
connectionInfo.get("USER_ID"),
connectionInfo.get("USER_PASS"),
Integer.parseInt(connectionInfo.get("CONNECT_PORT"))
);
if(!initResult){
result.setErrorMsg(Result.STATUS_ERROR, "이그린 연계 서버 연결 오류가 발생하였습니다.");
return result.getResult();
}
File file = new File("test.txt");
if(!file.exists()){
file.createNewFile();
}
boolean uResult = sftpUtil.sFtpUpload(connectionInfo.get("PATH_INFO"), file);
if(!uResult){
result.setErrorMsg(Result.STATUS_ERROR, "이그린 연계 서버 업로드 오류가 발생하였습니다.");
return result.getResult();
}
result.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.");
return result.getResult();
}
@RequestMapping(value="/cfs/trsmrcv/seoulsmstest.do", method=RequestMethod.GET)
public @ResponseBody Map<String, Object> seoulsmstest(HttpServletRequest request) throws Exception {
ResultSmartPlatform result = new ResultSmartPlatform();

Loading…
Cancel
Save