<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Copyright 2002-2005 The Apache Software Foundation or its licensors, as
 applicable.

 Licensed 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.
-->

<modulesynopsis metafile="mod_dav.xml.meta">

<name>mod_dav</name> 
<description>Distributed Authoring and Versioning
(<a href="http://www.webdav.org/">WebDAV</a>) functionality</description>
<status>Extension</status>
<sourcefile>mod_dav.c</sourcefile>
<identifier>dav_module</identifier>

<summary>
    <p>This module provides class 1 and class 2 <a
    href="http://www.webdav.org">WebDAV</a> ('Web-based Distributed
    Authoring and Versioning') functionality for Apache. This
    extension to the HTTP protocol allows creating, moving,
    copying, and deleting resources and collections on a remote web
    server.</p>
</summary>
<seealso><directive module="mod_dav_fs">DavLockDB</directive></seealso>
<seealso><directive module="core">LimitXMLRequestBody</directive></seealso>
<seealso><a href="http://www.webdav.org">WebDAV Resources</a></seealso>

<section id="example"><title>Enabling WebDAV</title>
    <p>To enable <module>mod_dav</module>, add the following to a
    container in your <code>httpd.conf</code> file:</p>

    <example>Dav On</example>

    <p>This enables the DAV file system provider, which is implemented
    by the <module>mod_dav_fs</module> module. Therefore, that module
    must be compiled into the server or loaded at runtime using the
    <directive module="mod_so">LoadModule</directive> directive.</p>
    
    <p>In addition, a location for the DAV lock database must be
    specified in the global section of your <code>httpd.conf</code>
    file using the <directive module="mod_dav_fs">DavLockDB</directive>
    directive:</p>

    <example>
      DavLockDB /usr/local/apache2/var/DavLock
    </example>

    <p>The directory containing the lock database file must be
    writable by the <directive module="mpm_common">User</directive>
    and <directive module="mpm_common" >Group</directive> under which
    Apache is running.</p>

    <p>You may wish to add a <directive module="core" type="section"
    >Limit</directive> clause inside the <directive module="core"
    type="section">Location</directive> directive to limit access to
    DAV-enabled locations. If you want to set the maximum amount of
    bytes that a DAV client can send at one request, you have to use
    the <directive module="core">LimitXMLRequestBody</directive>
    directive. The "normal" <directive module="core"
    >LimitRequestBody</directive> directive has no effect on DAV
    requests.</p>

    <example><title>Full Example</title>
      DavLockDB /usr/local/apache2/var/DavLock<br />
      <br />
       &lt;Location /foo&gt;<br />
       <indent>
         Dav On<br />
         <br />
         AuthType Basic<br />
         AuthName DAV<br />
         AuthUserFile user.passwd<br />
         <br />
         &lt;LimitExcept GET OPTIONS&gt;<br />
         <indent>
           require user admin<br />
         </indent>
         &lt;/LimitExcept&gt;<br />
       </indent>
       &lt;/Location&gt;<br />
    </example>

   <p><module>mod_dav</module> is a descendent of Greg Stein's <a
   href="http://www.webdav.org/mod_dav/">mod_dav for Apache 1.3</a>.  More
   information about the module is available from that site.</p>
</section>

<section id="security"><title>Security Issues</title>

    <p>Since DAV access methods allow remote clients to manipulate
    files on the server, you must take particular care to assure that
    your server is secure before enabling <module>mod_dav</module>.</p>

    <p>Any location on the server where DAV is enabled should be
    protected by authentication.  The use of HTTP Basic Authentication
    is not recommended. You should use at least HTTP Digest
    Authentication, which is provided by the
    <module>mod_auth_digest</module> module. Nearly all WebDAV clients
    support this authentication method. An alternative is Basic
    Authentication over an <a href="../ssl/">SSL</a> enabled
    connection.</p>

    <p>In order for <module>mod_dav</module> to manage files, it must
    be able to write to the directories and files under its control
    using the <directive module="mpm_common">User</directive> and
    <directive module="mpm_common">Group</directive> under which
    Apache is running.  New files created will also be owned by this
    <directive module="mpm_common">User</directive> and <directive
    module="mpm_common">Group</directive>.  For this reason, it is
    important to control access to this account.  The DAV repository
    is considered private to Apache; modifying files outside of Apache
    (for example using FTP or filesystem-level tools) should not be
    allowed.</p>

    <p><module>mod_dav</module> may be subject to various kinds of
    denial-of-service attacks.  The <directive
    module="core">LimitXMLRequestBody</directive> directive can be
    used to limit the amount of memory consumed in parsing large DAV
    requests.  The <directive
    module="mod_dav">DavDepthInfinity</directive> directive can be
    used to prevent <code>PROPFIND</code> requests on a very large
    repository from consuming large amounts of memory.  Another
    possible denial-of-service attack involves a client simply filling
    up all available disk space with many large files.  There is no
    direct way to prevent this in Apache, so you should avoid giving
    DAV access to untrusted users.</p>
</section>

<section id="complex"><title>Complex Configurations</title>

    <p>One common request is to use <module>mod_dav</module> to
    manipulate dynamic files (PHP scripts, CGI scripts, etc).  This is
    difficult because a <code>GET</code> request will always run the
    script, rather than downloading its contents.  One way to avoid
    this is to map two different URLs to the content, one of which
    will run the script, and one of which will allow it to be
    downloaded and manipulated with DAV.</p>

<example>
Alias /phparea /home/gstein/php_files<br />
Alias /php-source /home/gstein/php_files<br />
&lt;Location /php-source&gt;
<indent>
    DAV On<br />
    ForceType text/plain<br />
</indent>
&lt;/Location&gt;
</example>

    <p>With this setup, <code>http://example.com/phparea</code> can be
    used to access the output of the PHP scripts, and
    <code>http://example.com/php-source</code> can be used with a DAV
    client to manipulate them.</p>
</section>

<directivesynopsis>
<name>Dav</name>
<description>Enable WebDAV HTTP methods</description>
<syntax>Dav On|Off|<var>provider-name</var></syntax>
<default>Dav Off</default>
<contextlist><context>directory</context></contextlist>

<usage>
    <p>Use the <directive>Dav</directive> directive to enable the
    WebDAV HTTP methods for the given container:</p>

    <example>
      &lt;Location /foo&gt;<br />
      <indent>
        Dav On<br />
      </indent>
      &lt;/Location&gt;
    </example>

    <p>The value <code>On</code> is actually an alias for the default
    provider <code>filesystem</code> which is served by the <module
    >mod_dav_fs</module> module. Note, that once you have DAV enabled
    for some location, it <em>cannot</em> be disabled for sublocations.
    For a complete configuration example have a look at the <a
    href="#example">section above</a>.</p>

    <note type="warning">
      Do not enable WebDAV until you have secured your server. Otherwise
      everyone will be able to distribute files on your system.
    </note>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>DavMinTimeout</name>
<description>Minimum amount of time the server holds a lock on
a DAV resource</description>
<syntax>DavMinTimeout <var>seconds</var></syntax>
<default>DavMinTimeout 0</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context></contextlist>

<usage>
    <p>When a client requests a DAV resource lock, it can also
    specify a time when the lock will be automatically removed by
    the server. This value is only a request, and the server can
    ignore it or inform the client of an arbitrary value.</p>

    <p>Use the <directive>DavMinTimeout</directive> directive to specify, in
    seconds, the minimum lock timeout to return to a client.
    Microsoft Web Folders defaults to a timeout of 120 seconds; the
    <directive>DavMinTimeout</directive> can override this to a higher value
    (like 600 seconds) to reduce the chance of the client losing
    the lock due to network latency.</p>

    <example><title>Example</title>
      &lt;Location /MSWord&gt;<br />
      <indent>
        DavMinTimeout 600<br />
      </indent>
      &lt;/Location&gt;
    </example>
</usage>     
</directivesynopsis>

<directivesynopsis>
<name>DavDepthInfinity</name>
<description>Allow PROPFIND, Depth: Infinity requests</description>
<syntax>DavDepthInfinity on|off</syntax>
<default>DavDepthInfinity off</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context></contextlist>

<usage>
    <p>Use the <directive>DavDepthInfinity</directive> directive to
    allow the processing of <code>PROPFIND</code> requests containing the
    header 'Depth: Infinity'. Because this type of request could constitute
    a denial-of-service attack, by default it is not allowed.</p>
</usage>
</directivesynopsis>

</modulesynopsis>


