This procedure is defined in the server but not documented via ad_proc or proc_doc and may be intended as a private interface.
The procedure is defined as:
proc tdav::apply_filters {uri options enable_filesystem} {
# Verify that the options are valid options. Webdav requires
# support for a minimum set of options. And offers support for a
# limited set of options. (See RFC 2518)
set required_options [list OPTIONS PROPFIND PROPPATCH MKCOL GET HEAD POST]
foreach required_option $required_options {
if {$required_option ni [string toupper $options]} {
ns_log error "Required option $required_option missing from tDAV options for URI '$uri'.
Required web dav options are: '$required_options'."
return
}
}
set allowed_options [list OPTIONS COPY DELETE GET HEAD MKCOL MOVE LOCK POST PROPFIND PROPPATCH PUT TRACE UNLOCK]
foreach option $options {
if {[lsearch -exact $allowed_options [string toupper $option]] < 0} {
ns_log error "Option $option is not an allowed tDAV option for URI '$uri'.
Allowed web dav options are: '$allowed_options'."
return
}
}
# Register filters for selected tDAV options. Do not register a
# filter for GET, POST or HEAD.
# change /example/* to /example* to accommodate the
# url matching for registered filters
set filter_uri "[string trimright $uri /*]*"
foreach option $options {
if {$option ni [list GET POST HEAD]} {
ns_log debug "tDAV registering filter for $filter_uri on $option"
ns_register_filter postauth [string toupper $option] "${filter_uri}" tdav::filter_webdav_[string tolower $option]
}
}
ns_log notice "tDAV: Registered filters on $filter_uri"
# Register procedures for selected tDAV options. Do not register a
# proc for OPTIONS, GET, POST or HEAD.
if {"true" eq $enable_filesystem} {
foreach option $options {
if {$option ni [list OPTIONS GET POST HEAD]} {
ns_log debug "tDAV registering proc for $uri on $option"
ns_register_proc [string toupper $option] "${uri}" tdav::webdav_[string tolower $option]
}
}
ns_log notice "tDAV: Registered procedures on $uri"
} else {
ns_log notice "tDAV: Filesystem access by WebDAV disabled"
}
# Store the tDAV properties in an nsv set so that the registered
# filters and procedures don't have to read the config file
# anymore.
nsv_set tdav_options $uri $options
}