<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<!--
 Original Copyright (c) 2005 Covalent Technologies

 FTP Protocol module for Apache 2.0
-->
<modulesynopsis metafile="mod_ftp.xml.meta">

  <name>mod_ftp</name>
  <description>Provides support for the File Transfer Protocol</description>
  <status>External</status> <!-- For now... -->
  <sourcefile>mod_ftp.c</sourcefile>
  <identifier>ftp_module</identifier>
  <compatibility>Apache 2.2 and higher</compatibility>

  <summary>
    <p>This module provides support for the File Transfer Protocol
      within the Apache HTTP Server.  It was originally developed by
      Covalent Technologies, Inc. and contributed by them to the
      Apache HTTP Server project.</p>

    <p>The FTP protocol module for Apache can work with the access
      control modules, mod_ssl and any dynamic content generator to
      provide veratile, scalable and secure FTP services.</p>

    <p>Further details, discussion and examples are provided in the
      <a href="../ftp/">FTP documentation</a>.</p>
  </summary>

  <!-- References to other documents or directives -->
  <seealso><a href="../ftp/">FTP Documentation</a></seealso>
  <seealso><module>mod_ssl</module></seealso>

  <directivesynopsis>
    <name>FTP</name>
    <description>Run an FTP Server on this host</description>
    <syntax>FTP on|off</syntax>
    <default>FTP off</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
     <p>You must define a <directive>Listen</directive> directive to
       listen for FTP requests.</p>
    <note>This directive is <strong>not</strong> inherited from the
      global configuration file.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPActiveRange</name>
    <description>Ports the server will use for connecting to the
      client</description>
    <syntax>FTPActiveRange <em>min [max]</em></syntax>
    <default>an ephemeral high-numbered port</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive defines the port or ports that mod_ftp will
        use when making an active connection to the client.  It accepts
        one or two arguments.  If only one argument is given, the server
        will always use that port.  If two arguments are given, the
        server will treat them as a range of ports to be used.</p>
      <note>Use a sufficient range to satisfy all client requests!  Between
        the time that the client makes a data channel request following the
        <code>PORT</code> or <code>EPRT</code> request, and the point at
        which the server has connected to the client, the origin port
        may be unavailable to any other client.</note>
      <note>Windows allows any process to access privileged ports.  However,
        to assign <code>FTPActiveRange</code> below 1024 on a unix platform,
        mod_ftp requires unix domain sockets, and will create an additional
        httpd process to serve these bound, low numbered ports to the httpd
        child worker processes.</note>
      <example>
        <p><code>FTPActiveRange 20</code></p>
        <p>Force the server to use the ftp-data scheme convention</p>
        <p><code>FTPActiveRange 5050</code></p>
        <p>Force the server to use port 5050</p>
        <p><code>FTPActiveRange 5050 5080</code></p>
        <p>Allow the server to use any port between 5050 and 5080,
          inclusive.</p>
      </example>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPBannerMessage</name>
    <description>Set initial login message</description>
    <syntax>FTPBannerMessage
      <em>message</em>|<em>file:/path/to/file</em></syntax>
    <default>none</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive sets a <em>message</em> that is displayed to
      the client on initial connection.  This can either be a string,
      or a path to a file.  The message can contain a variety of
      meta-characters:</p>
      <table>
	<tr><th><code>%T</code></th><td>Local time (in the form
            <code>Mon Apr 29 20:36:48 2002</code>)</td></tr>
	<tr><th><code>%C</code></th><td>Current working directory</td></tr>
	<tr><th><code>%h</code></th><td>Remote host</td></tr>
	<tr><th><code>%L</code></th><td>Local host</td></tr>
	<tr><th><code>%E</code></th><td>Server administrator (as given by
	    <directive module="core">ServerAdmin</directive>)</td></tr>
	<tr><th><code>%a</code></th><td>Remote IP-address</td></tr>
	<tr><th><code>%A</code></th><td>Local IP-address</td></tr>
	<tr><th><code>%u</code></th><td>Remote user</td></tr>
	<tr><th><code>%f</code></th><td>Number of files transferred</td></tr>
	<tr><th><code>%t</code></th><td>Total bytes downloaded</td></tr>
	<tr><th><code>%x</code></th><td>Number of data transfers</td></tr>
	<tr><th><code>%b</code></th><td>Total traffic for the session (both
	    control and data)</td></tr>
      </table>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPDataBlockSize</name>
    <description>Block size in bytes between control channel tests</description>
    <syntax>FTPDataBlockSize <em>bytes</em></syntax>
    <default>FTPDataBlockSize 48000</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>When mod_ftp is transmitting data via the operating system,
        it's not possible to monitor the control channel for <code>ABOR</code>
        signals.  FTPDataBlockSize partitions the transfer; between each block
        mod_ftp will see if there is a pending control channel request, or if
        the socket is ready to send more data, and proceed to the next block.
        Based on anticipated bandwidth, set this value to a reasonable window
        of time in which the server should answer the control channel.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPDirUmask</name>
    <description>Set the umask for created directory</description>
    <syntax>FTPDirUmask <em>umask</em></syntax>
    <default>FTPDirUmask 022</default>
    <contextlist>
      <context>server config</context>
      <context>virtual host</context>
      <context>directory</context>
      <context>.htaccess</context>
    </contextlist>
    <override>FileInfo</override>
    <usage>
      <p>This directive sets the permission mask for directory creation
	access. The default is 022 which gives the owner complete
	access and disables write access for the group and other
	users.</p>
      <note>This directive is not supported on Windows.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPDocRootEnv</name>
    <description>Set the DocumentRoot based on the given environment
      variable, such as a per-user LDAP property</description>
    <syntax>FTPDocRootEnv <em>envvar</em></syntax>
    <default>none</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive will cause FTP to use the value of the
	<code>envvar</code> environment variable in place of the
	default <code>DocumentRoot</code>, if the environment variable
	is defined.  The <code>envvar</code> variable must contain a
	full, rooted file path, e.g. <code>/some/path</code> on Unix
	or <code>d:/some/path</code> on Windows.</p>
      <p>This may be used with any authentication module which sets
        the value of an environment variable based on the logged in
        user or another condition (similar to <module>mod_env</module>
        or <module>mod_setenvif</module> to change FTP's Document Root
        on a per-user basis.</p>
      <note>This directive is <strong>not</strong> inherited from the
        global configuration file.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPEPSVIgnoreFamily</name>
    <description>Force EPSV to ignore the requested IP family
     (IPv4 vs. IPv6)</description>
    <syntax>FTPEPSVIgnoreFamily <em>On</em></syntax>
    <default>FTPEPSVIgnoreFamily Off</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive allows the client's <code>EPSV</code> request to bind
        to the local address, ignoring IPv4 vs. IPv6 requested by the client,
        in order to work around network address translation which presented
        an apparently different family.
        You may find this useful when the FTP Server is behind a firewall.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPExitMessage</name>
    <description>Set logout message</description>
    <syntax>FTPExitMessage
      <em>message</em>|<em>file:/path/to/file</em></syntax>
    <default>none</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage><p>This directive sets a <em>message</em> that is displayed to
	the client on disconnect.  This can either be a string, or a
	path to a file.  The message can contain a variety of
	meta-characters (see
	<directive module="mod_ftp">FTPBannerMessage</directive>).</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPHomeDir</name> <description>Set the path to directory
      containing user's home directories</description>
    <syntax>FTPHomeDir /directory</syntax>
    <default>none</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage><p>This directive defines where the user home <em>directory</em>
	is located.  This directory must be given as an absolute path,
	but is actually relative to the configured
	<directive module="core">DocumentRoot</directive> for the server.  For
	example, <code>FTPHomeDir /home</code> will cause the Apache FTP
        Server to look for the user home in the directory <directive
          module="code">DocumentRoot</directive><code
                                   >/home/</code><code>username</code>
	(where <em>username</em> is the login name of the user).</p>
      <p>If <directive>FTPHomeDir</directive> has been specified and
	the home directory for the user does not exist, the server logs
	an error and user is logged into the root
	("<code>/</code>") directory.  If you want the home
	directory created automatically, see the
	<directive>CreateHomeDirs</directive> option to the
	<directive module="mod_ftp">FTPOptions</directive> directive.</p>
      <note>This directive is <strong>not</strong> inherited from the
        global configuration file.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPImplicitSSL</name>
    <description>Use SSL implicitly</description>
    <syntax>FTPImplicitSSL on|off</syntax>
    <default>FTPImplicitSSL off</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive determines the security on the control
	connection when the user connects.  When set to
	<code>On</code>, the user is expected to connect using SSL.
	When set to <code>Off</code>, the user must connect insecurely
	then issue the <code>AUTH</code> command to start a secure
	session.</p>
      <note>This directive is <strong>not</strong> inherited from the global
	configuration file.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPJailUser</name>
    <description>Users are not allowed to leave their home
      directories</description>
    <syntax>FTPJailUser on|off</syntax>
    <default>FTPJailUser off</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive confines the user to the directory tree in
	which they were placed upon login.  The user can access any
	subdirectory of their default directory, but cannot access the
	parent directory or any other related directories.</p>
      <p>If the <directive module="mod_ftp">FTPHomeDir</directive>
	directive is not used, then <directive>FTPJailUser</directive>
	has no effect. This combination of directives can be very
	powerful for restricting where in your filesystem users may
	traverse.</p>
      <note>This directive is <strong>not</strong> inherited from the
	global configuration file.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPLimitDBFile</name>
    <description>Set the location for the Login Limit DB file</description>
    <syntax>FTPLimitDBFile <em>file-path</em></syntax>
    <default>FTPLimitDBFile logs/ftplogins</default>
    <contextlist><context>server config</context>
    </contextlist>
    <usage>
      <p>To provide <directive module="mod_ftp">FTPLimitLoginUser</directive>,
        <directive module="mod_ftp">FTPLimitLoginServer</directive> and
        <directive module="mod_ftp">FTPLimitLoginIP</directive>
        features, mod_ftp uses a small DBM file to store login data.  This
	directive determines the filename-path of that database file.
	If either <code>FTPLimit</code> directive is used, this directive
        must specify a filename for this DBM, writeable by the server.</p>
      <example><code>FTPLimitDBFile logs/ftplogins</code></example>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPLimitLoginIP</name>
    <description>Set the maximum number of concurrent logins per IP
      address</description>
    <syntax></syntax>
    <default>FTPLimitLoginIP 0 (unlimited)</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive allows the administrator to limit the total
	number of concurrent/simultaneous FTP logins.  For example, if
	set to 10, no more than 10 FTP logins from the same IP address
        would be allowed.  The default value is 0 (unlimited).</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPLimitLoginServer</name>
    <description>Set the maximum number of concurrent logins per
      server</description>
    <syntax>FTPLimitLoginServer <em>number</em></syntax>
    <default>FTPLimitLoginServer 0 (unlimited)</default>
    <contextlist><context>server config</context>
    </contextlist>
    <usage>
      <p>This directive allows the administrator to limit the total
	number of concurrent/simultaneous FTP logins.  For example, if
	set to 100, no more than 100 FTP logins to the same virtual host
        would be allowed.  The default value is 0 (unlimited).</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPLimitLoginUser</name>
    <description>Set the maximum number of concurrent logins per
      user</description>
    <syntax>FTPLimitLoginUser <em>number</em></syntax>
    <default>FTPLimitLoginUser 0 (unlimited)</default>
    <contextlist><context>server config</context>
    </contextlist>
    <usage>
      <p>This directive allows the administrator to limit the
	number of concurrent/simultaneous logins of a single FTP user.
	For example, if set to 3, then no single FTP account would be
	allowed to have more than 3 concurrent logins (including the
	guest/anonymous account).  The default value is 0 (unlimited).</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPLowPortSock</name>
    <description>The filename prefix of the unix domain socket used to pass low numbered origin port requests</description>
    <syntax>FTPLowPortSock <em>pathname</em></syntax>
    <default>FTPLowPortSock logs/ftp-lowportd-sock</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
        <p>This directive sets the filename prefix of the socket to use for
          communication with the CGI daemon, an extension corresponding to
          the process ID of the server will be appended. The socket will be
          created using the permissions of the user who starts Apache (usually
          root). To maintain the security of communications with CGI
          scripts, it is important that no other user has permission to
          write in the directory where the socket is located.</p>
      <example><title>Example</title>
        FTPLowPortSock /var/run/cgid.sock
      </example>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPMaxLoginAttempts</name>
    <description>Maximum number of login attempts</description>
    <syntax>FTPMaxLoginAttempts <em>attempts</em></syntax>
    <default>FTPMaxLoginAttempts 3</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive controls the number of failed
	<em>attempts</em> to log in that are allowed before breaking
	the connection and logging the failed attempts.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPOptions</name>
    <description>Set options for this server</description>
    <syntax>FTPOptions <em>option1 [option2] ...</em></syntax>
    <default>none</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive sets per server options.</p>
      <p>Current options:</p>
      <dl>
	<dt><code>AllowProxyPASV</code></dt>
	<dd><p>This option permits connection to the server's data
            channel when it originates from an IP address other than
            the control channel client's IP.  It affects both the
            <code>PASV</code> and <code>EPSV</code> data connections.`
	    As proxy FTP is rarely used and considered potentially
            insecure, this directive should be used with caution.</p>
	</dd>
	<dt><code>AllowProxyPORT</code></dt>
	<dd><p>This option permits the server to create a data channel
            connection to an IP address other than the control channel
            client's IP.  It affects both the <code>PORT</code> and
            <code>EPRT</code> data connections.  As proxy FTP is rarely
            used and considered potentially insecure, this directive
            should be used with caution.</p>
	</dd>
	<dt><code>CheckMaxClients</code></dt>
	<dd><p>This option denies login to a client when the server is
	    full. If it is not enabled, the client will wait on the
	    accept queue until another client disconnects.</p>
	</dd>
	<dt><code>CreateHomeDirs</code></dt>
	<dd><p>This option causes the server to automatically create a
	    home directory in the location specified by the
	    <directive module="mod_ftp">FTPHomeDir</directive> directive.
	    If the <directive module="mod_ftp">FTPHomeDir</directive>
	    directive is not specified, this option has no effect.</p>
	  <note><p>Setting this option on an anonymous site is not
	      recommended.  This is because a directory is created for
	      each unique user (usually identified by their email
	      address) that logs onto the server. </p>
	    <p>This option will only work if the <directive
		module="mod_ftp">FTPHomeDir</directive> directories are
	      accessible to the process owner of the Apache HTTP Server,
	      typically on UNIX systems the user
	      <code>nobody</code>.</p>
	  </note>
	</dd>
	<dt><code>LISTisNLST</code></dt>
	<dd><p>This option causes the server to display identical output
	  when it receives either a <code>LIST</code> request or an
	  <code>NLST</code> request. Unlike
	  <directive>NLSTisLIST</directive>, the output is a list of
	  files without details.  If the -l option is passed to
	  <code>LIST</code> requests, details will be provided,
	  whether this option is set or not.</p>
	</dd>
	<dt><code>NLSTisLIST</code></dt>
	<dd><p>This option causes the server
	    to display identical output when it receives either a
	    <code>LIST</code> request or an <code>NLST</code> request.
	    Like <directive>NLSTShowDirs</directive>, this option is
	    used for FTP clients that send different requests for
	    <code>ls</code> or <code>dir</code> commands.</p>
	  <note>
	    <p>Setting this option will cause commands that request
	    multiple files to fail and should be used with
	    caution.</p>
	  </note>
	</dd>
	<dt><code>NLSTShowDirs</code></dt>
	<dd><p>This option causes the server
	    to display directories as well as files when it receives
	    an <code>NLST</code> request.  Some FTP clients send an
	    <code>NLST</code> requests when the user issues an
	    <code>ls</code> or <code>dir</code> commands.  Since the
	    default response is to display files only, the user may be
	    confused.</p>
	  <note><p>
	      Setting this option will cause commands that request
	      multiple files to fail and should be used with
	      caution.</p>
	  </note>
	</dd>
	<dt><code>NoUTF8Feature</code></dt>
	<dd><p>By default, mod_ftp will advertise <code>UTF8</code> in
            response to the <code>FEAT</code> command.  This ensures
            the client is aware they may use 8-bit filenames (rather
            than 7-bit ASCII), preferably using the UTF-8 character set.
            This flag, available only in the global context, disables
            this default behavior for all hosts, omitting <code>UTF8</code>
            from the <code>FEAT</code> server response.</p>
	</dd>
	<dt><code>RemoveUserGroup</code></dt>
	<dd><p>This option causes the
	    server to print the UID and GID rather than the user name
	    and group name for directory listings. It has no effect on
	    Windows systems.</p>
	</dd>
	<dt><code>RequireSSL</code></dt>
	<dd><p>This option requires the client to issue an
	    <code>AUTH</code> command to switch to SSL before sending any
	    password information.  This is much like implicit SSL in that
	    it forces the client to use SSL to send password information.
	    The difference is that using the <code>RequireSSL</code>
	    option will allow a client to connect without SSL, but then
	    issue the <code>AUTH</code> SSL command before sending the
	    username and password.</p>
	</dd>
	<dt><code>ShowUnAuthorizedFiles</code></dt>
	<dd><p>This option causes
	    the server to show files that the user does not have
	    authorization to retrieve and directories that the user
	    does not have authorization to enter (<code>cd</code> will
	    fail) when it receives a <code>LIST</code> or similar
            <code>NLST</code> command.  These commands will then behave
            as most standard FTP servers, where users see the list of
	    all files and directories, even those they are not allowed
	    to access.</p>
	</dd>
	<dt><code>StripHostname</code></dt>
	<dd><p>When the user presents a <code>USER {user@hostname}</code>
            command, strip the "@hostname" text from the provided name
            before presenting "user" to the authentication modules.
            Most commonly used in conjunction with the
            <directive>VirtualHostByUser</directive> option below.</p>
	</dd>
	<dt><code>VirtualHostByUser</code></dt>
	<dd><p>When the user presents a <code>USER {user@hostname}</code>
            command, select a
            <directive module="core">VirtualHost</directive> by the "hostname"
            text of the provided name.  The
            <directive module="core">NameVirtualHost</directive> must be
            configured appropriately to match these hosts.  If no named
            virtual host matches by its
            <directive module="core">ServerName</directive> or any of its
            <directive module="core">ServerAlias</directive>s, the login
            falls into the first matching VirtualHost by IP, just as HTTP
            treats an unmatched <code>Host:</code> header.</p>
	</dd>
      </dl>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPPASVaddr</name>
    <description>Set the apparent server IP address for PASV data
      channels</description>
    <syntax>FTPPASVAddr <em>IP address</em></syntax>
    <default>The server's actual IP address of the control channel
     connection</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive allows you to specify a different <em>IP address</em>
        to be presented to the client in response to <code>PASV</code>
        requests.  It has no effect on the IP address the server will
        listen on, use <directive module="mod_ftp">FTPPASVbindaddr</directive>
        instead to affect the IP address of the actual data connection.</p>
      <p>You may find this useful when the FTP Server is behind a firewall.
        It has <em>no</em> effect on <code>EPSV</code> requests.</p>
      <note>This directive is <strong>not</strong> inherited from the global
        configuration file.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPPASVbindaddr</name>
    <description>Set and bind the allowed PASV server IP address for
      the data channel</description>
    <syntax>FTPPASVbindaddr <em>IP address</em></syntax>
    <default>The specified
      <directive module="mod_ftp">FTPPASVaddr</directive>, or in its
      absense, the server's actual IP address of the control channel
      connection</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive is similar to the
        <directive module="mod_ftp">FTPPASVaddr</directive> directive,
        except that the Apache FTP Server attempts to bind to the specified
        <em>IP address</em>, and note that any
        <directive module="mod_ftp">FTPPASVaddr</directive> directive
        continues to override the address presented to the client.</p>
      <p>You may find this useful when the FTP Server is behind a firewall.
        It has <em>no</em> effect on <code>EPSV</code> requests.</p>
      <note>This directive is <strong>not</strong> inherited from the
        global configuration file.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPPASVrange</name>
    <description>Set the allowed passive port range</description>
    <syntax>FTPPASVrange <em>number number</em></syntax>
    <default>an ephemeral high-numbered port</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive defines the port range (<em>number</em> to
        <em>number</em> inclusive) to be used for all passive connections,
        including <code>PASV</code> and <code>EPSV</code> requests.
        This directive is designed for use in environments where you
        only want to open a specific range of ports on your
        firewall.</p>
      <note>Use a sufficient range to satisfy all client requests!
        Between the time that the server answers a <code>PASV</code>
        or <code>EPSV</code> request, and the point at which the client
        connects to the indiciated port, that specific port is
        unavailable to any other client.</note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPReadmeMessage</name>
    <description>Set per-directory Readme file</description>
    <syntax>FTPReadmeMessage
      <em>message</em>|<em>file:/path/to/file</em>
    </syntax>
    <default>none</default>
    <contextlist>
      <context>server config</context>
      <context>virtual host</context>
      <context>directory</context>
      <context>.htaccess</context>
    </contextlist>
    <override>Any</override>
    <usage><p>This directive sets a <em>message</em> that is displayed
	to the client upon entering a new directory.  This can either
	be a string, or a path to a file.  The message can contain a
	variety of meta-characters (see	<directive
	  module="mod_ftp">FTPBannerMessage</directive>).</p>
      <p>When this directive is placed in the <directive module="core"
	  type="section">VirtualHost</directive> container, the README
	message will apply to all directories.  When it is used in a
	<directive module="core" type="section">Directory</directive>
	container or placed in an <code>.htaccess</code> file, only
	that directory will inherit the README message.</p>
      <p>Configuring a README message for a directory will also override any
	global README messages.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPTimeoutData</name>
    <description>Idle time allowed during a data transfer</description>
    <syntax>FTPTimeoutData <em>time</em></syntax>
    <default>FTPTimeoutData 300</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive sets the <em>time</em> in seconds the server
	will wait during a data transfer. If no data is sent to the
	client in this amount of time, the data connection is
	closed.</p>
   </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPTimeoutIdle</name>
    <description>Idle time allowed during a FTP session</description>
    <syntax>FTPTimeoutIdle <em>time</em></syntax>
    <default>FTPTimeoutIdle 600</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive sets the amount of <em>time</em> in seconds
	allowed between commands sent by the client. If no commands
	are received in this amount of time, the user is
	disconnected.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPTimeoutLogin</name>
    <description>Idle time allowed when logging in</description>
    <syntax>FTPTimeoutLogin <em>time</em></syntax>
    <default>FTPTimeoutLogin 60</default>
    <contextlist><context>server config</context>
      <context>virtual host</context></contextlist>
    <usage>
      <p>This directive sets the amount of <em>time</em> in seconds
	that a user has to send a username to the server. If the
	username is not received in this amount of time, the user is
	disconnected.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FTPUmask</name>
    <description>Set the umask for created files</description>
    <syntax>FTPUmask <em>umask</em></syntax>
    <default>FTPUmask 022</default>
    <contextlist>
      <context>server config</context>
      <context>virtual host</context>
      <context>directory</context>
      <context>.htaccess</context>
    </contextlist>
    <override>FileInfo</override>
    <usage>
      <p>This directive sets the permission mask for file creation
	access. The default is 022 which gives the owner complete
	access and disables write access for the group and other
	users.</p>
      <note>This directive is not supported on Windows.</note>
    </usage>
  </directivesynopsis>

</modulesynopsis>

