您的位置:首页 > 运维架构 > Apache

apache ftpserver的使用(包含ftplet)

2015-12-13 09:58 591 查看
需要用到的包

ftpserver-core-1.0.6.jar

ftplet-api-1.0.6.jar

mina-core-2.0.4.jar

package com.test;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.ftplet.FtpReply;
import org.apache.ftpserver.ftplet.FtpletContext;
import org.apache.ftpserver.ftplet.FtpletResult;
import org.apache.ftpserver.ftplet.UserManager;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.PasswordEncryptor;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
import org.apache.ftpserver.usermanager.impl.BaseUser;
import org.apache.ftpserver.usermanager.impl.WritePermission;

public class TestServerFactory2 {
public static void main(String[] args) {
FtpServerFactory serverFactory = new FtpServerFactory();
ListenerFactory factory = new ListenerFactory();
factory.setPort(1021); // 端口号
serverFactory.addListener("default", factory.createListener());
PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
userManagerFactory.setFile(new File("D:\\00SysFile\\softdata\\lunaWorkspace\\ftpServer\\src\\users.properties"));//choose any. We're telling the FTP-server where to read it's user list
userManagerFactory.setPasswordEncryptor(new PasswordEncryptor(){
//We store clear-text passwords in this example
@Override
public String encrypt(String password) {
return password;
}

@Override
public boolean matches(String passwordToCheck, String storedPassword) {
return passwordToCheck.equals(storedPassword);
}
});

//添加用户信息
BaseUser user = new BaseUser();
user.setName("test");
user.setPassword("test");
user.setHomeDirectory("d:/home/");
List<Authority> authorities = new ArrayList<Authority>();
authorities.add(new WritePermission());
user.setAuthorities(authorities);
UserManager um = userManagerFactory.createUserManager();
try{
um.save(user);//Save the user to the user list on the filesystem
}catch (FtpException e1){
//Deal with exception as you need
}
serverFactory.setUserManager(um);
Map<String, Ftplet> m = new HashMap<String, Ftplet>();
m.put("miaFtplet", new MyDefaultPortlet(){ // 自己建个MyDefaultPortlet类 extends DefaultFtplet

@Override
public void init(FtpletContext ftpletContext) throws FtpException {
System.out.println("*********init*********");
System.out.println("Thread #" + Thread.currentThread().getId());
}

@Override
public void destroy() {
System.out.println("*********destroy*********");
System.out.println("Thread #" + Thread.currentThread().getId());
}

@Override
public FtpletResult beforeCommand(FtpSession session, FtpRequest request) throws FtpException, IOException
{
System.out.println("*********beforeCommand*********");
System.out.println(session.getUserArgument() + ",session:" + session.toString() + ",getArgument:" + request.getArgument() + ", getCommand:" + request.getCommand() + ",getRequestLine:" + request.getRequestLine());
System.out.println("Thread #" + Thread.currentThread().getId());

return FtpletResult.DEFAULT;//...or return accordingly
}

@Override
public FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply) throws FtpException, IOException
{
System.out.println("*********afterCommand*********");
System.out.println("afterCommand " + session.getUserArgument() + ",session:" + session.toString() + ",getArgument:" + request.getArgument() + ", getCommand:" + request.getCommand() + ",getRequestLine:" + request.getRequestLine() + ",getMessage:" + reply.getMessage() + ",reply:" + reply.toString());
System.out.println("Thread #" + Thread.currentThread().getId());

return FtpletResult.DEFAULT;//...or return accordingly

}
});

serverFactory.setFtplets(m);
Map<String, Ftplet> mappa = serverFactory.getFtplets();
System.out.println(mappa.size());
System.out.println("Thread #" + Thread.currentThread().getId());
System.out.println(mappa.toString());
FtpServer server = serverFactory.createServer();
try{
server.start();//Your FTP server starts listening for incoming FTP-connections, using the configuration options previously set
}catch (FtpException ex){
//Deal with exception as you need
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ftp ftp server apache