mod_facts
File "Facts" Support
The mod_facts
module is ProFTPD's module for handling the
MLSD
and MLST
commands, in support of
RFC 3659. In addition,
the mod_facts
module implements the MFF
and
MFMT
commands defined in:
http://www.ietf.org/internet-drafts/draft-somers-ftp-mfxx-04.txt
This module is contained in the mod_facts.c
file for
ProFTPD 1.3.x, and is compiled by default.
The most current version of mod_facts
can be found in the
ProFTPD source distribution:
http://www.proftpd.org/
<VirtualHost>
, <Global>
The FactsAdvertise
directive is used to control whether
the mod_facts
module advertises its MLST
support
via the FEAT
command.
By default, the mod_facts
module will list MLST
in the FEAT
response. FTP clients use this to determine whether
to use the newer MLSD
/MLST
commands, or the older
LIST
/NLST
commands. Some FTP clients, though,
will attempt to use the newer commands just as if they were equivalent to
the older commands, including supporting glob/wildcard characters.
Section 2.2.2 of RFC3659 explicitly states that wildcard characters are
not supported in the MLSD
and MLST
commands.
Thus, to prevent problems when using such FTP clients with proftpd,
you can disable the advertising of support for those commands using
e.g. the following in your proftpd.conf
:
<IfModule mod_facts.c> FactsAdvertise off </IfModule>
<VirtualHost>
, <Global>
The FactsOptions
directive is used to configure various optional
behavior of mod_facts
. Note: all of the configured
FactsOptions
parameters must appear on the same line in the
configuration; only the first FactsOptions
directive that
appears in the configuration is used.
The currently implemented options are:
UseSlink
Use this option to have mod_facts
use the broken
"OS.unix=slink" syntax, preferred by FTP clients such as FileZilla, for
indicating symlinks, rather than the more correct "OS.unix=symlink"
syntax. See
Bug#3318 for
a more detailed discussion.
Note that this option first appeared in
proftpd-1.3.4b
.
Frequently Asked Questions
Question: Why does
MLSD
list all of the
files in a directory, including the "hidden" files, where the LIST
command does not?
Answer: The MLSD
and MLST
commands do not have any notions of "options" like the LIST
and
NLST
commands do; there is no way for a client, in the request
to list the files in a directory, to ask the server to filter the list of
files somehow. Instead, MLSD
contains a list of "facts" for
each file in its list; the client then has to to decide how to filter the
list of files based on those facts. This is why the ListOptions
directive has no influence over the MLSD
and MLST
commands.