Apache2
mod_dav.h File Reference

DAV extension module for Apache 2.0.*. More...

#include "apr_hooks.h"
#include "apr_hash.h"
#include "apr_dbm.h"
#include "apr_tables.h"
#include "httpd.h"
#include "util_filter.h"
#include "util_xml.h"
#include <limits.h>
#include <time.h>
Include dependency graph for mod_dav.h:

Go to the source code of this file.

Data Structures

struct  dav_error
 
struct  dav_resource
 
struct  dav_buffer
 
struct  dav_get_props_result
 
struct  dav_response
 
struct  dav_lookup_result
 
struct  dav_xmlns_info
 
struct  dav_provider
 
struct  dav_if_state_list
 
struct  dav_if_header
 
struct  dav_locktoken_list
 
struct  dav_hooks_liveprop
 
struct  dav_liveprop_spec
 
struct  dav_liveprop_group
 
struct  dav_liveprop_elem
 
struct  dav_prop_name
 
struct  dav_hooks_propdb
 
struct  dav_lockdb
 
struct  dav_lock
 
struct  dav_hooks_locks
 
struct  dav_prop_ctx
 
struct  dav_walk_resource
 
struct  dav_walk_params
 
struct  dav_walker_ctx
 
struct  dav_hooks_repository
 
struct  dav_auto_version_info
 
struct  dav_report_elem
 
struct  dav_hooks_vsn
 
struct  dav_hooks_binding
 
struct  dav_hooks_search
 
struct  dav_elem_private
 
struct  dav_acl_provider
 
struct  dav_options_provider
 
struct  dav_resource_type_provider
 

Macros

#define DAV_VERSION   AP_SERVER_BASEREVISION
 
#define DAV_XML_HEADER   "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
 
#define DAV_XML_CONTENT_TYPE   "text/xml; charset=\"utf-8\""
 
#define DAV_READ_BLOCKSIZE   2048 /* used for reading input blocks */
 
#define DAV_RESPONSE_BODY_1   "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n<title>"
 
#define DAV_RESPONSE_BODY_2   "</title>\n</head><body>\n<h1>"
 
#define DAV_RESPONSE_BODY_3   "</h1>\n<p>"
 
#define DAV_RESPONSE_BODY_4   "</p>\n"
 
#define DAV_RESPONSE_BODY_5   "</body></html>\n"
 
#define DAV_DO_COPY   0
 
#define DAV_DO_MOVE   1
 
#define DAV_DEBUG   1
 
#define DEBUG_CR   "\n"
 
#define DBG0(f)
 
#define DBG1(f, a1)
 
#define DBG2(f, a1, a2)
 
#define DBG3(f, a1, a2, a3)
 
#define DAV_INFINITY   INT_MAX /* for the Depth: header */
 
#define DAV_DECLARE(type)   type
 
#define DAV_DECLARE_NONSTD(type)   type
 
#define DAV_DECLARE_DATA
 
#define DAV_ERR_IF_PARSE   100 /* general parsing error */
 
#define DAV_ERR_IF_MULTIPLE_NOT   101 /* multiple "Not" found */
 
#define DAV_ERR_IF_UNK_CHAR   102 /* unknown char in header */
 
#define DAV_ERR_IF_ABSENT   103 /* no locktokens given */
 
#define DAV_ERR_IF_TAGGED   104 /* in parsing tagged-list */
 
#define DAV_ERR_IF_UNCLOSED_PAREN   105 /* in no-tagged-list */
 
#define DAV_ERR_PROP_BAD_MAJOR   200 /* major version was wrong */
 
#define DAV_ERR_PROP_READONLY   201 /* prop is read-only */
 
#define DAV_ERR_PROP_NO_DATABASE   202 /* writable db not avail */
 
#define DAV_ERR_PROP_NOT_FOUND   203 /* prop not found */
 
#define DAV_ERR_PROP_BAD_LOCKDB   204 /* could not open lockdb */
 
#define DAV_ERR_PROP_OPENING   205 /* problem opening propdb */
 
#define DAV_ERR_PROP_EXEC   206 /* problem exec'ing patch */
 
#define DAV_ERR_LOCK_OPENDB   400 /* could not open lockdb */
 
#define DAV_ERR_LOCK_NO_DB   401 /* no database defined */
 
#define DAV_ERR_LOCK_CORRUPT_DB   402 /* DB is corrupt */
 
#define DAV_ERR_LOCK_UNK_STATE_TOKEN   403 /* unknown State-token */
 
#define DAV_ERR_LOCK_PARSE_TOKEN   404 /* bad opaquelocktoken */
 
#define DAV_ERR_LOCK_SAVE_LOCK   405 /* err saving locks */
 
#define DAV_BUFFER_MINSIZE   256 /* minimum size for buffer */
 
#define DAV_BUFFER_PAD   64 /* amount of pad when growing */
 
#define DAV_STYLE_ISO8601   1
 
#define DAV_STYLE_RFC822   2
 
#define DAV_TIMEBUF_SIZE   30
 
#define DAV_GET_HOOKS_PROPDB(r)   dav_get_propdb_hooks(r)
 
#define DAV_GET_HOOKS_LOCKS(r)   dav_get_lock_hooks(r)
 
#define DAV_GET_HOOKS_VSN(r)   dav_get_vsn_hooks(r)
 
#define DAV_GET_HOOKS_BINDING(r)   dav_get_binding_hooks(r)
 
#define DAV_GET_HOOKS_SEARCH(r)   dav_get_search_hooks(r)
 
#define DAV_IF_COND_NORMAL   0
 
#define DAV_IF_COND_NOT   1 /* "Not" was applied */
 
#define DAV_PROPID_CORE   10000 /* ..10099. defined by mod_dav */
 
#define DAV_PROPID_FS
 
#define DAV_PROPID_TEST1   10300 /* ..10399 */
 
#define DAV_PROPID_TEST2   10400 /* ..10499 */
 
#define DAV_PROPID_TEST3   10500 /* ..10599 */
 
#define DAV_TIMEOUT_INFINITE   0
 
#define DAV_VALIDATE_RESOURCE   0x0010 /* validate just the resource */
 
#define DAV_VALIDATE_PARENT   0x0020 /* validate resource AND its parent */
 
#define DAV_VALIDATE_ADD_LD
 
#define DAV_VALIDATE_USE_424   0x0080 /* return 424 status, not 207 */
 
#define DAV_VALIDATE_IS_PARENT   0x0100 /* for internal use */
 
#define DAV_VALIDATE_NO_MODIFY
 
#define DAV_GETLOCKS_RESOLVED   0 /* resolve indirects to directs */
 
#define DAV_GETLOCKS_PARTIAL   1 /* leave indirects partially filled */
 
#define DAV_GETLOCKS_COMPLETE   2 /* fill out indirect locks */
 
#define DAV_RESOURCE_LOCK_NULL   10 /* resource lock-null */
 
#define DAV_RESOURCE_NULL   11 /* resource null */
 
#define DAV_RESOURCE_EXISTS   12 /* resource exists */
 
#define DAV_RESOURCE_ERROR   13 /* an error occurred */
 
#define DAV_PROPDB_NONE   0
 
#define DAV_PROPDB_RO   1
 
#define DAV_PROPDB_DISABLE_LOCKDISCOVERY   2
 
#define DAV_PROP_OP_SET   1 /* set a property value */
 
#define DAV_PROP_OP_DELETE   2 /* delete a prop value */
 
#define DAV_PROP_CTX_HAS_ERR(dpc)   ((dpc).err && (dpc).err->status >= 300)
 
#define DAV_WALKTYPE_AUTH   0x0001 /* limit to authorized files */
 
#define DAV_WALKTYPE_NORMAL   0x0002 /* walk normal files */
 
#define DAV_WALKTYPE_LOCKNULL   0x0004 /* walk locknull resources */
 
#define DAV_WALKTYPE_TOLERANT   0x0008 /* tolerate non-fatal errors */
 
#define DAV_PROPFIND_IS_ALLPROP   1
 
#define DAV_PROPFIND_IS_PROPNAME   2
 
#define DAV_PROPFIND_IS_PROP   3
 
#define DAV_OPTIONS_EXTENSION_GROUP   "dav_options"
 
#define DAV_RESOURCE_TYPE_GROUP   "dav_resource_type"
 

Typedefs

typedef struct dav_error dav_error
 
typedef struct dav_response dav_response
 
typedef struct dav_hooks_propdb dav_hooks_propdb
 
typedef struct dav_hooks_locks dav_hooks_locks
 
typedef struct dav_hooks_vsn dav_hooks_vsn
 
typedef struct dav_hooks_repository dav_hooks_repository
 
typedef struct dav_hooks_liveprop dav_hooks_liveprop
 
typedef struct dav_hooks_binding dav_hooks_binding
 
typedef struct dav_hooks_search dav_hooks_search
 
typedef dav_hooks_propdb dav_hooks_db
 
typedef struct dav_resource_private dav_resource_private
 
typedef struct dav_acl_provider dav_acl_provider
 
typedef struct dav_resource dav_resource
 
typedef struct dav_locktoken dav_locktoken
 
typedef struct dav_if_state_list dav_if_state_list
 
typedef struct dav_if_header dav_if_header
 
typedef struct dav_locktoken_list dav_locktoken_list
 
typedef struct dav_liveprop_rollback dav_liveprop_rollback
 
typedef struct dav_db dav_db
 
typedef struct dav_namespace_map dav_namespace_map
 
typedef struct dav_deadprop_rollback dav_deadprop_rollback
 
typedef struct dav_lockdb_private dav_lockdb_private
 
typedef struct dav_lock_private dav_lock_private
 
typedef struct dav_lock dav_lock
 
typedef struct dav_propdb dav_propdb
 
typedef struct dav_prop_ctx dav_prop_ctx
 
typedef struct dav_walker_ctx dav_walker_ctx
 
typedef struct dav_stream dav_stream
 
typedef struct dav_options_provider dav_options_provider
 
typedef struct dav_resource_type_provider dav_resource_type_provider
 

Enumerations

enum  dav_resource_type {
  DAV_RESOURCE_TYPE_UNKNOWN , DAV_RESOURCE_TYPE_REGULAR , DAV_RESOURCE_TYPE_VERSION , DAV_RESOURCE_TYPE_HISTORY ,
  DAV_RESOURCE_TYPE_WORKING , DAV_RESOURCE_TYPE_WORKSPACE , DAV_RESOURCE_TYPE_ACTIVITY , DAV_RESOURCE_TYPE_PRIVATE
}
 
enum  dav_prop_insert {
  DAV_PROP_INSERT_NOTDEF , DAV_PROP_INSERT_NOTSUPP , DAV_PROP_INSERT_NAME , DAV_PROP_INSERT_VALUE ,
  DAV_PROP_INSERT_SUPPORTED
}
 
enum  dav_if_state_type { dav_if_etag , dav_if_opaquelock , dav_if_unknown }
 
enum  {
  DAV_PROPID_BEGIN = 20000 , DAV_PROPID_creationdate , DAV_PROPID_displayname , DAV_PROPID_getcontentlanguage ,
  DAV_PROPID_getcontentlength , DAV_PROPID_getcontenttype , DAV_PROPID_getetag , DAV_PROPID_getlastmodified ,
  DAV_PROPID_lockdiscovery , DAV_PROPID_resourcetype , DAV_PROPID_source , DAV_PROPID_supportedlock ,
  DAV_PROPID_activity_checkout_set , DAV_PROPID_activity_set , DAV_PROPID_activity_version_set , DAV_PROPID_auto_merge_set ,
  DAV_PROPID_auto_version , DAV_PROPID_baseline_collection , DAV_PROPID_baseline_controlled_collection , DAV_PROPID_baseline_controlled_collection_set ,
  DAV_PROPID_checked_in , DAV_PROPID_checked_out , DAV_PROPID_checkin_fork , DAV_PROPID_checkout_fork ,
  DAV_PROPID_checkout_set , DAV_PROPID_comment , DAV_PROPID_creator_displayname , DAV_PROPID_current_activity_set ,
  DAV_PROPID_current_workspace_set , DAV_PROPID_default_variant , DAV_PROPID_eclipsed_set , DAV_PROPID_label_name_set ,
  DAV_PROPID_merge_set , DAV_PROPID_precursor_set , DAV_PROPID_predecessor_set , DAV_PROPID_root_version ,
  DAV_PROPID_subactivity_set , DAV_PROPID_subbaseline_set , DAV_PROPID_successor_set , DAV_PROPID_supported_method_set ,
  DAV_PROPID_supported_live_property_set , DAV_PROPID_supported_report_set , DAV_PROPID_unreserved , DAV_PROPID_variant_set ,
  DAV_PROPID_version_controlled_binding_set , DAV_PROPID_version_controlled_configuration , DAV_PROPID_version_history , DAV_PROPID_version_name ,
  DAV_PROPID_workspace , DAV_PROPID_workspace_checkout_set , DAV_PROPID_quota_available_bytes , DAV_PROPID_quota_used_bytes ,
  DAV_PROPID_END
}
 
enum  dav_lock_scope { DAV_LOCKSCOPE_UNKNOWN , DAV_LOCKSCOPE_EXCLUSIVE , DAV_LOCKSCOPE_SHARED }
 
enum  dav_lock_type { DAV_LOCKTYPE_UNKNOWN , DAV_LOCKTYPE_WRITE }
 
enum  dav_lock_rectype { DAV_LOCKREC_DIRECT , DAV_LOCKREC_INDIRECT , DAV_LOCKREC_INDIRECT_PARTIAL }
 
enum  { DAV_CALLTYPE_MEMBER = 1 , DAV_CALLTYPE_COLLECTION , DAV_CALLTYPE_LOCKNULL }
 
enum  dav_stream_mode { DAV_MODE_WRITE_TRUNC , DAV_MODE_WRITE_SEEKABLE }
 
enum  dav_auto_version { DAV_AUTO_VERSION_NEVER , DAV_AUTO_VERSION_ALWAYS , DAV_AUTO_VERSION_LOCKED }
 

Functions

 DAV_DECLARE (dav_error *) dav_new_error(apr_pool_t *p
 
 DAV_DECLARE (int) dav_handle_err(request_rec *r
 
 DAV_DECLARE (void) dav_set_bufsize(apr_pool_t *p
 
 DAV_DECLARE (dav_lookup_result) dav_lookup_uri(const char *uri
 
 DAV_DECLARE (apr_text *) dav_failed_proppatch(apr_pool_t *p
 
 DAV_DECLARE (apr_xml_elem *) dav_find_child(const apr_xml_elem *elem
 
 DAV_DECLARE (apr_xml_attr *) dav_find_attr_ns(const apr_xml_elem *elem
 
 DAV_DECLARE (const char *) dav_xml_get_cdata(const apr_xml_elem *elem
 
 DAV_DECLARE (dav_xmlns_info *) dav_xmlns_create(apr_pool_t *pool)
 
void dav_hook_gather_propsets (apr_array_header_t *uris)
 
int dav_hook_find_liveprop (const dav_resource *resource, const char *ns_uri, const char *name, const dav_hooks_liveprop **hooks)
 
void dav_hook_insert_all_liveprops (request_rec *r, const dav_resource *resource, dav_prop_insert what, apr_text_header *phdr)
 
int dav_hook_deliver_report (request_rec *r, const dav_resource *resource, const apr_xml_doc *doc, ap_filter_t *output, dav_error **err)
 
void dav_hook_gather_reports (request_rec *r, const dav_resource *resource, apr_array_header_t *reports, dav_error **err)
 
int dav_hook_method_precondition (request_rec *r, dav_resource *src, const dav_resource *dst, const apr_xml_doc *doc, dav_error **err)
 
 DAV_DECLARE (const dav_hooks_locks *) dav_get_lock_hooks(request_rec *r)
 
 DAV_DECLARE (const dav_hooks_propdb *) dav_get_propdb_hooks(request_rec *r)
 
 DAV_DECLARE (const dav_hooks_vsn *) dav_get_vsn_hooks(request_rec *r)
 
 DAV_DECLARE (const dav_hooks_binding *) dav_get_binding_hooks(request_rec *r)
 
 DAV_DECLARE (const dav_hooks_search *) dav_get_search_hooks(request_rec *r)
 
 DAV_DECLARE (const dav_provider *) dav_lookup_provider(const char *name)
 
 DAV_DECLARE (long) dav_get_liveprop_info(int propid
 
 DAV_DECLARE (dav_liveprop_elem *) dav_get_liveprop_element(const dav_resource *resource)
 
 DAV_DECLARE_NONSTD (int) dav_core_find_liveprop(const dav_resource *resource
 
 DAV_DECLARE_NONSTD (void) dav_core_insert_all_liveprops(request_rec *r
 
 DAV_DECLARE (time_t) dav_get_timeout(request_rec *r)
 
 DAV_DECLARE (dav_get_props_result) dav_get_props(dav_propdb *db
 
 DAV_DECLARE (const dav_acl_provider *) dav_get_acl_providers(void)
 
 DAV_DECLARE (const dav_options_provider *) dav_get_options_providers(const char *name)
 
 DAV_DECLARE (const dav_resource_type_provider *) dav_get_resource_type_providers(const char *name)
 

Variables

int status
 
int int error_id
 
int int apr_status_t aprerr
 
int int apr_status_t const char * desc
 
namespace const char * tagname
 
int int const char dav_errorprev
 
dav_errorsrc
 
dav_errorerr
 
dav_error dav_responseresponse
 
int label_allowed
 
int int use_checked_in
 
int int dav_resource ** res_p
 
dav_bufferpbuf
 
dav_buffer apr_size_t size
 
dav_buffer const char * str
 
dav_buffer apr_size_t extra_needed
 
dav_buffer const void * mem
 
dav_buffer const void apr_size_t amt
 
dav_buffer const void apr_size_t apr_size_t pad
 
request_recr
 
request_rec int must_be_absolute
 
apr_bucket_brigadebb
 
apr_bucket_brigade request_rec apr_pool_tpool
 
request_rec int apr_array_header_tnamespaces
 
int dav_responsefirst
 
apr_array_header_tprop_ctx
 
int def_depth
 
int ns
 
int const char * attrname
 
apr_pool_t int strip_white
 
const char * prefix
 
const char const char * uri
 
apr_text_headerphdr
 
const char * name
 
const char const dav_providerhooks
 
dav_locktoken_list ** ltl
 
const char const dav_liveprop_groupgroup
 
const dav_liveprop_group const dav_liveprop_spec ** info
 
const char * ns_uri
 
const dav_resourceresource
 
const dav_resource dav_prop_insert what
 
const char * s
 
dav_locklocks
 
int ro
 
int dav_lockdb ** lockdb
 
const dav_resource dav_lockdb const apr_xml_docdoc
 
const dav_resource dav_lockdb const apr_xml_doc dav_lock ** lock_request
 
const dav_resource const dav_locktokenlocktoken
 
const dav_resource dav_lockdb dav_lockrequest
 
dav_lockdb const dav_resource int resource_state
 
dav_lockdb const dav_resource int int depth
 
dav_resource int dav_locktoken dav_response int flags
 
dav_lockdb const dav_resource int apr_array_header_tns_xlate
 
dav_lockdb const dav_resource int apr_array_header_t dav_propdb ** propdb
 
const char const char * propname
 
const char const char apr_text_headerbody
 
int dav_get_props_resultpropstats
 
request_recout_req
 
dav_resource int parent_only
 
dav_resource int dav_auto_version_infoav_info
 
dav_resource int undo
 
dav_resource int int unlock
 
apr_bucket_brigade ap_input_mode_t mode
 
apr_bucket_brigade ap_input_mode_t apr_read_type_e block
 
apr_bucket_brigade ap_input_mode_t apr_read_type_e apr_off_t readbytes
 
const dav_acl_provideracl
 
const char const dav_options_providerprovider
 

Detailed Description

DAV extension module for Apache 2.0.*.

Macro Definition Documentation

◆ DAV_GETLOCKS_COMPLETE

#define DAV_GETLOCKS_COMPLETE   2 /* fill out indirect locks */

◆ DAV_GETLOCKS_PARTIAL

#define DAV_GETLOCKS_PARTIAL   1 /* leave indirects partially filled */

◆ DAV_GETLOCKS_RESOLVED

#define DAV_GETLOCKS_RESOLVED   0 /* resolve indirects to directs */

◆ DAV_IF_COND_NORMAL

#define DAV_IF_COND_NORMAL   0

◆ DAV_IF_COND_NOT

#define DAV_IF_COND_NOT   1 /* "Not" was applied */

◆ DAV_PROP_OP_DELETE

#define DAV_PROP_OP_DELETE   2 /* delete a prop value */

◆ DAV_PROP_OP_SET

#define DAV_PROP_OP_SET   1 /* set a property value */

◆ DAV_PROPFIND_IS_ALLPROP

#define DAV_PROPFIND_IS_ALLPROP   1

◆ DAV_PROPFIND_IS_PROP

#define DAV_PROPFIND_IS_PROP   3

◆ DAV_PROPFIND_IS_PROPNAME

#define DAV_PROPFIND_IS_PROPNAME   2

◆ DAV_WALKTYPE_AUTH

#define DAV_WALKTYPE_AUTH   0x0001 /* limit to authorized files */

◆ DAV_WALKTYPE_LOCKNULL

#define DAV_WALKTYPE_LOCKNULL   0x0004 /* walk locknull resources */

◆ DAV_WALKTYPE_NORMAL

#define DAV_WALKTYPE_NORMAL   0x0002 /* walk normal files */

◆ DAV_WALKTYPE_TOLERANT

#define DAV_WALKTYPE_TOLERANT   0x0008 /* tolerate non-fatal errors */