二.相关配置
1.服务器配置
server元素
<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd"
id="server"
max-logins="500"
anon-enabled="false"
max-anon-logins="123"
max-login-failures="124"
login-failure-delay="125">
...
</server>
元素 | 描述 | 是否必需 | 默认值 |
id | XML配置文件中的唯一标识符 | Y | |
max-logins | 最大并发用户数 | N | 21 |
max-anon-logins | 最大匿名用户数 | N | 10 |
anon-enabled | 是否允许匿名用户登陆 | N | true |
max-login-failures | 连接关闭前登陆失败后尝试次数 | N | 3 |
login-failure-delay | 登陆失败后的时间延迟(ms),用于限制配置暴力破解密码 | N | 500 |
listener元素
Listener是FtpServer中负责监听网络socket接口,当客户端连接后创建用户session、执行命令等。一个FtpServer可以同时拥有多个listerner,以下是一些例子:
1)一个在21端口的默认监听;
2)一个在21端口的超速通道监听,一个隐式的在22端口上的SSL监听
3)一个在内部IP超速通道监听,一个外部IP的SSL监听
Listener以name标识,默认Listener的名称是“default”。
主要的网络配置表现在listener上,例如监听端口、SSL配置。
在XML配置格式内,所有的监听器以“listeners”元素进行配置
<listeners>
<nio-listener name="default" port="2222" implicit-ssl="true" idle-timeout="60" local-address="1.2.3.4">
<ssl>
<keystore file="mykeystore.jks" password="secret" key-password="otherSecret" />
<truststore file="mytruststore.jks" password="secret"/>
</ssl>
<data-connection idle-timeout="60">
<active enabled="true" local-address="1.2.3.4" local-port="2323" ip-check="true">
<passive ports="123-12"" address="1.2.3.4" external-address="1.2.3.4" />
</data-connection>
<blacklist>1.2.3.0/16, 1.2.4.0/16, 1.2.3.4</blacklist>
</nio-listener>
</listeners>
nio元素
装配FtpServer的监听器叫做nio-listener,因为它是基于Java NIO的以提升性能和规模。
元素 | 描述 | 是否必需 | 默认值 |
name | 监听名称,如果是“default”,它会覆盖默认的监听器 | Y | |
port | 监听器接受连接的端口 | N | 21 |
local-address | 监听器绑定的服务器地址 | N | All available |
implicit-ssl | 如果使用隐式的SSL,其值为true | N | false |
idle-timeout | 非活跃客户端断开时间。如果值设为0,则闲置时间不可用(一个客户端可以永远闲置,如果没有从服务器断开)如果一个较低的最大闲置时间配置给用户(比如使用PropertiesUserManager闲置时间配置),它会覆盖listener值.这样listener值强加以更高的阈值,但是低层值可以提供给每个用户。 | N | 300 |
ssl元素
对于需要FTPS 支持的Listener必须
元素 | 描述 | 是否必需 | 默认值 |
protocol | 使用SSL协议,支持有 SSL 和TLS | N | TLS |
client-authentication | 是否客户端认证?支持的值有:“NEED”,“WANT”和 “NONE”
| N | NONE |
enabled-ciphersuites | 对于本连接的一个可用的逗号分隔的密码组件列表。可用的加密组件依赖于所采用的Java版本 | N | 所有加密组件均可用 |
keystore元素
如果提供了ssl元素,它将是必须的。它为密钥存储提供配置,用于查找私钥和服务器证书。
元素 | 描述 | 是否必需 | 默认值 |
file | 密钥存储路径 | Y | |
password | 密钥存储密码 | Y | |
key-password | 密钥存储中的密钥密码 | N | 密钥存储密码 |
key-alias | 密钥存储中key的别名 | N | Uses first key found |
type | 密钥存储类型 | N | JKS |
algorithm | 密钥存储算法 | N | SunX509 |
truststore
该元素用于配置信任存储,以定位信任的证书。
元素 | 描述 | 是否必需 | 默认值 |
file | 密钥存储路径 | Y | |
password | 密钥存储密码 | N | 无密码可读取证书 |
type | 密钥存储类型 | N | JRE key store default type, normally JKS |
algorithm | 密钥存储算法 | N | SunX509 |
data-connection元素
为数据连接提供配置
元素 | 描述 | 是否必需 | 默认值 |
idle-timeout | 数据连接要关闭最大闲置时间 | N | 300 |
active元素
为积极数据连接提供配置
元素 | 描述 | 是否必需 | 默认值 |
enabled | 如果积极数据连接不被允许,值为false | N | true |
local-address | 服务器创建连接时使用的本地地址 | N | Any available |
local-port | 服务器创建连接时使用的本地端口 | N | Any available |
ip-check | 服务器是否监察数据连接IP与控制socket的IP相同? | N | false |
passive元素
为消极数据连接提供配置
元素 | 描述 | 是否必需 | 默认值 |
ports | 服务器创建消极数据连接时使用的本地端口 | N | Any available port |
address | 服务器监听消极数据连接的地址 | N | 与控制socket地址相同 |
external-address | 服务器声明在PASV答复中监听的地址。该属性配置在当服务器在NAT防火墙后,客户端看到的IP不同于服务正使用的IP时很有用 | N |
blacklist元素
提供对一些IP地址的访问受限
2.用户权限配置
ftpServer对用户权限的管理,提供了数据库持久化存储管理跟文件持久化存储管理。
数据库持久化用户管理配置:
元素 | 描述 | 是否必需 | 默认值 |
encrypt-passwords(db-user-manager 元素的属性) | 它表明了密码是如何存储的。可用值为:clear普通文本,MD5哈希算法或者salted哈希盐化密码。建议采用salted。 | N | md5 |
data-source | 普通Spring bean配置的数据源 | Y | |
insert-user | SQL语句插入一个新的用户,所有的动态值在运行时会被取代。 | N | |
update-user | SQL语句插入修改一个用户,所有的动态值在运行时会被取代。 | Y | |
delete-user | SQL语句删除一个用户,所有的动态值在运行时会被取代。 | Y | |
select-user | SQL语句查询一个用户,所有的动态值在运行时会被取代。 | Y | |
select-all-users | SQL语句插入所有用户,所有的动态值在运行时会被取代 | Y | |
is-admin | 查询一个用户是否是管理员用户,所有的动态值在运行时会被取代。 | Y | |
authenticate | SQL语句认证一个用户,所有的动态值在运行时会被取代。 | Y |
文件持久化存储管理配置:
元素 | 描述 | 是否必需 | 默认值 |
encrypt-passwords(db-user-manager 元素的属性) | 它表明了密码是如何存储的。可用值为:clear普通文本,MD5哈希算法或者salted哈希盐化密码。建议采用salted。 | N | md5 |
file | 存储用户的properties文件路径
| N | File跟url至少要有一个必须 |
url | 存储用户的properties的URL | N | 同上 |
以上配置信息,详见官方网站文档。