package org.shanbo.feluca.datasys.ftp; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Properties; import org.apache.ftpserver.FtpServer; import org.apache.ftpserver.FtpServerFactory; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.listener.ListenerFactory; import org.shanbo.feluca.common.Constants; import org.shanbo.feluca.datasys.DataServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @Description data server * @author shanbo.liang */ public class DataFtpServer extends DataServer{ static Logger log = LoggerFactory.getLogger(DataFtpServer.class); FtpServer server; byte[] propInBytes; public DataFtpServer(int port){ ByteArrayOutputStream temp = new ByteArrayOutputStream(); this.port = port; Properties p = FTPConstants.generateDefaultFtpProperties(Constants.Base.getLeaderRepository()); try { p.store(temp, ""); propInBytes = temp.toByteArray(); } catch (IOException e) { } } public DataFtpServer(){ this(FTPConstants.PORT); } public void preStart() throws FtpException { FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory factory = new ListenerFactory(); // set the ip, port of the listener factory.setPort(port); factory.setServerAddress("0.0.0.0"); // replace the default listener PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); userManagerFactory.setInputSteam(new ByteArrayInputStream(propInBytes)); serverFactory.addListener("default", factory.createListener()); // start the server serverFactory.setUserManager(userManagerFactory.createUserManager()); server = serverFactory.createServer(); server.start(); } public void postStop() { server.stop(); } }