lyb 2 viikkoa sitten
vanhempi
commit
450aef2434

+ 6 - 0
README.md

@ -1,5 +1,11 @@
1 1
# BaobaotangProbe
2 2
3
4
FTP主目录 /tmp/ftp
5
6
mkdir -p /tmp/ftp
7
chmod 777 /tmp/ftp
8
3 9
MIAOZHEN Log Reporter process
4 10
5 11
## 依赖

+ 88 - 91
src/main/java/com/miaozhen/TestController.java

@ -5,10 +5,8 @@ import com.miaozhen.tmssys.dto.CinemaInfo;
5 5
import com.miaozhen.tmssys.dto.Ftp;
6 6
import com.miaozhen.util.DateUtil;
7 7
import com.miaozhen.util.FileUtils;
8
import com.miaozhen.bean.ConfigBean;
9 8
import com.miaozhen.util.MD5Utils;
10 9
import net.sf.json.JSONObject;
11
import org.apache.commons.codec.digest.DigestUtils;
12 10
import org.springframework.boot.context.properties.EnableConfigurationProperties;
13 11
import org.springframework.stereotype.Controller;
14 12
import org.springframework.web.bind.annotation.RequestMapping;
@ -22,85 +20,31 @@ import java.util.Date;
22 20
23 21
@Controller
24 22
@RequestMapping(value = "/api")
25
@EnableConfigurationProperties({ ConfigBean.class })
26 23
public class TestController {
27
    @Resource
28
    private ConfigBean configBean;
29
    @RequestMapping("test1")
30
    @ResponseBody
31
    public String test1(@RequestParam("serverType") String serverType) throws IOException {
32
33
//        FileUtils.connectSftp(configBean.getSftpHost(),configBean.getSftpPort(),configBean.getSftpaeUser(),configBean.getSftpaePassword());
34
//        //传输给MSM。
35
//        String sftpMsmDir=configBean.getSftpMsmDir()+LocalDate.now().toString()+"/serviceType";
36
//        boolean success=FileUtils.uploadString("<?xml version=\"1.0\" encoding=\"UTF-8\"?> <response status=\"OK\" version=\"2\">     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T09:49:02\"               end_time=\"2019-04-10T09:50:03\">Success     </playback>     <playback content_name=\"FanTanFengBao4-2D_235_JP_98M_51_PTH_0320\"               content_uuid=\"urn:uuid:1b5070ba-4a70-4fb4-b20d-2ade32466c52\" start_time=\"2019-04-10T09:50:03\"               end_time=\"2019-04-10T09:53:06\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T12:19:03\"               end_time=\"2019-04-10T12:20:05\">Success     </playback>     <playback content_name=\"FanTanFengBao4-2D_235_JP_98M_51_PTH_0320\"               content_uuid=\"urn:uuid:1b5070ba-4a70-4fb4-b20d-2ade32466c52\" start_time=\"2019-04-10T12:20:05\"               end_time=\"2019-04-10T13:58:43\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T14:20:41\"               end_time=\"2019-04-10T14:21:42\">Success     </playback>     <playback content_name=\"Dumbo2019_FTR-1-3D_F_CMN-XX_CN_51-Dbox_2K_DI_20190312_DTB_IOP-3D_OV\"               content_uuid=\"urn:uuid:7b7bce1c-a467-40cc-8451-4756fe16b47b\" start_time=\"2019-04-10T14:21:43\"               end_time=\"2019-04-10T16:13:40\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T16:30:39\"               end_time=\"2019-04-10T16:31:40\">Success     </playback>     <playback content_name=\"LaoShiHao_FTR_S_CMN-QMS_51_2K_CFA_20190308_114M_OV\"               content_uuid=\"urn:uuid:767142bd-619c-4af0-8589-3e7c5364c06b\" start_time=\"2019-04-10T16:31:40\"               end_time=\"2019-04-10T18:26:02\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T18:30:41\"               end_time=\"2019-04-10T18:31:42\">Success     </playback>     <playback content_name=\"LaoShiHao_FTR_S_CMN-QMS_51_2K_CFA_20190308_114M_OV\"               content_uuid=\"urn:uuid:767142bd-619c-4af0-8589-3e7c5364c06b\" start_time=\"2019-04-10T18:31:43\"               end_time=\"2019-04-10T18:33:30\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T20:30:39\"               end_time=\"2019-04-10T20:31:40\">Success     </playback>     <playback content_name=\"TiaoYinShi-2D_235_JP_137M_51_PTH_0312\"               content_uuid=\"urn:uuid:a339ce0e-05fb-46af-9029-d898d9ada947\" start_time=\"2019-04-10T20:31:40\"               end_time=\"2019-04-10T22:45:08\">Success     </playback> </response>",
37
//                DateUtil.format(new Date(),"yyyy_MM_dd_HH_mm_SS")+".xml",sftpMsmDir);
38
//        FileUtils.disConnectSftp();
39
//        System.out.println("hhhh->success="+success);
40
//        FileUtils.connectSftp(configBean.getSftpHost(), configBean.getSftpPort(), configBean.getSftpaeUser(), configBean.getSftpaePassword());
41
42
        CinemaInfo cinemaInfo =new CinemaInfo();
43
        Ftp ftp=new Ftp();
44
        ftp.setFtpIP("127.0.0.1");
45
        cinemaInfo.setFtp(ftp);
46
        cinemaInfo.setCode("20901928489284");
47
        String encoding = "UTF-8";
48
        String logContent="";
49
50
        File file = new File(serverType+".xml");
51
        if (file.isFile() && file.exists()) { //判断文件是否存在
52
            InputStreamReader read = new InputStreamReader(
53
                    new FileInputStream(file), encoding);
54
            BufferedReader bufferedReader = new BufferedReader(read);
55
            String line;StringBuilder data= new StringBuilder();
56
            while ((line = bufferedReader.readLine()) != null) {
57
                data.append(line);
58
            }
59
            read.close();
60
            System.out.println(data);
61
            logContent=data.toString();
62
        } else {
63
            System.out.println("找不到文件");
64
        }
65
        //文件夹路径:ooh/yyyy-MM-dd
66
        String sftpMsmDir = configBean.getSftpMsmDir() + LocalDate.now().toString();
67
        //文件名字:IP_HH-mm-SS.json
68
        String fileName = cinemaInfo.getFtp().getFtpIP() + "_" + serverType + "_" + DateUtil.format(new Date(), "HH-mm-SS") + ".json";
69
        UploadBean bean = new UploadBean();
70
        bean.setServerType(serverType);
71
        bean.setServerIp(cinemaInfo.getFtp().getFtpIP());
72
        bean.setAuditNumber(1);
73
        bean.setCinemaCode(cinemaInfo.getCode());
74
        bean.setDate(LocalDate.now().toString());
75
        bean.setContent(logContent);
76
        FileUtils.connectSftp(configBean.getSftpHost(), configBean.getSftpPort(), configBean.getSftpaeUser(), configBean.getSftpaePassword());
77
        //上传
78
        String content = JSONObject.fromObject(bean).toString();
79
        boolean success = FileUtils.uploadString(content, fileName, sftpMsmDir);
80
        //关闭
81
        FileUtils.disConnectSftp();
82
83
        return success+"~"+configBean.toString();
84
    }
85
    @RequestMapping("test2")
86
    @ResponseBody
87
    public String test2() throws IOException {
88
       return ""+upLoadSucceedFile();
89
    }
90
91
    @RequestMapping("test3")
92
    @ResponseBody
93
    private void postLog(@RequestParam("serverType") String serverType,@RequestParam("content") String content,@RequestParam("cinemaCode") String cinemaCode) throws IOException {
94
        String ip =  FileUtils.getIp(),date="2021-12-06", dir = "/test/ooh/",deviceIp="192.168.1.2",
95
        fileName = ip + "_" + deviceIp + "_" + serverType + "_" +
96
                DateUtil.format(new Date(), "HH-mm-ss-SSS") + "-" + MD5Utils.getUUID() + ".json";
97
        FileUtils.sendData(content,serverType ,cinemaCode,1,ip,dir+date,fileName,date,"asd");
98
99
    }
100
101
    public static void main(String[] args) throws IOException {
24
//    @Resource
25
//    private ConfigBean configBean;
26
//    @RequestMapping("test1")
27
//    @ResponseBody
28
//    public String test1(@RequestParam("serverType") String serverType) throws IOException {
29
//
30
////        FileUtils.connectSftp(configBean.getSftpHost(),configBean.getSftpPort(),configBean.getSftpaeUser(),configBean.getSftpaePassword());
31
////        //传输给MSM。
32
////        String sftpMsmDir=configBean.getSftpMsmDir()+LocalDate.now().toString()+"/serviceType";
33
////        boolean success=FileUtils.uploadString("<?xml version=\"1.0\" encoding=\"UTF-8\"?> <response status=\"OK\" version=\"2\">     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T09:49:02\"               end_time=\"2019-04-10T09:50:03\">Success     </playback>     <playback content_name=\"FanTanFengBao4-2D_235_JP_98M_51_PTH_0320\"               content_uuid=\"urn:uuid:1b5070ba-4a70-4fb4-b20d-2ade32466c52\" start_time=\"2019-04-10T09:50:03\"               end_time=\"2019-04-10T09:53:06\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T12:19:03\"               end_time=\"2019-04-10T12:20:05\">Success     </playback>     <playback content_name=\"FanTanFengBao4-2D_235_JP_98M_51_PTH_0320\"               content_uuid=\"urn:uuid:1b5070ba-4a70-4fb4-b20d-2ade32466c52\" start_time=\"2019-04-10T12:20:05\"               end_time=\"2019-04-10T13:58:43\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T14:20:41\"               end_time=\"2019-04-10T14:21:42\">Success     </playback>     <playback content_name=\"Dumbo2019_FTR-1-3D_F_CMN-XX_CN_51-Dbox_2K_DI_20190312_DTB_IOP-3D_OV\"               content_uuid=\"urn:uuid:7b7bce1c-a467-40cc-8451-4756fe16b47b\" start_time=\"2019-04-10T14:21:43\"               end_time=\"2019-04-10T16:13:40\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T16:30:39\"               end_time=\"2019-04-10T16:31:40\">Success     </playback>     <playback content_name=\"LaoShiHao_FTR_S_CMN-QMS_51_2K_CFA_20190308_114M_OV\"               content_uuid=\"urn:uuid:767142bd-619c-4af0-8589-3e7c5364c06b\" start_time=\"2019-04-10T16:31:40\"               end_time=\"2019-04-10T18:26:02\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T18:30:41\"               end_time=\"2019-04-10T18:31:42\">Success     </playback>     <playback content_name=\"LaoShiHao_FTR_S_CMN-QMS_51_2K_CFA_20190308_114M_OV\"               content_uuid=\"urn:uuid:767142bd-619c-4af0-8589-3e7c5364c06b\" start_time=\"2019-04-10T18:31:43\"               end_time=\"2019-04-10T18:33:30\">Success     </playback>     <playback content_name=\"xiaofang_ADV-2D-24_S_CMN-CMN_CN-G_51-CMN_2K_20190311_OV\"               content_uuid=\"urn:uuid:7ec89ee9-ba5d-4f23-a336-17fa5580bec3\" start_time=\"2019-04-10T20:30:39\"               end_time=\"2019-04-10T20:31:40\">Success     </playback>     <playback content_name=\"TiaoYinShi-2D_235_JP_137M_51_PTH_0312\"               content_uuid=\"urn:uuid:a339ce0e-05fb-46af-9029-d898d9ada947\" start_time=\"2019-04-10T20:31:40\"               end_time=\"2019-04-10T22:45:08\">Success     </playback> </response>",
34
////                DateUtil.format(new Date(),"yyyy_MM_dd_HH_mm_SS")+".xml",sftpMsmDir);
35
////        FileUtils.disConnectSftp();
36
////        System.out.println("hhhh->success="+success);
37
////        FileUtils.connectSftp(configBean.getSftpHost(), configBean.getSftpPort(), configBean.getSftpaeUser(), configBean.getSftpaePassword());
38
//
39
//        CinemaInfo cinemaInfo =new CinemaInfo();
40
//        Ftp ftp=new Ftp();
41
//        ftp.setFtpIP("127.0.0.1");
42
//        cinemaInfo.setFtp(ftp);
43
//        cinemaInfo.setCode("20901928489284");
102 44
//        String encoding = "UTF-8";
103
//        File file = new File("Barco.xml");
45
//        String logContent="";
46
//
47
//        File file = new File(serverType+".xml");
104 48
//        if (file.isFile() && file.exists()) { //判断文件是否存在
105 49
//            InputStreamReader read = new InputStreamReader(
106 50
//                    new FileInputStream(file), encoding);
@ -111,17 +55,70 @@ public class TestController {
111 55
//            }
112 56
//            read.close();
113 57
//            System.out.println(data);
58
//            logContent=data.toString();
59
//        } else {
60
//            System.out.println("找不到文件");
114 61
//        }
115
    }
116
    private boolean upLoadSucceedFile() {
117
        //获取到日志则进行上报,连接
118
        FileUtils.connectSftp(configBean.getSftpHost(), configBean.getSftpPort(), configBean.getSftpaeUser(), configBean.getSftpaePassword());
119
        //文件夹路径:ooh/yyyy-MM-dd
120
        String sftpMsmDir = configBean.getSftpMsmDir() + LocalDate.now().toString();
121
        boolean success = FileUtils.uploadString("", "_success", sftpMsmDir);
122
        System.out.println("upLoadSucceedFile->"+success);
123
        //关闭
124
        FileUtils.disConnectSftp();
125
        return success;
126
    }
62
//        //文件夹路径:ooh/yyyy-MM-dd
63
//        String sftpMsmDir = configBean.getSftpMsmDir() + LocalDate.now().toString();
64
//        //文件名字:IP_HH-mm-SS.json
65
//        String fileName = cinemaInfo.getFtp().getFtpIP() + "_" + serverType + "_" + DateUtil.format(new Date(), "HH-mm-SS") + ".json";
66
//        UploadBean bean = new UploadBean();
67
//        bean.setServerType(serverType);
68
//        bean.setServerIp(cinemaInfo.getFtp().getFtpIP());
69
//        bean.setAuditNumber(1);
70
//        bean.setCinemaCode(cinemaInfo.getCode());
71
//        bean.setDate(LocalDate.now().toString());
72
//        bean.setContent(logContent);
73
//        FileUtils.connectSftp(configBean.getSftpHost(), configBean.getSftpPort(), configBean.getSftpaeUser(), configBean.getSftpaePassword());
74
//        //上传
75
//        String content = JSONObject.fromObject(bean).toString();
76
//        boolean success = FileUtils.uploadString(content, fileName, sftpMsmDir);
77
//        //关闭
78
//        FileUtils.disConnectSftp();
79
//
80
//        return success+"~"+configBean.toString();
81
//    }
82
//    @RequestMapping("test2")
83
//    @ResponseBody
84
//    public String test2() throws IOException {
85
//       return ""+upLoadSucceedFile();
86
//    }
87
//
88
//    @RequestMapping("test3")
89
//    @ResponseBody
90
//    private void postLog(@RequestParam("serverType") String serverType,@RequestParam("content") String content,@RequestParam("cinemaCode") String cinemaCode) throws IOException {
91
//        String ip =  FileUtils.getIp(),date="2021-12-06", dir = "/test/ooh/",deviceIp="192.168.1.2",
92
//        fileName = ip + "_" + deviceIp + "_" + serverType + "_" +
93
//                DateUtil.format(new Date(), "HH-mm-ss-SSS") + "-" + MD5Utils.getUUID() + ".json";
94
//        FileUtils.sendData(content,serverType ,cinemaCode,1,ip,dir+date,fileName,date,"asd");
95
//
96
//    }
97
//
98
//    public static void main(String[] args) throws IOException {
99
////        String encoding = "UTF-8";
100
////        File file = new File("Barco.xml");
101
////        if (file.isFile() && file.exists()) { //判断文件是否存在
102
////            InputStreamReader read = new InputStreamReader(
103
////                    new FileInputStream(file), encoding);
104
////            BufferedReader bufferedReader = new BufferedReader(read);
105
////            String line;StringBuilder data= new StringBuilder();
106
////            while ((line = bufferedReader.readLine()) != null) {
107
////                data.append(line);
108
////            }
109
////            read.close();
110
////            System.out.println(data);
111
////        }
112
//    }
113
//    private boolean upLoadSucceedFile() {
114
//        //获取到日志则进行上报,连接
115
//        FileUtils.connectSftp(configBean.getSftpHost(), configBean.getSftpPort(), configBean.getSftpaeUser(), configBean.getSftpaePassword());
116
//        //文件夹路径:ooh/yyyy-MM-dd
117
//        String sftpMsmDir = configBean.getSftpMsmDir() + LocalDate.now().toString();
118
//        boolean success = FileUtils.uploadString("", "_success", sftpMsmDir);
119
//        System.out.println("upLoadSucceedFile->"+success);
120
//        //关闭
121
//        FileUtils.disConnectSftp();
122
//        return success;
123
//    }
127 124
}

+ 0 - 113
src/main/java/com/miaozhen/bean/ConfigBean.java

@ -1,113 +0,0 @@
1
package com.miaozhen.bean;
2
3
import org.springframework.beans.factory.annotation.Value;
4
import org.springframework.boot.context.properties.ConfigurationProperties;
5
import org.springframework.context.annotation.Profile;
6
import org.springframework.stereotype.Component;
7
8
9
@Component
10
@ConfigurationProperties(prefix = "remote")
11
public class ConfigBean {
12
13
	/** ssh 命令格式 */
14
	private final static String SSH_FORMAT = "%s@%s:%s";
15
16
17
	/**
18
	 * checkfile 中内容的分隔符
19
	 */
20
	public final static String CHECKFILE_CONTENT_SEPARATOR = "\t";
21
22
	@Value("${sgm.push_sftp_server.remote.username}")
23
	private String sftpaeUser;
24
	@Value("${sgm.push_sftp_server.remote.password}")
25
	private String sftpaePassword;
26
	@Value("${sgm.push_sftp_server.remote.host}")
27
	private String sftpHost;
28
	@Value("${sgm.push_sftp_server.remote.port}")
29
	private Integer sftpPort;
30
	@Value("${sgm.push_sftp_server.bigDataDept.remote.dir}")
31
	private String sftpMsmDir;
32
	@Value("${sgm.push_sftp_server.bigDataDept.segment.dir}")
33
	private String segment;
34
	@Value("${sgm.push_sftp_server.bigDataDept.error.dir}")
35
	private String error;
36
37
	public static String getSshFormat() {
38
		return SSH_FORMAT;
39
	}
40
41
	public static String getCheckfileContentSeparator() {
42
		return CHECKFILE_CONTENT_SEPARATOR;
43
	}
44
45
	public String getSftpaeUser() {
46
		return sftpaeUser;
47
	}
48
49
	public void setSftpaeUser(String sftpaeUser) {
50
		this.sftpaeUser = sftpaeUser;
51
	}
52
53
	public String getSftpaePassword() {
54
		return sftpaePassword;
55
	}
56
57
	public void setSftpaePassword(String sftpaePassword) {
58
		this.sftpaePassword = sftpaePassword;
59
	}
60
61
	public String getSftpHost() {
62
		return sftpHost;
63
	}
64
65
	public void setSftpHost(String sftpHost) {
66
		this.sftpHost = sftpHost;
67
	}
68
69
	public Integer getSftpPort() {
70
		return sftpPort;
71
	}
72
73
	public void setSftpPort(Integer sftpPort) {
74
		this.sftpPort = sftpPort;
75
	}
76
77
	public String getSftpMsmDir() {
78
		return sftpMsmDir;
79
	}
80
81
	public String getSegment() {
82
		return segment;
83
	}
84
85
	public void setSegment(String segment) {
86
		this.segment = segment;
87
	}
88
89
	public void setSftpMsmDir(String sftpMsmDir) {
90
		this.sftpMsmDir = sftpMsmDir;
91
	}
92
93
	public String getError() {
94
		return error;
95
	}
96
97
	public void setError(String error) {
98
		this.error = error;
99
	}
100
101
	@Override
102
	public String toString() {
103
		return "ConfigBean{" +
104
				"sftpaeUser='" + sftpaeUser + '\'' +
105
				", sftpaePassword='" + sftpaePassword + '\'' +
106
				", sftpHost='" + sftpHost + '\'' +
107
				", sftpPort=" + sftpPort +
108
				", sftpMsmDir='" + sftpMsmDir + '\'' +
109
				", segment='" + segment + '\'' +
110
				", error='" + error + '\'' +
111
				'}';
112
	}
113
}

+ 104 - 0
src/main/java/com/miaozhen/config/FTPServerConfig.java

@ -0,0 +1,104 @@
1
package com.miaozhen.config;
2
3
import com.miaozhen.util.OSinfoUtil;
4
import com.pythagorastech.tms.util.FileUtil;
5
import org.apache.ftpserver.FtpServer;
6
import org.apache.ftpserver.FtpServerFactory;
7
import org.apache.ftpserver.ftplet.Authority;
8
import org.apache.ftpserver.ftplet.FtpException;
9
import org.apache.ftpserver.ftplet.UserManager;
10
import org.apache.ftpserver.listener.ListenerFactory;
11
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
12
import org.apache.ftpserver.usermanager.impl.BaseUser;
13
import org.apache.ftpserver.usermanager.impl.WritePermission;
14
import org.springframework.context.annotation.Bean;
15
import org.springframework.context.annotation.Configuration;
16
17
import javax.annotation.PostConstruct;
18
import javax.annotation.PreDestroy;
19
import java.io.File;
20
import java.io.IOException;
21
import java.nio.file.Files;
22
import java.nio.file.Path;
23
import java.nio.file.Paths;
24
import java.util.ArrayList;
25
import java.util.List;
26
27
/**
28
 * @Description :
29
 * Created by liyongbo on 2025-03-13 15:08.
30
 */
31
@Configuration
32
public class FTPServerConfig {
33
34
    private FtpServer ftpServer;
35
36
    @Bean
37
    @PostConstruct
38
    public FtpServer ftpServer() throws FtpException {
39
        // 创建 FTP 服务器工厂
40
        FtpServerFactory serverFactory = new FtpServerFactory();
41
42
        // 配置监听器(设置端口)
43
        ListenerFactory listenerFactory = new ListenerFactory();
44
        listenerFactory.setPort(2121); // 默认 FTP 端口是 21,这里使用 2121 避免冲突
45
        serverFactory.addListener("default", listenerFactory.createListener());
46
47
        // 配置用户管理器
48
        PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
49
        UserManager userManager = userManagerFactory.createUserManager();
50
51
        // 创建用户
52
        BaseUser user = new BaseUser();
53
        user.setName("admin"); // 用户名
54
        user.setPassword("admin"); // 密码
55
        String path = "";
56
        if(OSinfoUtil.isLinux()){
57
            path = "/tmp/ftp";
58
        }else{
59
            path = "D:\\tmp\\ftp";
60
        }
61
        checkFolder(path);
62
        user.setHomeDirectory(path); // 用户主目录
63
64
        // 设置用户权限
65
        List<Authority> authorities = new ArrayList<>();
66
        authorities.add(new WritePermission()); // 写权限
67
        user.setAuthorities(authorities);
68
69
        // 添加用户到用户管理器
70
        userManager.save(user);
71
72
        // 设置用户管理器到服务器工厂
73
        serverFactory.setUserManager(userManager);
74
75
        // 创建并启动 FTP 服务器
76
        ftpServer = serverFactory.createServer();
77
        ftpServer.start();
78
        return ftpServer;
79
    }
80
81
    @PreDestroy
82
    public void onDestroy() {
83
        if (ftpServer != null) {
84
            ftpServer.stop();
85
        }
86
    }
87
88
    public static void checkFolder(String sPath) {
89
        // 指定目录路径
90
        Path path = Paths.get(sPath);
91
92
        // 判断目录是否存在,不存在则创建
93
        if (!Files.exists(path)) {
94
            try {
95
                Files.createDirectories(path); // 创建目录(包括父目录)
96
                System.out.println("目录创建成功: " + path);
97
            } catch (IOException e) {
98
                System.err.println("目录创建失败: " + e.getMessage());
99
            }
100
        } else {
101
            System.out.println("目录已存在: " + path);
102
        }
103
    }
104
}

+ 141 - 132
src/main/java/com/miaozhen/service/impl/CrashReportImpl.java

@ -1,7 +1,6 @@
1 1
package com.miaozhen.service.impl;
2 2
3 3
import com.jcraft.jsch.*;
4
import com.miaozhen.bean.ConfigBean;
5 4
import com.miaozhen.service.CrashReportServer;
6 5
import com.miaozhen.tmssys.dto.CinemaInfo;
7 6
import com.miaozhen.util.*;
@ -19,144 +18,154 @@ import java.util.Properties;
19 18
20 19
@Service
21 20
public class CrashReportImpl implements CrashReportServer {
22
    private static Logger logger = LoggerFactory.getLogger(CrashReportImpl.class);
23
24
    private static ChannelSftp sftp = null;
25
    private static Session sshSession = null;
26
    @Resource
27
    private ConfigBean configBean;
28
29 21
    @Override
30 22
    public boolean uploadString(String errorData) {
31
        if (TextUtils.isEmpty(errorData)) {
32
            logger.info("errorData is empty");
33
            return false;
34
        }
35
        connectSftp();
36
        CinemaInfo cinemaInfo = (CinemaInfo) HashMapUtil.get(HashMapUtil.CACHE_KEY);
37
        String code = "";
38
        if (cinemaInfo == null) {
39
            cinemaInfo = FileUtil.getCinemaInfoFromXml();
40
        }
41
        if (cinemaInfo != null) {
42
            code = cinemaInfo.getCode();
43
        }
44
        String mFileName = code + "_" + DateUtil.format(new Date(), DateUtil.FORMAT_DATETIMESTAMP) + "-" + MD5Utils.getUUID() + ".txt";
45
        String path = configBean.getError() + DateUtils.formatDate(new Date(), DateUtil.FORMAT_DATE) + "/";
46
        String[] folders = path.split("/");
47
        logger.info("CrashReportImpl ->准备上传,文件名:{},文件content长度:{}", mFileName, errorData.length());
48
        boolean success;
49
        try {
50
            sftp.cd("/");
51
            for (String folder : folders) {
52
                if (folder.length() > 0) {
53
                    try {
54
                        sftp.cd(folder);
55
                    } catch (SftpException e) {
56
                        sftp.mkdir(folder);
57
                        sftp.cd(folder);
58
                    }
59
                }
60
            }
61
            logger.info("CrashReportImpl: 当前所在目录:" + path);
62
            ByteArrayInputStream inputStream = new ByteArrayInputStream(errorData.getBytes());
63
            sftp.put(inputStream, mFileName);
64
            inputStream.close();
65
            logger.info("CrashReportImpl->错误日志上传完毕,路径:{},文件名:{}", path, mFileName);
66
            success = true;
67
        } catch (Exception e) {
68
            e.printStackTrace();
69
            success = false;
70
        }
71
72
        disConnectSftp();
73
        return success;
23
        return false;
74 24
    }
75 25
76 26
    @Override
77 27
    public void uploadErrorLogFileToFTP() {
78
        CinemaInfo cinemaInfo = (CinemaInfo)HashMapUtil.get(HashMapUtil.CACHE_KEY);
79
        String code = "";
80
        String sftpMsmDir = "";
81
        String date = DateUtils.formatDate(new Date(), DateUtil.FORMAT_DATE);
82
        if(cinemaInfo==null){
83
            cinemaInfo = FileUtil.getCinemaInfoFromXml();
84
        }
85
        if(cinemaInfo!=null){
86
            code = cinemaInfo.getCode();
87
            sftpMsmDir = configBean.getError() + File.separator +date+File.separator + code + File.separator ;
88
        }else{
89
            sftpMsmDir = configBean.getError() + File.separator +date+File.separator ;
90
        }
91
        logger.info("uploadErrorLogFileToFTP sftpMsmDir is:{}",sftpMsmDir);
92
        String startDateStr = DateUtil.format(new Date(), DateUtil.FORMAT_DATE_YYYYMMDD);
93
        String logsPath = FileUtil.getLogsDir();
94
        String infoFileName = "MiaozhenProbe_info."+startDateStr+".log";
95
        String errorFileName = "MiaozhenProbe_error." + startDateStr + ".log";
96
        String infoFilePath = logsPath + File.separator + infoFileName;
97
        String errorFilePath = logsPath + File.separator + errorFileName;
98
        String host = configBean.getSftpHost();
99
        Integer port = configBean.getSftpPort();
100
        String userName = configBean.getSftpaeUser();
101
        String password = configBean.getSftpaePassword();
102
        FileUtils.connectSftp(host, port, userName, password);
103
104
        logger.info("uploadErrorLogFileToFTP infoFilePath is:{}",infoFilePath);
105
        FileUtils.uploadFile(infoFilePath,sftpMsmDir);
106
        if(new File(errorFileName).length()>0){
107
            FileUtils.uploadFile(errorFilePath,sftpMsmDir);
108
        }
109
        FileUtils.disConnectSftp();
110
    }
111
112
    /**
113
     * sftp服务器连接
114
     *
115
     * @param
116
     */
117
    private ChannelSftp connectSftp() {
118
119
        String host = configBean.getSftpHost();
120
        Integer port = configBean.getSftpPort();
121
        String userName = configBean.getSftpaeUser();
122
        String password = configBean.getSftpaePassword();
123
        JSch jsch = new JSch();
124
        try {
125
            jsch.getSession(userName, host, port);
126
            sshSession = jsch.getSession(userName, host, port);
127
            sshSession.setPassword(password);
128
            Properties properties = new Properties();
129
            properties.put("StrictHostKeyChecking", "no");
130
            sshSession.setConfig(properties);
131
            sshSession.connect();
132
            Channel channel = sshSession.openChannel("sftp");
133
            channel.connect();
134
            sftp = (ChannelSftp) channel;
135
136
        } catch (JSchException e) {
137
            e.printStackTrace();
138
        }
139
        return sftp;
140
    }
141 28
142
    /**
143
     * 关闭sftp连接
144
     *
145
     * @param
146
     */
147
    private void disConnectSftp() {
148
        if (sftp != null) {
149
            if (sftp.isConnected()) {
150
                sftp.disconnect();
151
                sftp = null;
152
            }
153
        }
154
        if (sshSession != null) {
155
            if (sshSession.isConnected()) {
156
                sshSession.disconnect();
157
                sshSession = null;
158
            }
159
        }
160 29
    }
30
//    private static Logger logger = LoggerFactory.getLogger(CrashReportImpl.class);
31
//
32
//    private static ChannelSftp sftp = null;
33
//    private static Session sshSession = null;
34
////    @Resource
35
////    private ConfigBean configBean;
36
//
37
//    @Override
38
//    public boolean uploadString(String errorData) {
39
////        if (TextUtils.isEmpty(errorData)) {
40
////            logger.info("errorData is empty");
41
////            return false;
42
////        }
43
////        connectSftp();
44
////        CinemaInfo cinemaInfo = (CinemaInfo) HashMapUtil.get(HashMapUtil.CACHE_KEY);
45
////        String code = "";
46
////        if (cinemaInfo == null) {
47
////            cinemaInfo = FileUtil.getCinemaInfoFromXml();
48
////        }
49
////        if (cinemaInfo != null) {
50
////            code = cinemaInfo.getCode();
51
////        }
52
////        String mFileName = code + "_" + DateUtil.format(new Date(), DateUtil.FORMAT_DATETIMESTAMP) + "-" + MD5Utils.getUUID() + ".txt";
53
////        String path = configBean.getError() + DateUtils.formatDate(new Date(), DateUtil.FORMAT_DATE) + "/";
54
////        String[] folders = path.split("/");
55
////        logger.info("CrashReportImpl ->准备上传,文件名:{},文件content长度:{}", mFileName, errorData.length());
56
////        boolean success;
57
////        try {
58
////            sftp.cd("/");
59
////            for (String folder : folders) {
60
////                if (folder.length() > 0) {
61
////                    try {
62
////                        sftp.cd(folder);
63
////                    } catch (SftpException e) {
64
////                        sftp.mkdir(folder);
65
////                        sftp.cd(folder);
66
////                    }
67
////                }
68
////            }
69
////            logger.info("CrashReportImpl: 当前所在目录:" + path);
70
////            ByteArrayInputStream inputStream = new ByteArrayInputStream(errorData.getBytes());
71
////            sftp.put(inputStream, mFileName);
72
////            inputStream.close();
73
////            logger.info("CrashReportImpl->错误日志上传完毕,路径:{},文件名:{}", path, mFileName);
74
////            success = true;
75
////        } catch (Exception e) {
76
////            e.printStackTrace();
77
////            success = false;
78
////        }
79
////
80
////        disConnectSftp();
81
////        return success;
82
//        return false;
83
//    }
84
//
85
//    @Override
86
//    public void uploadErrorLogFileToFTP() {
87
//        CinemaInfo cinemaInfo = (CinemaInfo)HashMapUtil.get(HashMapUtil.CACHE_KEY);
88
//        String code = "";
89
//        String sftpMsmDir = "";
90
//        String date = DateUtils.formatDate(new Date(), DateUtil.FORMAT_DATE);
91
//        if(cinemaInfo==null){
92
//            cinemaInfo = FileUtil.getCinemaInfoFromXml();
93
//        }
94
//        if(cinemaInfo!=null){
95
//            code = cinemaInfo.getCode();
96
//            sftpMsmDir = configBean.getError() + File.separator +date+File.separator + code + File.separator ;
97
//        }else{
98
//            sftpMsmDir = configBean.getError() + File.separator +date+File.separator ;
99
//        }
100
//        logger.info("uploadErrorLogFileToFTP sftpMsmDir is:{}",sftpMsmDir);
101
//        String startDateStr = DateUtil.format(new Date(), DateUtil.FORMAT_DATE_YYYYMMDD);
102
//        String logsPath = FileUtil.getLogsDir();
103
//        String infoFileName = "MiaozhenProbe_info."+startDateStr+".log";
104
//        String errorFileName = "MiaozhenProbe_error." + startDateStr + ".log";
105
//        String infoFilePath = logsPath + File.separator + infoFileName;
106
//        String errorFilePath = logsPath + File.separator + errorFileName;
107
//        String host = configBean.getSftpHost();
108
//        Integer port = configBean.getSftpPort();
109
//        String userName = configBean.getSftpaeUser();
110
//        String password = configBean.getSftpaePassword();
111
//        FileUtils.connectSftp(host, port, userName, password);
112
//
113
//        logger.info("uploadErrorLogFileToFTP infoFilePath is:{}",infoFilePath);
114
//        FileUtils.uploadFile(infoFilePath,sftpMsmDir);
115
//        if(new File(errorFileName).length()>0){
116
//            FileUtils.uploadFile(errorFilePath,sftpMsmDir);
117
//        }
118
//        FileUtils.disConnectSftp();
119
//    }
120
//
121
//    /**
122
//     * sftp服务器连接
123
//     *
124
//     * @param
125
//     */
126
//    private ChannelSftp connectSftp() {
127
//
128
//        String host = configBean.getSftpHost();
129
//        Integer port = configBean.getSftpPort();
130
//        String userName = configBean.getSftpaeUser();
131
//        String password = configBean.getSftpaePassword();
132
//        JSch jsch = new JSch();
133
//        try {
134
//            jsch.getSession(userName, host, port);
135
//            sshSession = jsch.getSession(userName, host, port);
136
//            sshSession.setPassword(password);
137
//            Properties properties = new Properties();
138
//            properties.put("StrictHostKeyChecking", "no");
139
//            sshSession.setConfig(properties);
140
//            sshSession.connect();
141
//            Channel channel = sshSession.openChannel("sftp");
142
//            channel.connect();
143
//            sftp = (ChannelSftp) channel;
144
//
145
//        } catch (JSchException e) {
146
//            e.printStackTrace();
147
//        }
148
//        return sftp;
149
//    }
150
//
151
//    /**
152
//     * 关闭sftp连接
153
//     *
154
//     * @param
155
//     */
156
//    private void disConnectSftp() {
157
//        if (sftp != null) {
158
//            if (sftp.isConnected()) {
159
//                sftp.disconnect();
160
//                sftp = null;
161
//            }
162
//        }
163
//        if (sshSession != null) {
164
//            if (sshSession.isConnected()) {
165
//                sshSession.disconnect();
166
//                sshSession = null;
167
//            }
168
//        }
169
//    }
161 170
162 171
}

+ 10 - 18
src/main/java/com/miaozhen/task/job/ServerLogJob.java

@ -1,7 +1,6 @@
1 1
package com.miaozhen.task.job;
2 2
3 3
import com.google.common.base.Stopwatch;
4
import com.miaozhen.bean.UploadBean;
5 4
import com.miaozhen.device.IDCServer;
6 5
import com.miaozhen.device.smi.PlaybackStatus;
7 6
import com.miaozhen.device.support.ChristieServer;
@ -12,12 +11,8 @@ import com.miaozhen.task.JobInterface;
12 11
import com.miaozhen.tmssys.TmsService;
13 12
import com.miaozhen.tmssys.dto.*;
14 13
import com.miaozhen.util.*;
15
import com.miaozhen.bean.ConfigBean;
16
import net.sf.json.JSONObject;
17 14
import org.apache.commons.collections.map.HashedMap;
18 15
import org.apache.commons.lang.StringUtils;
19
import org.apache.http.client.utils.DateUtils;
20
import org.quartz.DisallowConcurrentExecution;
21 16
import org.slf4j.Logger;
22 17
import org.slf4j.LoggerFactory;
23 18
import org.springframework.beans.factory.annotation.Autowired;
@ -26,7 +21,6 @@ import org.springframework.stereotype.Component;
26 21
27 22
import javax.annotation.PostConstruct;
28 23
import javax.annotation.Resource;
29
import java.io.File;
30 24
import java.net.NoRouteToHostException;
31 25
import java.net.SocketTimeoutException;
32 26
import java.util.Date;
@ -48,8 +42,6 @@ public class ServerLogJob implements JobInterface {
48 42
    TmsService tmsService;
49 43
    @Autowired
50 44
    CrashReportServer crashReportServer;
51
    @Resource
52
    private ConfigBean configBean;
53 45
54 46
    private String tempLogPath;
55 47
@ -167,21 +159,21 @@ public class ServerLogJob implements JobInterface {
167 159
                                                    //获取到日志则进行上报,连接
168 160
                                                    Stopwatch Stopwatch2 = Stopwatch.createStarted();
169 161
                                                    //文件夹路径:ooh/yyyy-MM-dd
170
                                                    String sftpMsmDir = configBean.getSftpMsmDir() + startDateStr;
171
                                                    if (i == 0) {
172
                                                        //实时日志路径
173
                                                        sftpMsmDir = configBean.getSegment() + startDateStr;
174
                                                    }
162
//                                                    String sftpMsmDir = configBean.getSftpMsmDir() + startDateStr;
163
//                                                    if (i == 0) {
164
//                                                        //实时日志路径
165
//                                                        sftpMsmDir = configBean.getSegment() + startDateStr;
166
//                                                    }
175 167
                                                    //文件名字:IP_服务器类型_HH-mm-ss-SSS-随机字符串.json.md5
176 168
                                                    String fileName = FileUtils.getIp() + "_" + device.getIP() + "_" + serverType + "_" +
177 169
                                                            DateUtil.format(new Date(), "HH-mm-ss-SSS") + "-" + MD5Utils.getUUID() + ".json";
178 170
                                                    logger.info("ServerLogJob fileName is:{}", fileName);
179
                                                    String result = FileUtils.sendData(logContent, serverType, cinemaInfo.getCode(), auditNumber, device.getIP(),
180
                                                            sftpMsmDir, fileName, startDateStr, FileUtil.getCinemaInfoMd5());
171
//                                                    String result = FileUtils.sendData(logContent, serverType, cinemaInfo.getCode(), auditNumber, device.getIP(),
172
//                                                            sftpMsmDir, fileName, startDateStr, FileUtil.getCinemaInfoMd5());
181 173
                                                    boolean success = false;
182
                                                    if (StringUtils.isNotBlank(result) && result.contains("success")) {
183
                                                        success = true;
184
                                                    }
174
//                                                    if (StringUtils.isNotBlank(result) && result.contains("success")) {
175
//                                                        success = true;
176
//                                                    }
185 177
                                                   /* UploadBean bean = new UploadBean();
186 178
                                                    bean.setServerType(serverType);
187 179
                                                    bean.setServerIp(device.getIP());

+ 0 - 108
src/main/java/com/miaozhen/util/FTPServer.java

@ -1,108 +0,0 @@
1
package com.miaozhen.util;
2
3
4
import org.apache.ftpserver.ConnectionConfigFactory;
5
import org.apache.ftpserver.FtpServer;
6
import org.apache.ftpserver.FtpServerFactory;
7
import org.apache.ftpserver.ftplet.FtpException;
8
import org.apache.ftpserver.listener.ListenerFactory;
9
import org.apache.ftpserver.usermanager.impl.BaseUser;
10
import org.slf4j.Logger;
11
import org.slf4j.LoggerFactory;
12
13
/**
14
 * The Class FTPServer.
15
 */
16
public class FTPServer {
17
18
    private static Logger log = LoggerFactory.getLogger(FTPServer.class);
19
20
    /** The port. */
21
    private int port;
22
23
    /** The user manager. */
24
    private InMemoryUserManager userManager;
25
26
    /** The server. */
27
    private FtpServer server;
28
29
    /**
30
     * Instantiates a new FTP server.
31
     */
32
    public FTPServer(){
33
        port = 21;
34
        userManager = new InMemoryUserManager();
35
    }
36
37
    /**
38
     * Sets the port.
39
     *
40
     * @param port the new port
41
     */
42
    public void setPort(int port){
43
        this.port = port;
44
    }
45
46
    /**
47
     * Sets the user.
48
     *
49
     * @param login the login
50
     * @param password the password
51
     * @param home the home
52
     */
53
    public void setUser(String login,char[] password,String home){
54
        BaseUser user = new BaseUser();
55
        user.setName(login);
56
        if(password !=null && password.length>0){
57
            user.setPassword(new String(password));
58
        }
59
        user.setHomeDirectory(home);
60
        user.setEnabled(true);
61
        userManager.setUser(user);
62
    }
63
64
    /**
65
     * Stop.
66
     */
67
    public void stop(){
68
        if (server!=null && !server.isStopped()){
69
            server.stop();
70
            server = null;
71
        }
72
    }
73
74
    /**
75
     * Start.
76
     */
77
    public boolean start(){
78
79
        ConnectionConfigFactory configFactory = new ConnectionConfigFactory();
80
        configFactory.setAnonymousLoginEnabled(false);
81
        configFactory.setMaxAnonymousLogins(0);
82
83
        configFactory.setMaxLoginFailures(5);
84
        configFactory.setLoginFailureDelay(30);
85
86
        configFactory.setMaxThreads(10);
87
        configFactory.setMaxLogins(10);
88
89
        ListenerFactory factory = new ListenerFactory();
90
        factory.setPort(port);
91
92
        FtpServerFactory serverFactory = new FtpServerFactory();
93
        serverFactory.addListener("default", factory.createListener());
94
        serverFactory.setUserManager(userManager);
95
        serverFactory.setConnectionConfig(configFactory.createConnectionConfig());
96
97
        server = serverFactory.createServer();
98
99
        try{
100
            server.start();
101
        } catch (FtpException ex){
102
            log.error("Start Ftp Server Error {}", ex);
103
            return false;
104
        }
105
        return true;
106
107
    }
108
}

+ 156 - 0
src/main/java/com/miaozhen/util/OSinfoUtil.java

@ -0,0 +1,156 @@
1
package com.miaozhen.util;
2
3
/**
4
 * @Description : 获取系统类型类
5
 * Created by liyongbo on 2020-07-28 10:26.
6
 */
7
public class OSinfoUtil {
8
    private static String OS = System.getProperty("os.name").toLowerCase();
9
10
    private static OSinfoUtil _instance = new OSinfoUtil();
11
12
    private EPlatform platform;
13
14
    private OSinfoUtil(){}
15
16
    public static boolean isLinux(){
17
        return OS.indexOf("linux")>=0;
18
    }
19
20
    public static boolean isMacOS(){
21
        return OS.indexOf("mac")>=0&&OS.indexOf("os")>0&&OS.indexOf("x")<0;
22
    }
23
24
    public static boolean isMacOSX(){
25
        return OS.indexOf("mac")>=0&&OS.indexOf("os")>0&&OS.indexOf("x")>0;
26
    }
27
28
    public static boolean isWindows(){
29
        return OS.indexOf("windows")>=0;
30
    }
31
32
    public static boolean isOS2(){
33
        return OS.indexOf("os/2")>=0;
34
    }
35
36
    public static boolean isSolaris(){
37
        return OS.indexOf("solaris")>=0;
38
    }
39
40
    public static boolean isSunOS(){
41
        return OS.indexOf("sunos")>=0;
42
    }
43
44
    public static boolean isMPEiX(){
45
        return OS.indexOf("mpe/ix")>=0;
46
    }
47
48
    public static boolean isHPUX(){
49
        return OS.indexOf("hp-ux")>=0;
50
    }
51
52
    public static boolean isAix(){
53
        return OS.indexOf("aix")>=0;
54
    }
55
56
    public static boolean isOS390(){
57
        return OS.indexOf("os/390")>=0;
58
    }
59
60
    public static boolean isFreeBSD(){
61
        return OS.indexOf("freebsd")>=0;
62
    }
63
64
    public static boolean isIrix(){
65
        return OS.indexOf("irix")>=0;
66
    }
67
68
    public static boolean isDigitalUnix(){
69
        return OS.indexOf("digital")>=0&&OS.indexOf("unix")>0;
70
    }
71
72
    public static boolean isNetWare(){
73
        return OS.indexOf("netware")>=0;
74
    }
75
76
    public static boolean isOSF1(){
77
        return OS.indexOf("osf1")>=0;
78
    }
79
80
    public static boolean isOpenVMS(){
81
        return OS.indexOf("openvms")>=0;
82
    }
83
84
    /**
85
     * 获取操作系统名字
86
     * @return 操作系统名
87
     */
88
    public static EPlatform getOSname(){
89
        if(isAix()){
90
            _instance.platform = EPlatform.AIX;
91
        }else if (isDigitalUnix()) {
92
            _instance.platform = EPlatform.Digital_Unix;
93
        }else if (isFreeBSD()) {
94
            _instance.platform = EPlatform.FreeBSD;
95
        }else if (isHPUX()) {
96
            _instance.platform = EPlatform.HP_UX;
97
        }else if (isIrix()) {
98
            _instance.platform = EPlatform.Irix;
99
        }else if (isLinux()) {
100
            _instance.platform = EPlatform.Linux;
101
        }else if (isMacOS()) {
102
            _instance.platform = EPlatform.Mac_OS;
103
        }else if (isMacOSX()) {
104
            _instance.platform = EPlatform.Mac_OS_X;
105
        }else if (isMPEiX()) {
106
            _instance.platform = EPlatform.MPEiX;
107
        }else if (isNetWare()) {
108
            _instance.platform = EPlatform.NetWare_411;
109
        }else if (isOpenVMS()) {
110
            _instance.platform = EPlatform.OpenVMS;
111
        }else if (isOS2()) {
112
            _instance.platform = EPlatform.OS2;
113
        }else if (isOS390()) {
114
            _instance.platform = EPlatform.OS390;
115
        }else if (isOSF1()) {
116
            _instance.platform = EPlatform.OSF1;
117
        }else if (isSolaris()) {
118
            _instance.platform = EPlatform.Solaris;
119
        }else if (isSunOS()) {
120
            _instance.platform = EPlatform.SunOS;
121
        }else if (isWindows()) {
122
            _instance.platform = EPlatform.Windows;
123
        }else{
124
            _instance.platform = EPlatform.Others;
125
        }
126
        return _instance.platform;
127
    }
128
129
    enum EPlatform {
130
        Any("any"),
131
        Linux("Linux"),
132
        Mac_OS("Mac OS"),
133
        Mac_OS_X("Mac OS X"),
134
        Windows("Windows"),
135
        OS2("OS/2"),
136
        Solaris("Solaris"),
137
        SunOS("SunOS"),
138
        MPEiX("MPE/iX"),
139
        HP_UX("HP-UX"),
140
        AIX("AIX"),
141
        OS390("OS/390"),
142
        FreeBSD("FreeBSD"),
143
        Irix("Irix"),
144
        Digital_Unix("Digital Unix"),
145
        NetWare_411("NetWare"),
146
        OSF1("OSF1"),
147
        OpenVMS("OpenVMS"),
148
        Others("Others");
149
150
        EPlatform(String desc) {
151
            this.description = desc;
152
        }
153
        private String description;
154
    }
155
}
156

+ 10 - 0
src/main/resources/myusers.properties

@ -0,0 +1,10 @@
1
# myusers.properties
2
#ftpserver.user.admin.userpassword=admin123
3
#ftpserver.user.admin.homedirectory=/tmp/ftp
4
ftpserver.user.admin.enableflag=true
5
ftpserver.user.admin.writepermission=true
6
ftpserver.user.admin.maxloginnumber=10
7
ftpserver.user.admin.maxloginperip=2
8
ftpserver.user.admin.idletime=300
9
ftpserver.user.admin.uploadrate=4800
10
ftpserver.user.admin.downloadrate=4800