一、情景
项目由于需要支持大文件传输和下载,用到了开源的Apache FtpServer(http://mina.apache.org/ftpserver/)。但是,为了配合客户端使用,这些FTP命令并不能满足需求,即需要增加一些命令,也需要删除或者修改一些对于整个系统可能带来安全问题的命令。
二、修改Apache
FtpServer的大致思路
1. 新增加命令,则增加具体的实现类,继承AbstractCommand,实现execute()方法。
2. 自定义一个类MyCommandFactoryFactory,对DEFAULT_COMMAND_MAP进行初始化控制,增加自己定义的命令。
具体代码可以参考org.apache.ftpserver.command.CommandFactoryFactory,基本类似。
3. 在server启动之前,重新设置CommandFactory。
serverFactory.setCommandFactory((new
MyCommandFactoryFactory()).createCommandFactory());
(另外:也可以直接修改CommandFactoryFactory的代码,这样比较简单。但是一般情况下,如果对于开源包有更改,还是建议继承或者重写相关的类,这样以后升级使用的包更容易些。)
三、如何对定制后的FtpServer测试
对于定制后的FtpServer,因为命令已经改变,使用传统的一些FTP工具就无法对Server进行测试了。这就需要自己写一个同样是定制过的简单的Ftp客户端来进行测试。Apache提供的commonnet包(http://commons.apache.org/net/)对于Ftp协议进行了支持,并且是开源的,所以可以直接修改commonnet的代码,提供一个定制版本的commonnet,以对定制的Ftp命令进行支持。然后再使用定制版本的commonnet写一个简单的Ftp客户端。
四、修改commonnet代码的大致思路
1. org.apache.commons.net.ftp.FTPCommand类
代码不多,很容易懂。需要修改或者增加命令。
2. org.apache.commons.net.ftp.FTP类
这个类封装了Ftp客户端的主要功能。增加或者修改具体的方法。
3. org.apache.commons.net.ftp.FtpClient类
这个类是对外提供服务的。增加或者修改具体的方法。
注:因为不能涉及具体业务,所以写的不够详细,见谅。基本思路已经写出来了,按照这个思路,再仔细看看代码,应该没问题的。
分享到:
相关推荐
从零开始介绍Apache FtpServer,并一步一步教你配置Apache FtpServer,更高级的应用,教你用写代码控制Apache FtpServer及集成到自己的应用中 <!--ftp端口 --> <!--绑定的服务器IP地址,多网卡的时候使用...
Apache Ftpserver 全套,包括源码, jar包 及配置说明,需要的就下载吧
Apache FtpServer是一个100%纯Java的、基于现有开放式协议基础上、完整、小巧的FTP服务器。此外,FtpServer还可以作为Windows服务器、Unix / Linux后台程序或是被嵌入在Java应用程序而独立运行。有了MINA...
apache ftpserver使用讲解,可以配置ftpserver与项目的数据库进行连接,对ftp用户的用户名、密码进行校验,校验通过后可以访问表中配置好的访问路径。
apache ftpserver Mysql配置
apache-ftpserver apache-ftpserver apache-ftpserver
apache ftpserver使用讲解,可以配置ftpserver与项目的数据库进行连接,对ftp用户的用户名、密码进行校验,校验通过后可以访问表中配置好的访问路径。
Apache_FtpServer配置详解
apache ftpserver 源码嵌入eclipse工程版,所有配置已配好,myserver.java右键 run as java aplication 运行即可。登录名:admin 密码:admin 还有一个名字一样的资源,也是我上传的,那个账号找不回来了
这是在eclipse上创建的项目,下载源码包导入即可。 在运行之前自己在MySQL上创建数据库,名如:ftpserver,再导入里面提供的...有了这套源码,不出十分钟你就可以搞懂怎么在你的Spring项目里面整合Apache FTPServer了。
apache ftpserver project
NULL 博文链接:https://self4j.iteye.com/blog/910701
用Java调用apache.ftpserver.FtpServer相关API完成FTP的被动模式实现。
https://blog.csdn.net/feiwei/article/details/5867555 根据这个博客重新编译的,可以解决IE访问Apache Ftp Server 中文目录、中文文件名乱码的问题
Apache FtpServer详细配置
Android FTP server 用org.apache.ftpserver实现, 可以设置端口号, 匿名或用户名密码 https://blog.csdn.net/weixin_42065195/article/details/106944004
该资源提供了与Apache配合使用的FTP服务器安装包,支持FTP服务的构建。
JavaWeb集群环境下的FTP文件服务器配置使用
基于Apache FtpServer 的Ftp服务器实现,使用了srping集成的方式来实现的。