我在这里定义了两个class:FtpServer和RealUsermanager;前者用于ftp服务相关的配置,后者用于用户的动态增加。
maven依赖
1 2 3 4 5 6 7 8 9 10 11 |
<dependency> <groupId>org.apache.ftpserver</groupId> <artifactId>ftpserver-core</artifactId> <version>1.1.1</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> |
FtpServer
在启动设置中我主要设置了ftp的连接参数,本地监听参,数据传输模式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
public boolean startService(){ //连接设置 ConnectionConfigFactory configFactory = new ConnectionConfigFactory(); configFactory.setAnonymousLoginEnabled(false); configFactory.setMaxAnonymousLogins(0); configFactory.setMaxLoginFailures(5); configFactory.setLoginFailureDelay(30); configFactory.setMaxThreads(10); configFactory.setMaxLogins(10); //监听设置 ListenerFactory factory = new ListenerFactory(); factory.setPort(this.port); factory.setIdleTimeout(60); //数据传输模式设置 DataConnectionConfigurationFactory dccFactory = new DataConnectionConfigurationFactory(); // dccFactory.setActiveLocalPort(10000); //主动模式使用的端口 dccFactory.setPassiveIpCheck(true); dccFactory.setPassivePorts(passivePorts); //被动模式使用的端口范围 DataConnectionConfiguration dcc=dccFactory.createDataConnectionConfiguration(); factory.setDataConnectionConfiguration(dcc); //实例化ftpServer工厂 FtpServerFactory serverFactory = new FtpServerFactory(); serverFactory.addListener("default",factory.createListener()); serverFactory.setUserManager(this.um.getUm()); serverFactory.setConnectionConfig(configFactory.createConnectionConfig()); ftpServer = serverFactory.createServer(); try{ //启动ftpServer ftpServer.start(); }catch (FtpException e){ return false; } return true; } |
RealUserManager
创建用户管理器
1 2 3 |
PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); //创建用户管理器 um = userManagerFactory.createUserManager(); |
添加用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if(!um.doesExist(username)){ List<Authority> authorities = new ArrayList<>(); //设置用户权限 authorities.add(new WritePermission()); authorities.add(new ConcurrentLoginPermission(0, 0)); BaseUser user = new BaseUser(); user.setName(username); user.setPassword(password); //设置用户主目录 user.setHomeDirectory(homeDir); user.setMaxIdleTime(60); user.setAuthorities(authorities); um.save(user); } |
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-