设为首页 收藏本站
查看: 1039|回复: 0

[经验分享] APACHE基于MINA的FTP SERVER(一)配置文件装载

[复制链接]

尚未签到

发表于 2016-6-10 09:46:27 | 显示全部楼层 |阅读模式
APACHE基于MINA的FTP SERVER(一)配置文件装载

首页
http://mina.apache.org/ftpserver/index.html

参考官方文档,简单的实现了FTP的服务端功能,没有测试性能如何。
里面比较多的代码是引入了XML的stax解析。

FTP的XML配置文件ftpserver.xml。
文件主体
<?xml version="1.0" encoding="UTF-8"?>
<ftpserver>
<permissions>
   <permission name="writePermission" type="WritePermission"></permission>
   <permission name="connAdmin" type="ConcurrentLoginPermission"
    connPerUser="20" connPerIp="20"></permission>
   <permission name="rateAdmin" type="TransferRatePermission"
    downloadRate="102400" uploadRate="204800"></permission>
</permissions>
<users>
   <user name="admin" password="admin" homeDirectory="E:\\work\\ftp\\admin"
    enabled="true" maxIdleTime="180">
    <userPermissions>writePermission,connAdmin,rateAdmin</userPermissions>
   </user>
   <user name="anonymous" password="anonymous" homeDirectory="E:\\work\\ftp\\anonymous"
    enabled="true" maxIdleTime="60">
    <userPermissions>writePermission,connAdmin,rateAdmin</userPermissions>
   </user>
</users>
<servers>
   <server name="ftpsillycat" port="2221" passwordEncryptor="CLEAR_TEXT">
    <serverUsers>admin,anonymous</serverUsers>
   </server>
</servers>
</ftpserver>
权限标签
<permissions>标签是定义各个权限的,比如writePermission读写权限,connAdmin管理员的连接权限,单个用户20个连接,单IP20个连接。
rateAdmin是管理员上传下载速率权限,下行102400byte,上行204800byte
用户标签
<users>标签是定义了用户的用户名,密码,登陆后的默认文件夹,用户具有哪些权限
服务器标签
<server>标签定义服务器的名字,端口,密码加密方式,服务器上有哪些用户。

引入的JAR包
<dependency>
<groupId>stax</groupId>
<artifactId>stax</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>

在JAVA中,定义了类来对应这个配置文件。
服务器定义类FtpServerConfig.java
public class FtpServerConfig {
//sever名称
private String name;
//server端口
private int port;
//密码加密类型
private String passwordEncryptor;
//用户
private List<UserServerConfig> users;
...
}
用户定义类UserServerConfig.java
public class UserServerConfig {
private String name;

private String password;

private String homeDirectory;

private boolean enabled;

private int maxIdleTime;

private List<Authority> permissions;
...
}
解析XML的工具类XmlResourceUtil.java
while (r.hasNext()) {
XMLEvent event = r.nextEvent();
if (event.isStartElement()) {
   StartElement start = event.asStartElement();
   String tag = start.getName().getLocalPart();
//循环,得到XML文件中每个标签
if (tag.equalsIgnoreCase("server")) {
//检查标签是否是server
ftpServerConfig = new FtpServerConfig();
if (start.getAttributeByName(new QName("", "name")) != null) {
   String str = start.getAttributeByName(new QName("", "name")).getValue();
   ftpServerConfig.setName(str);
}
if (start.getAttributeByName(new QName("", "port")) != null) {
   int port = Integer.valueOf(start.getAttributeByName(new QName("", "port")).getValue()).intValue();
    ftpServerConfig.setPort(port);
   }
   if (start.getAttributeByName(new QName("","passwordEncryptor")) != null) {
    String str = start.getAttributeByName(new QName("", "passwordEncryptor")).getValue();
    ftpServerConfig.setPasswordEncryptor(str);
   }
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228513-1-1.html 上篇帖子: ftp传送模式:二进制与ascii模式的区别 下篇帖子: 内网架设FTP服务器(serv-u)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表