Listeners
Listeners are the component in FtpServer which is responsible for listening on the network socket and when clients connect create the user session, execute commands and so on. An FtpServer can have multiple listeners at the same time, some examples include:
- one listener on port 21 (the default option)
- one cleartext listener on port 21 and one for implicit SSL on port 22
- one cleartext listener in an internal IP address only and one for implicit SSL for the external IP address
Listeners are identified by a name, the default listener is identified by “default”.
The main network configuration is performed on the listeners, for example the port to listen on and SSL configuration.
Within the XML configuration format, all listeners are configured in the “listeners” element. A XML configuration example can therefore look like:
<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-listener element
The listener shipped with FtpServer is called “nio-listener” since it is based Java NIO for performance and scalability.
Attribute | Description | Required | Default value |
---|---|---|---|
name | The listener name, if “default” it will override the settings on the default listener | Yes | |
port | The port on which the listener will accept connections | No | 21 |
local-address | Server address the listener will bind to | No | All available |
implicit-ssl | True if the listener should use implicit SSL | No | false |
idle-timeout | The number of seconds before an inactive client is disconnected. If this value is set to 0, the idle time is disabled (a client can idle forever without getting disconnected by the server). If a lower maximum idle time is configured on a user (e.g. using the PropertiesUserManager idletime configuration), it will override the listener value. Thus, the listener value enforce the upper threshold, but lower values can be provided per user. | No | 300 |
ssl element
Required for listeners that should provide FTPS support.
Attribute | Description | Required | Default value |
---|---|---|---|
protocol | The SSL protocol to use. Supported values are “SSL” and “TLS” | No | TLS |
client-authentication | Should client authentication be performed? Supported values are “NEED”, “WANT” and “NONE” | No | NONE |
enabled-ciphersuites | A space-separated list of cipher suites to enable for this connection. The exact cipher suites that can be used depends on the Java version used, here are the names for Sun’s JSSE provider. | No | All cipher suites are enabled |
keystore element
This element is required if the ssl element is provided. It provides configuration for the key store used for finding the private key and server certificate for the FTP server.
Attribute | Description | Required | Default value |
---|---|---|---|
file | Path to the key store file | Yes | |
password | The password for the key store | Yes | |
key-password | Password for the key within the key store | No | Key store password |
key-alias | Alias of the key to use within the key store | No < | Uses first key found |
type | Key store type | No | JRE key store default type, normally JKS |
algorithm | Key store algorithm | No | SunX509 |
truststore element
This element provides configuration for the trust store used for locating trusted certificates.
Attribute | Description | Required | Default value |
---|---|---|---|
file | Path to the trust store file | Yes | |
password | The password for the trust store | No | Certificates can be read without password |
type | Trust store type | No | JRE key store default type, normally JKS |
algorithm | Trust store algorithm | No | SunX509 |
data-connection element
This element provides configuration for the data connection.
Attribute | Description | Required | Default value |
---|---|---|---|
idle-timeout | Number of seconds before an idle data connection is closed | No | 300 |
active element
This element provides configuration for active data connections.
Attribute | Description | Required | Default value |
---|---|---|---|
enabled | False if active data connections should not be allowed | No | true |
local-address | The local address the server will use when creating a data connection | No | Any available |
local-port | The local prt the server will use when creating a data connection | No | Any available |
ip-check | Should the server check that the IP address for the data connection is the same as for the control socket? | No | false |
passive element
This element provides configuration for passive data connections.
Attribute | Description | Required | Default value |
---|---|---|---|
ports | The ports on which the server is allowed to accept passive data connections, see Configure passive ports for details | No | Any available port |
address | The address on which the server will listen to passive data connections | No | The same address as the control socket for the session |
external-address | The address the server will claim to be listening on in the PASV reply. Useful when the server is behind a NAT firewall and the client sees a different address than the server is using | No |
blacklist element
This element provides a list of black listed IP addresses and networks in CIDR notation.