mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-06-10 05:10:19 +00:00
Merge branch 'prometheus-metrics-database-1.3.2' into 'master'
Prometheus metrics (and database 1.3.2) This adds support for a /metrics.php endpoint which can be scraped by Prometheus for collecting monitoring and performance data. The metrics can work in two different ways. Firstly, they can work as a simple set of ever-increasing counters. This is the basic mode, using PostgreSQL database sequences for the underlying data, and hence the new database version associated here. Alternatively, they can work with memcache to build a more detailed performance picture with more advanced metrics about requests and processing. If you enable memcache enough to get metrics, you will also get detailed result caching in DAViCal, which seems to work well, but if strange things start to happen that disappear when cache is disabled then it would be great if you could file a detailed bug report. See merge request !32
This commit is contained in:
commit
2aba60d9e4
3
.gitignore
vendored
3
.gitignore
vendored
@ -41,3 +41,6 @@ zonedb/tzcode
|
||||
zonedb/tzdata
|
||||
zonedb/vtimezones
|
||||
zonedb/*.tar.gz
|
||||
.idea
|
||||
*.orig
|
||||
zonedb/releases
|
||||
|
||||
@ -438,3 +438,26 @@ $c->admin_email ='calendar-admin@example.com';
|
||||
// // 'debug_jid' => 'otheruser@example.com' // send a copy of all publishes to this jid
|
||||
// );
|
||||
// include ( 'pubsub.php' );
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* Detailed Metrics *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
/*
|
||||
* This enables a /metrics.php URL containing detailed metrics about the
|
||||
* operation of DAViCal. Ideally you will be running memcache if you are
|
||||
* interested in keeping metrics, but there is a simple metrics collection
|
||||
* available to you without running memcache.
|
||||
*
|
||||
* Note that there is currently no way of enabling metrics via memcache
|
||||
* without memcache being enabled for all of DAViCal.
|
||||
*/
|
||||
// $c->metrics_style = 'counters'; // Just the simple counter-based metrics
|
||||
// $c->metrics_style = 'memcache'; // Only the metrics using memcache
|
||||
// $c->metrics_style = 'both'; // Both styles of metrics
|
||||
// $c->metrics_collectors = array('127.0.0.1'); // Restrict access to only this IP address
|
||||
// $c->metrics_require_user = 'metricsuser'; // Restrict access to only connections authenticating as this user
|
||||
|
||||
|
||||
@ -58,6 +58,26 @@ GRANT SELECT,UPDATE
|
||||
ON principal_type_principal_type_id_seq
|
||||
ON sync_tokens_sync_token_seq
|
||||
ON timezones_our_tzno_seq
|
||||
ON metrics_count_acl
|
||||
ON metrics_count_bind
|
||||
ON metrics_count_delete
|
||||
ON metrics_count_delticket
|
||||
ON metrics_count_get
|
||||
ON metrics_count_head
|
||||
ON metrics_count_lock
|
||||
ON metrics_count_mkcalendar
|
||||
ON metrics_count_mkcol
|
||||
ON metrics_count_mkticket
|
||||
ON metrics_count_move
|
||||
ON metrics_count_options
|
||||
ON metrics_count_post
|
||||
ON metrics_count_propfind
|
||||
ON metrics_count_proppatch
|
||||
ON metrics_count_put
|
||||
ON metrics_count_report
|
||||
ON metrics_count_unknown
|
||||
ON metrics_count_unlock
|
||||
|
||||
|
||||
GRANT SELECT
|
||||
ON supported_locales
|
||||
|
||||
@ -406,6 +406,23 @@ CREATE TABLE calendar_alarm (
|
||||
trigger_state CHAR DEFAULT 'N' -- 'N' => 'New/Needs setting', 'A' = 'Active', 'O' = 'Old'
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE calendar_attendee_email_status (
|
||||
email_status_id INT8 PRIMARY KEY,
|
||||
description TEXT NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO calendar_attendee_email_status (email_status_id, description)
|
||||
VALUES
|
||||
(1, 'waiting for invitation to be sent'),
|
||||
(2, 'invitation has been sent'),
|
||||
(3, 'waiting for schedule change to be sent'),
|
||||
(4, 'schedule change has been sent'),
|
||||
(11, 'attendee has accepted'),
|
||||
(12, 'attendee indicated maybe'),
|
||||
(13, 'attendee has refused')
|
||||
;
|
||||
|
||||
CREATE TABLE calendar_attendee (
|
||||
dav_id INT8 NOT NULL REFERENCES caldav_data(dav_id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
status TEXT,
|
||||
@ -417,6 +434,8 @@ CREATE TABLE calendar_attendee (
|
||||
property TEXT, -- The full text of the property
|
||||
attendee_state TEXT, -- Internal DAViCal processing state
|
||||
weak_etag TEXT, -- The week_etag applying for this attendee state
|
||||
email_status INT REFERENCES calendar_attendee_email_status(email_status_id) DEFAULT 1 NOT NULL,
|
||||
is_remote BOOLEAN DEFAULT false,
|
||||
PRIMARY KEY ( dav_id, attendee )
|
||||
);
|
||||
|
||||
@ -449,4 +468,25 @@ $$ LANGUAGE plpgsql ;
|
||||
ALTER TABLE dav_binding ADD CONSTRAINT "dav_name_does_not_exist"
|
||||
CHECK (NOT real_path_exists(dav_name));
|
||||
|
||||
SELECT new_db_revision(1,2,12, 'Decembre' );
|
||||
-- We create a bunch of counters for reporting basic statistics
|
||||
CREATE SEQUENCE metrics_count_get;
|
||||
CREATE SEQUENCE metrics_count_put;
|
||||
CREATE SEQUENCE metrics_count_propfind;
|
||||
CREATE SEQUENCE metrics_count_proppatch;
|
||||
CREATE SEQUENCE metrics_count_report;
|
||||
CREATE SEQUENCE metrics_count_head;
|
||||
CREATE SEQUENCE metrics_count_options;
|
||||
CREATE SEQUENCE metrics_count_post;
|
||||
CREATE SEQUENCE metrics_count_mkcalendar;
|
||||
CREATE SEQUENCE metrics_count_mkcol;
|
||||
CREATE SEQUENCE metrics_count_delete;
|
||||
CREATE SEQUENCE metrics_count_move;
|
||||
CREATE SEQUENCE metrics_count_acl;
|
||||
CREATE SEQUENCE metrics_count_lock;
|
||||
CREATE SEQUENCE metrics_count_unlock;
|
||||
CREATE SEQUENCE metrics_count_mkticket;
|
||||
CREATE SEQUENCE metrics_count_delticket;
|
||||
CREATE SEQUENCE metrics_count_bind;
|
||||
CREATE SEQUENCE metrics_count_unknown;
|
||||
|
||||
SELECT new_db_revision(1,3,2, 'Luty' );
|
||||
|
||||
36
dba/patches/1.3.1.sql
Normal file
36
dba/patches/1.3.1.sql
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
-- Notable enhancement: Add/Alter tables for dealing with remote attendee handling
|
||||
|
||||
BEGIN;
|
||||
SELECT check_db_revision(1,2,12);
|
||||
|
||||
|
||||
CREATE TABLE calendar_attendee_email_status (
|
||||
email_status_id INT8 PRIMARY KEY,
|
||||
description TEXT NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO calendar_attendee_email_status (email_status_id, description)
|
||||
VALUES
|
||||
(1, 'waiting for invitation to be sent'),
|
||||
(2, 'invitation has been sent'),
|
||||
(3, 'waiting for schedule change to be sent'),
|
||||
(4, 'schedule change has been sent'),
|
||||
(11, 'attendee has accepted'),
|
||||
(12, 'attendee indicated maybe'),
|
||||
(13, 'attendee has refused')
|
||||
;
|
||||
|
||||
|
||||
ALTER TABLE calendar_attendee
|
||||
ADD COLUMN email_status INT REFERENCES calendar_attendee_email_status(email_status_id) DEFAULT 1 NOT NULL ;
|
||||
|
||||
ALTER TABLE calendar_attendee
|
||||
ADD COLUMN is_remote BOOLEAN DEFAULT FALSE;
|
||||
|
||||
-- A new year! http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/
|
||||
SELECT new_db_revision(1,3,1, 'Styczeń' );
|
||||
|
||||
COMMIT;
|
||||
ROLLBACK;
|
||||
|
||||
32
dba/patches/1.3.2.sql
Normal file
32
dba/patches/1.3.2.sql
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
-- Notable enhancement: Sequence counters for reporting metrics for monitoring.
|
||||
|
||||
BEGIN;
|
||||
SELECT check_db_revision(1,3,1);
|
||||
|
||||
CREATE SEQUENCE metrics_count_get;
|
||||
CREATE SEQUENCE metrics_count_put;
|
||||
CREATE SEQUENCE metrics_count_propfind;
|
||||
CREATE SEQUENCE metrics_count_proppatch;
|
||||
CREATE SEQUENCE metrics_count_report;
|
||||
CREATE SEQUENCE metrics_count_head;
|
||||
CREATE SEQUENCE metrics_count_options;
|
||||
CREATE SEQUENCE metrics_count_post;
|
||||
CREATE SEQUENCE metrics_count_mkcalendar;
|
||||
CREATE SEQUENCE metrics_count_mkcol;
|
||||
CREATE SEQUENCE metrics_count_delete;
|
||||
CREATE SEQUENCE metrics_count_move;
|
||||
CREATE SEQUENCE metrics_count_acl;
|
||||
CREATE SEQUENCE metrics_count_lock;
|
||||
CREATE SEQUENCE metrics_count_unlock;
|
||||
CREATE SEQUENCE metrics_count_mkticket;
|
||||
CREATE SEQUENCE metrics_count_delticket;
|
||||
CREATE SEQUENCE metrics_count_bind;
|
||||
CREATE SEQUENCE metrics_count_unknown;
|
||||
|
||||
-- A new year! http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/
|
||||
SELECT new_db_revision(1,3,2, 'Luty' );
|
||||
|
||||
COMMIT;
|
||||
ROLLBACK;
|
||||
|
||||
@ -42,6 +42,27 @@ function early_exception_handler($e) {
|
||||
}
|
||||
set_exception_handler('early_exception_handler');
|
||||
|
||||
function early_catch_fatal_error() {
|
||||
global $request;
|
||||
|
||||
if ( !empty($request) ) return;
|
||||
|
||||
// Getting Last Error
|
||||
$e = error_get_last();
|
||||
|
||||
// Check if Last error is of type FATAL
|
||||
if (isset($e['type']) && $e['type'] == E_ERROR) {
|
||||
if ( !headers_sent() ) {
|
||||
header("Content-type: text/plain");
|
||||
header( sprintf("HTTP/1.1 %d %s", 500, getStatusMessage(500)) );
|
||||
}
|
||||
echo "PHP Fatal error: ".$e['message']."\n";
|
||||
echo "At line ", $e['line'], " of ", $e['file'], "\n";
|
||||
error_log("PHP Fatal Error: '".$e['message']. "' at line ". $e['line']. " of ". $e['file']);
|
||||
}
|
||||
}
|
||||
register_shutdown_function('early_catch_fatal_error');
|
||||
|
||||
$c->default_timezone = ini_get ( 'date.timezone' );
|
||||
if (empty ( $c->default_timezone )) {
|
||||
if (isset ( $_SERVER ['HTTP_X_DAVICAL_TESTCASE'] )) {
|
||||
|
||||
@ -75,6 +75,17 @@ function send_dav_header() {
|
||||
require_once('CalDAVRequest.php');
|
||||
$request = new CalDAVRequest();
|
||||
|
||||
function late_catch_fatal_error() {
|
||||
global $request;
|
||||
|
||||
// Getting Last Error
|
||||
$e = error_get_last();
|
||||
if (isset($e['type']) && $e['type'] == E_ERROR) {
|
||||
$request->DoResponse(500, "Fatal PHP Error");
|
||||
}
|
||||
}
|
||||
register_shutdown_function('late_catch_fatal_error');
|
||||
|
||||
//if ( $request->method == 'OPTIONS' || $c->always_send_dav_header )
|
||||
send_dav_header(); // Avoid polluting global namespace
|
||||
|
||||
@ -94,50 +105,56 @@ if ( ! ($request->IsPrincipal() || isset($request->collection) || $request->meth
|
||||
param_to_global('add_member', '.*', 'add-member');
|
||||
$add_member = isset($add_member);
|
||||
|
||||
switch ( $request->method ) {
|
||||
case 'OPTIONS': include_once('caldav-OPTIONS.php'); break;
|
||||
case 'REPORT': include_once('caldav-REPORT.php'); break;
|
||||
case 'PROPFIND': include('caldav-PROPFIND.php'); break;
|
||||
case 'GET': include('caldav-GET.php'); break;
|
||||
case 'HEAD': include('caldav-GET.php'); break;
|
||||
case 'PROPPATCH': include('caldav-PROPPATCH.php'); break;
|
||||
case 'POST':
|
||||
if ( $request->content_type != 'text/vcard' && !$add_member ) {
|
||||
include('caldav-POST.php');
|
||||
try {
|
||||
|
||||
switch ( $request->method ) {
|
||||
case 'OPTIONS': include_once('caldav-OPTIONS.php'); break;
|
||||
case 'REPORT': include_once('caldav-REPORT.php'); break;
|
||||
case 'PROPFIND': include('caldav-PROPFIND.php'); break;
|
||||
case 'GET': include('caldav-GET.php'); break;
|
||||
case 'HEAD': include('caldav-GET.php'); break;
|
||||
case 'PROPPATCH': include('caldav-PROPPATCH.php'); break;
|
||||
case 'POST':
|
||||
if ( $request->content_type != 'text/vcard' && !$add_member ) {
|
||||
include('caldav-POST.php');
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
switch( $request->content_type ) {
|
||||
case 'text/calendar':
|
||||
include('caldav-PUT-vcalendar.php');
|
||||
break;
|
||||
case 'text/vcard':
|
||||
case 'text/x-vcard':
|
||||
include('caldav-PUT-vcard.php');
|
||||
break;
|
||||
default:
|
||||
include('caldav-PUT-default.php');
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'PUT':
|
||||
switch( $request->content_type ) {
|
||||
case 'text/calendar':
|
||||
include('caldav-PUT-vcalendar.php');
|
||||
break;
|
||||
case 'text/vcard':
|
||||
case 'text/x-vcard':
|
||||
include('caldav-PUT-vcard.php');
|
||||
break;
|
||||
default:
|
||||
include('caldav-PUT-default.php');
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'MKCALENDAR': include('caldav-MKCOL.php'); break;
|
||||
case 'MKCOL': include('caldav-MKCOL.php'); break;
|
||||
case 'DELETE': include('caldav-DELETE.php'); break;
|
||||
case 'MOVE': include('caldav-MOVE.php'); break;
|
||||
case 'ACL': include('caldav-ACL.php'); break;
|
||||
case 'LOCK': include('caldav-LOCK.php'); break;
|
||||
case 'UNLOCK': include('caldav-LOCK.php'); break;
|
||||
case 'MKTICKET': include('caldav-MKTICKET.php'); break;
|
||||
case 'DELTICKET': include('caldav-DELTICKET.php'); break;
|
||||
case 'BIND': include('caldav-BIND.php'); break;
|
||||
case 'MKCALENDAR': include('caldav-MKCOL.php'); break;
|
||||
case 'MKCOL': include('caldav-MKCOL.php'); break;
|
||||
case 'DELETE': include('caldav-DELETE.php'); break;
|
||||
case 'MOVE': include('caldav-MOVE.php'); break;
|
||||
case 'ACL': include('caldav-ACL.php'); break;
|
||||
case 'LOCK': include('caldav-LOCK.php'); break;
|
||||
case 'UNLOCK': include('caldav-LOCK.php'); break;
|
||||
case 'MKTICKET': include('caldav-MKTICKET.php'); break;
|
||||
case 'DELTICKET': include('caldav-DELTICKET.php'); break;
|
||||
case 'BIND': include('caldav-BIND.php'); break;
|
||||
|
||||
case 'TESTRRULE': include('test-RRULE-v2.php'); break;
|
||||
case 'TESTRRULE': include('test-RRULE-v2.php'); break;
|
||||
|
||||
default:
|
||||
dbg_error_log( 'caldav', 'Unhandled request method >>%s<<', $request->method );
|
||||
dbg_log_array( 'caldav', '_SERVER', $_SERVER, true );
|
||||
dbg_error_log( 'caldav', 'RAW: %s', str_replace("\n", '',str_replace("\r", '', $request->raw_post)) );
|
||||
default:
|
||||
dbg_error_log( 'caldav', 'Unhandled request method >>%s<<', $request->method );
|
||||
dbg_log_array( 'caldav', '_SERVER', $_SERVER, true );
|
||||
dbg_error_log( 'caldav', 'RAW: %s', str_replace("\n", '',str_replace("\r", '', $request->raw_post)) );
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
trace_bug('DAViCal Fatal Error');
|
||||
$request->DoResponse( 500, translate('DAViCal Fatal Error') );
|
||||
}
|
||||
|
||||
$request->DoResponse( 400, translate('The application program does not understand that request.') );
|
||||
|
||||
|
||||
147
htdocs/metrics.php
Normal file
147
htdocs/metrics.php
Normal file
@ -0,0 +1,147 @@
|
||||
<?php
|
||||
/**
|
||||
* DAViCal - metrics page for Prometheus
|
||||
*
|
||||
* @package davical
|
||||
* @subpackage metrics
|
||||
* @author Andrew McMillan <andrew@mcmillan.net.nz>
|
||||
* @copyright Andrew McMillan <andrew@mcmillan.net.nz>
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL v2 or later
|
||||
*/
|
||||
|
||||
header("Content-type: text/plain; version=0.4.0");
|
||||
|
||||
require_once('./always.php');
|
||||
|
||||
// If necessary, validate they are coming from an allowed address
|
||||
if ( isset($c->metrics_collectors) && !in_array($_SERVER['REMOTE_ADDR'], $c->metrics_collectors) ) {
|
||||
echo "Nope.";
|
||||
exit(0);
|
||||
}
|
||||
|
||||
// If necessary, validate that they are coming in as an authorized user
|
||||
if ( isset($c->metrics_require_user) ) {
|
||||
require_once('HTTPAuthSession.php');
|
||||
$session = new HTTPAuthSession();
|
||||
if ( $session->username != $c->metrics_require_user ) {
|
||||
$session->AuthFailedResponse();
|
||||
echo "Nope.";
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Validate that the metrics are actually turned on!
|
||||
if ( !isset($c->metrics_style) || $c->metrics_style === false ) {
|
||||
echo "Metrics are not enabled.";
|
||||
exit(0);
|
||||
}
|
||||
|
||||
// Helper function to ensure we get the metric format consistent
|
||||
function print_metric( $name, $qualifiers, $value ) {
|
||||
print $name;
|
||||
if ( !empty($qualifiers) ) {
|
||||
print '{';
|
||||
$continuation = '';
|
||||
foreach( $qualifiers AS $k => $v ) {
|
||||
if ( $continuation == '' ) {
|
||||
$continuation = ',';
|
||||
} else {
|
||||
print $continuation;
|
||||
}
|
||||
printf( '%s="%s"', $k, $v);
|
||||
}
|
||||
print '}';
|
||||
}
|
||||
echo ' ', $value, "\n";
|
||||
}
|
||||
|
||||
|
||||
// If they want 'both' or 'all' or something then that's what they will get
|
||||
// If they don't want counters, they must want to use memcache!
|
||||
if ( $c->metrics_style != 'counters' ) {
|
||||
// These are the preferred metrics, which include some internal details
|
||||
// of the request processing.
|
||||
include_once('AwlCache.php');
|
||||
$cache = getCacheInstance();
|
||||
|
||||
$index = unserialize($cache->get('metrics', 'index'));
|
||||
print "# HELP caldav_request_status The DAViCal requests broken down by HTTP method and response status\n";
|
||||
print "# TYPE caldav_request_status counter\n";
|
||||
foreach( $index['methods'] AS $method => $ignored ) {
|
||||
foreach( $index['statuses'] AS $status => $ignored ) {
|
||||
$count = $cache->get('metrics', $method.':'.$status );
|
||||
if ( $count !== false ) {
|
||||
print_metric("caldav_request_status", array('method'=>$method, 'status'=>$status), $count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print "\n";
|
||||
print "# HELP caldav_response_bytes The DAViCal response size by HTTP method\n";
|
||||
print "# TYPE caldav_response_bytes counter\n";
|
||||
foreach( $index['methods'] AS $method => $ignored ) {
|
||||
$count = $cache->get('metrics', $method.':size');
|
||||
print_metric("caldav_request_bytes", array('method'=>$method), $count);
|
||||
}
|
||||
|
||||
$timings = array('script', 'query', 'flush');
|
||||
print "\n";
|
||||
print "# HELP caldav_request_microseconds The DAViCal response time taken in general, in queries, and in flushing buffers\n";
|
||||
print "# TYPE caldav_request_microseconds counter\n";
|
||||
foreach( $index['methods'] AS $method => $ignored ) {
|
||||
foreach( $timings AS $timing ) {
|
||||
$count = $cache->get('metrics', $method.':'.$timing.'_time');
|
||||
print_metric("caldav_request_microseconds", array('method'=>$method, 'timing'=>$timing), $count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If they don't want memcache, they must want to use counters!
|
||||
if ( $c->metrics_style != 'memcache' ) {
|
||||
// These are more basic metrics. Just counts of requests, by type.
|
||||
$sql = <<<QUERY
|
||||
SELECT
|
||||
(SELECT last_value FROM metrics_count_get) AS get_count,
|
||||
(SELECT last_value FROM metrics_count_put) AS put_count,
|
||||
(SELECT last_value FROM metrics_count_propfind) AS propfind_count,
|
||||
(SELECT last_value FROM metrics_count_proppatch) AS proppatch_count,
|
||||
(SELECT last_value FROM metrics_count_report) AS report_count,
|
||||
(SELECT last_value FROM metrics_count_head) AS head_count,
|
||||
(SELECT last_value FROM metrics_count_options) AS options_count,
|
||||
(SELECT last_value FROM metrics_count_post) AS post_count,
|
||||
(SELECT last_value FROM metrics_count_mkcalendar) AS mkcalendar_count,
|
||||
(SELECT last_value FROM metrics_count_mkcol) AS mkcol_count,
|
||||
(SELECT last_value FROM metrics_count_delete) AS delete_count,
|
||||
(SELECT last_value FROM metrics_count_move) AS move_count,
|
||||
(SELECT last_value FROM metrics_count_acl) AS acl_count,
|
||||
(SELECT last_value FROM metrics_count_lock) AS lock_count,
|
||||
(SELECT last_value FROM metrics_count_unlock) AS unlock_count,
|
||||
(SELECT last_value FROM metrics_count_mkticket) AS mkticket_count,
|
||||
(SELECT last_value FROM metrics_count_delticket) AS delticket_count,
|
||||
(SELECT last_value FROM metrics_count_bind) AS bind_count,
|
||||
(SELECT last_value FROM metrics_count_unknown) AS unknown_count
|
||||
QUERY;
|
||||
|
||||
$qry = new AwlQuery($sql);
|
||||
$result = $qry->Exec("metrics", __LINE__ , __FILE__);
|
||||
$row = (array) $qry->Fetch();
|
||||
print "\n";
|
||||
print "# HELP caldav_request_count The DAViCal requests broken down by HTTP method (get, put, propfind, etc.).\n";
|
||||
print "# TYPE caldav_request_count counter\n";
|
||||
foreach ($row as $k => $v) {
|
||||
print_metric("caldav_request_count", array( "method" => str_replace("_count", "", $k)), $v);
|
||||
}
|
||||
}
|
||||
|
||||
print "\n";
|
||||
print "# HELP davical_up Are the servers up.\n";
|
||||
print "# TYPE davical_up gauge\n";
|
||||
print_metric("davical_up", array('server'=>$c->sysabbr), 1);
|
||||
|
||||
if ( function_exists('memory_get_usage') ) {
|
||||
print "\n";
|
||||
print "# HELP davical_process_memory How much memory is this process using.\n";
|
||||
print "# TYPE davical_process_memory gauge\n";
|
||||
print_metric("davical_process_memory", array("pid" => getmypid(), 'type' => 'curr'), memory_get_usage());
|
||||
print_metric("davical_process_memory", array("pid" => getmypid(), 'type' => 'peak'), memory_get_peak_usage());
|
||||
}
|
||||
@ -269,7 +269,7 @@ class CalDAVRequest
|
||||
}
|
||||
if ( !is_int($this->depth) && "infinity" == $this->depth ) $this->depth = DEPTH_INFINITY;
|
||||
$this->depth = intval($this->depth);
|
||||
|
||||
|
||||
/**
|
||||
* MOVE/COPY use a "Destination" header and (optionally) an "Overwrite" one.
|
||||
*/
|
||||
@ -1301,20 +1301,22 @@ EOSQL;
|
||||
}
|
||||
}
|
||||
|
||||
$script_finish = microtime(true);
|
||||
$script_time = $script_finish - $c->script_start_time;
|
||||
$message_length = strlen($message);
|
||||
if ( $message != '' ) {
|
||||
if ( !headers_sent() ) header( "Content-Length: ".strlen($message) );
|
||||
if ( !headers_sent() ) header( "Content-Length: ".$message_length );
|
||||
echo $message;
|
||||
}
|
||||
|
||||
if ( isset($c->dbg['caldav']) && $c->dbg['caldav'] ) {
|
||||
if ( strlen($message) > 100 || strstr($message, "\n") ) {
|
||||
$message = substr( preg_replace("#\s+#m", ' ', $message ), 0, 100) . (strlen($message) > 100 ? "..." : "");
|
||||
if ( $message_length > 100 || strstr($message, "\n") ) {
|
||||
$message = substr( preg_replace("#\s+#m", ' ', $message ), 0, 100) . ($message_length > 100 ? "..." : "");
|
||||
}
|
||||
|
||||
dbg_error_log("caldav", "Status: %d, Message: %s, User: %d, Path: %s", $status, $message, $session->principal->user_no(), $this->path);
|
||||
}
|
||||
if ( isset($c->dbg['statistics']) && $c->dbg['statistics'] ) {
|
||||
$script_time = microtime(true) - $c->script_start_time;
|
||||
$memory = '';
|
||||
if ( function_exists('memory_get_usage') ) {
|
||||
$memory = sprintf( ', Memory: %dk, Peak: %dk', memory_get_usage()/1024, memory_get_peak_usage(true)/1024);
|
||||
@ -1327,14 +1329,97 @@ EOSQL;
|
||||
}
|
||||
catch( Exception $ignored ) {}
|
||||
|
||||
if ( isset($c->metrics_style) && $c->metrics_style !== false ) {
|
||||
$flush_time = microtime(true) - $script_finish;
|
||||
$this->DoMetrics($status, $message_length, $script_time, $flush_time);
|
||||
}
|
||||
|
||||
if ( isset($c->exit_after_memory_exceeds) && function_exists('memory_get_peak_usage') && memory_get_peak_usage(true) > $c->exit_after_memory_exceeds ) { // 64M
|
||||
@dbg_error_log("statistics", "Peak memory use exceeds %d bytes (%d) - killing process %d", $c->exit_after_memory_exceeds, memory_get_peak_usage(true), getmypid());
|
||||
register_shutdown_function( 'CalDAVRequest::kill_on_exit' );
|
||||
}
|
||||
|
||||
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Record the metrics related to this request.
|
||||
*
|
||||
* @param status The HTTP status code for this response
|
||||
* @param response_size The size of the response (bytes).
|
||||
* @param script_time The time taken to generate the response (pre-sending)
|
||||
* @param flush_time The time taken to send the response (buffers flushed)
|
||||
*/
|
||||
function DoMetrics($status, $response_size, $script_time, $flush_time) {
|
||||
global $c;
|
||||
static $ns = 'metrics';
|
||||
|
||||
$method = (empty($this->method) ? 'UNKNOWN' : $this->method);
|
||||
|
||||
// If they want 'both' or 'all' or something then that's what they will get
|
||||
// If they don't want counters, they must want to use memcache!
|
||||
if ( $c->metrics_style != 'counters' ) {
|
||||
$cache = getCacheInstance();
|
||||
if ( $cache->isActive() ) {
|
||||
|
||||
$base_key = $method.':';
|
||||
$count_like_this = $cache->increment( $ns, $base_key.$status );
|
||||
$cache->increment( $ns, $base_key.'size', $response_size );
|
||||
$cache->increment( $ns, $base_key.'script_time', intval($script_time * 1000000) );
|
||||
$cache->increment( $ns, $base_key.'flush_time', intval($flush_time * 1000000) );
|
||||
$cache->increment( $ns, $base_key.'query_time', intval($c->total_query_time * 1000000) );
|
||||
|
||||
if ( $count_like_this == 1 ) {
|
||||
// We need to maintain a set of details regarding the methods and statuses we have
|
||||
// encountered, so we know what to retrieve. Since this is the first one like
|
||||
// this, we add it to the index.
|
||||
try {
|
||||
$index = unserialize($cache->get($ns, 'index'));
|
||||
} catch (Exception $e) {
|
||||
$index = array('methods' => array(), 'statuses' => array());
|
||||
}
|
||||
$index['methods'][$method] = 1;
|
||||
$index['statuses'][$status] = 1;
|
||||
$cache->set($ns, 'index', serialize($index), 0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
error_log("Full statistics are only available with a working Memcache configuration");
|
||||
}
|
||||
}
|
||||
|
||||
// If they don't want memcache, they must want to use counters!
|
||||
if ( $c->metrics_style != 'memcache' ) {
|
||||
$qstring = "SELECT nextval('%s')";
|
||||
switch( $method ) {
|
||||
case 'OPTIONS':
|
||||
case 'REPORT':
|
||||
case 'PROPFIND':
|
||||
case 'GET':
|
||||
case 'PUT':
|
||||
case 'HEAD':
|
||||
case 'PROPPATCH':
|
||||
case 'POST':
|
||||
case 'MKCALENDAR':
|
||||
case 'MKCOL':
|
||||
case 'DELETE':
|
||||
case 'MOVE':
|
||||
case 'ACL':
|
||||
case 'LOCK':
|
||||
case 'UNLOCK':
|
||||
case 'MKTICKET':
|
||||
case 'DELTICKET':
|
||||
case 'BIND':
|
||||
$counter = strtolower($this->method);
|
||||
break;
|
||||
default:
|
||||
$counter = 'unknown';
|
||||
break;
|
||||
}
|
||||
$qry = new AwlQuery( "SELECT nextval('metrics_count_" . $counter . "')" );
|
||||
$qry->Exec('always',__LINE__,__FILE__);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -150,7 +150,7 @@ class Principal {
|
||||
throw new Exception('Can only retrieve a Principal by user_no,principal_id,username or email address');
|
||||
}
|
||||
|
||||
$cache = new AwlCache();
|
||||
$cache = getCacheInstance();
|
||||
if ( $use_cache && isset($session->principal_id) ) {
|
||||
switch ( $type ) {
|
||||
case 'user_no':
|
||||
@ -498,7 +498,7 @@ class Principal {
|
||||
|
||||
public function unCache() {
|
||||
if ( !isset($this->cacheNs) ) return;
|
||||
$cache = new AwlCache();
|
||||
$cache = getCacheInstance();
|
||||
$cache->delete($this->cacheNs, null );
|
||||
}
|
||||
|
||||
@ -601,7 +601,7 @@ class Principal {
|
||||
}
|
||||
|
||||
static public function cacheFlush( $where, $whereparams=array() ) {
|
||||
$cache = new AwlCache();
|
||||
$cache = getCacheInstance();
|
||||
if ( !$cache->isActive() ) return;
|
||||
$qry = new AwlQuery('SELECT dav_name FROM dav_principal WHERE '.$where, $whereparams );
|
||||
if ( $qry->Exec('Principal',__FILE__,__LINE__) ) {
|
||||
@ -612,7 +612,7 @@ class Principal {
|
||||
}
|
||||
|
||||
static public function cacheDelete( $type, $value ) {
|
||||
$cache = new AwlCache();
|
||||
$cache = getCacheInstance();
|
||||
if ( !$cache->isActive() ) return;
|
||||
if ( $type == 'username' ) {
|
||||
$value = '/'.$value.'/';
|
||||
|
||||
@ -42,6 +42,27 @@ function early_exception_handler($e) {
|
||||
}
|
||||
set_exception_handler('early_exception_handler');
|
||||
|
||||
function early_catch_fatal_error() {
|
||||
global $request;
|
||||
|
||||
if ( !empty($request) ) return;
|
||||
|
||||
// Getting Last Error
|
||||
$e = error_get_last();
|
||||
|
||||
// Check if Last error is of type FATAL
|
||||
if (isset($e['type']) && $e['type'] == E_ERROR) {
|
||||
if ( !headers_sent() ) {
|
||||
header("Content-type: text/plain");
|
||||
header( sprintf("HTTP/1.1 %d %s", 500, getStatusMessage(500)) );
|
||||
}
|
||||
echo "PHP Fatal error: ".$e['message']."\n";
|
||||
echo "At line ", $e['line'], " of ", $e['file'], "\n";
|
||||
error_log("PHP Fatal Error: '".$e['message']. "' at line ". $e['line']. " of ". $e['file']);
|
||||
}
|
||||
}
|
||||
register_shutdown_function('early_catch_fatal_error');
|
||||
|
||||
$c->default_timezone = ini_get ( 'date.timezone' );
|
||||
if (empty ( $c->default_timezone )) {
|
||||
if (isset ( $_SERVER ['HTTP_X_DAVICAL_TESTCASE'] )) {
|
||||
|
||||
@ -20,6 +20,8 @@ $lock_opener = $request->FailIfLocked();
|
||||
require_once('schedule-functions.php');
|
||||
|
||||
function delete_collection( $id ) {
|
||||
global $session, $request;
|
||||
|
||||
$params = array( ':collection_id' => $id );
|
||||
$qry = new AwlQuery('SELECT child.collection_id AS child_id FROM collection child JOIN collection parent ON (parent.dav_name = child.parent_container) WHERE parent.collection_id = :collection_id', $params );
|
||||
if ( $qry->Exec('DELETE',__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
||||
@ -43,6 +45,7 @@ function delete_collection( $id ) {
|
||||
if ( !$dav_resource->Exists() )$request->DoResponse( 404 );
|
||||
|
||||
if ( ! ( $dav_resource->resource_id() > 0 ) ) {
|
||||
@dbg_error_log( "DELETE", ": failed: User: %d, ETag: %s, Path: %s, ResourceID: %d", $session->user_no, $request->etag_if_match, $request->path, $dav_resource->resource_id());
|
||||
$request->DoResponse( 403 );
|
||||
}
|
||||
|
||||
@ -50,11 +53,16 @@ $qry = new AwlQuery();
|
||||
$qry->Begin();
|
||||
|
||||
if ( $dav_resource->IsCollection() ) {
|
||||
$cache = getCacheInstance();
|
||||
$myLock = $cache->acquireLock('collection-'.$dav_resource->parent_path());
|
||||
if ( $dav_resource->IsBinding() ) {
|
||||
$params = array( ':dav_name' => $dav_resource->dav_name() );
|
||||
|
||||
if ( $qry->QDo("DELETE FROM dav_binding WHERE dav_name = :dav_name", $params )
|
||||
&& $qry->Commit() ) {
|
||||
$cache->delete( 'collection-'.$dav_resource->dav_name(), null );
|
||||
$cache->delete( 'collection-'.$dav_resource->parent_path(), null );
|
||||
$cache->releaseLock($myLock);
|
||||
@dbg_error_log( "DELETE", "DELETE: Binding: %d, ETag: %s, Path: %s", $session->user_no, $request->etag_if_match, $request->path);
|
||||
$request->DoResponse( 204 );
|
||||
}
|
||||
@ -62,11 +70,13 @@ if ( $dav_resource->IsCollection() ) {
|
||||
else {
|
||||
if ( delete_collection( $dav_resource->resource_id() ) && $qry->Commit() ) {
|
||||
// Uncache anything to do with the collection
|
||||
$cache = getCacheInstance();
|
||||
$cache->delete( 'collection-'.$dav_resource->dav_name(), null );
|
||||
$cache->delete( 'collection-'.$dav_resource->parent_path(), null );
|
||||
$cache->releaseLock($myLock);
|
||||
$request->DoResponse( 204 );
|
||||
}
|
||||
}
|
||||
$cache->releaseLock($myLock);
|
||||
}
|
||||
else {
|
||||
if ( isset($request->etag_if_match) && $request->etag_if_match != $dav_resource->unique_tag() && $request->etag_if_match != "*" ) {
|
||||
|
||||
@ -98,7 +98,7 @@ function controlRequestContainer( $username, $user_no, $path, $caldav_context, $
|
||||
$sql = 'SELECT * FROM collection WHERE dav_name = :dav_name';
|
||||
$qry = new AwlQuery( $sql, array( ':dav_name' => $request_container) );
|
||||
if ( ! $qry->Exec('PUT',__LINE__,__FILE__) ) {
|
||||
rollback_on_error( $caldav_context, $user_no, $path );
|
||||
rollback_on_error( $caldav_context, $user_no, $path, 'Database error in: '.$sql );
|
||||
}
|
||||
if ( !isset($c->readonly_webdav_collections) || $c->readonly_webdav_collections == true ) {
|
||||
if ( $qry->rows() == 0 ) {
|
||||
@ -132,7 +132,7 @@ VALUES( :user_no, :parent_container, :dav_name, :dav_etag, :dav_displayname, TRU
|
||||
$sql = 'UPDATE collection SET publicly_readable = :is_public::boolean WHERE collection_id = :collection_id';
|
||||
$params = array( ':is_public' => ($public?'t':'f'), ':collection_id' => $collection->collection_id );
|
||||
if ( ! $qry->QDo($sql,$params) ) {
|
||||
rollback_on_error( $caldav_context, $user_no, $path );
|
||||
rollback_on_error( $caldav_context, $user_no, $path, 'Database error in: '.$sql );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -373,7 +373,7 @@ function do_scheduling_reply( vCalendar $resource, vProperty $organizer ) {
|
||||
$response = '3.7'; // Organizer was not found on server.
|
||||
if ( !$organizer_calendar->Exists() ) {
|
||||
dbg_error_log('ERROR','Default calendar at "%s" does not exist for user "%s"',
|
||||
$organizer_calendar->dav_name(), $schedule_target->username());
|
||||
$organizer_calendar->dav_name(), $organizer_principal->username());
|
||||
$response = '5.2'; // No scheduling support for user
|
||||
}
|
||||
else {
|
||||
@ -384,7 +384,7 @@ function do_scheduling_reply( vCalendar $resource, vProperty $organizer ) {
|
||||
$response = '1.2'; // Scheduling reply delivered successfully
|
||||
if ( $organizer_calendar->WriteCalendarMember($schedule_original, false, false, $segment_name) === false ) {
|
||||
dbg_error_log('ERROR','Could not write updated calendar member to %s',
|
||||
$attendee_calendar->dav_name(), $attendee_calendar->dav_name(), $schedule_target->username());
|
||||
$organizer_calendar->dav_name());
|
||||
trace_bug('Failed to write scheduling resource.');
|
||||
}
|
||||
}
|
||||
@ -694,10 +694,10 @@ function import_addressbook_collection( $vcard_content, $user_no, $path, $caldav
|
||||
|
||||
$sql = 'SELECT * FROM collection WHERE dav_name = :dav_name';
|
||||
$qry = new AwlQuery( $sql, array( ':dav_name' => $path) );
|
||||
if ( ! $qry->Exec('PUT',__LINE__,__FILE__) ) rollback_on_error( $caldav_context, $user_no, $path );
|
||||
if ( ! $qry->Exec('PUT',__LINE__,__FILE__) ) rollback_on_error( $caldav_context, $user_no, $path, 'Database error in: '.$sql );
|
||||
if ( ! $qry->rows() == 1 ) {
|
||||
dbg_error_log( 'ERROR', ' PUT: Collection does not exist at "%s" for user %d', $path, $user_no );
|
||||
rollback_on_error( $caldav_context, $user_no, $path );
|
||||
rollback_on_error( $caldav_context, $user_no, $path, sprintf('Error: Collection does not exist at "%s" for user %d', $path, $user_no ));
|
||||
}
|
||||
$collection = $qry->Fetch();
|
||||
|
||||
@ -709,7 +709,7 @@ function import_addressbook_collection( $vcard_content, $user_no, $path, $caldav
|
||||
);
|
||||
if ( !$appending ) {
|
||||
if ( !$qry->QDo('DELETE FROM caldav_data WHERE collection_id = :collection_id', $base_params) )
|
||||
rollback_on_error( $caldav_context, $user_no, $collection->collection_id );
|
||||
rollback_on_error( $caldav_context, $user_no, $collection->collection_id, 'Database error on DELETE of existing rows' );
|
||||
}
|
||||
|
||||
$dav_data_insert = <<<EOSQL
|
||||
@ -755,7 +755,7 @@ EOSQL;
|
||||
|
||||
if ( isset($c->skip_bad_event_on_import) && $c->skip_bad_event_on_import ) $qry->Begin();
|
||||
|
||||
if ( !$qry->QDo($dav_data_insert,$dav_data_params) ) rollback_on_error( $caldav_context, $user_no, $path );
|
||||
if ( !$qry->QDo($dav_data_insert,$dav_data_params) ) rollback_on_error( $caldav_context, $user_no, $path, 'Database error on: '.$dav_data_insert );
|
||||
|
||||
$qry->QDo('SELECT dav_id FROM caldav_data WHERE dav_name = :dav_name ', array(':dav_name' => $dav_data_params[':dav_name']));
|
||||
if ( $qry->rows() == 1 && $row = $qry->Fetch() ) {
|
||||
@ -768,7 +768,7 @@ EOSQL;
|
||||
}
|
||||
|
||||
if ( !(isset($c->skip_bad_event_on_import) && $c->skip_bad_event_on_import) ) {
|
||||
if ( ! $qry->Commit() ) rollback_on_error( $caldav_context, $user_no, $path);
|
||||
if ( ! $qry->Commit() ) rollback_on_error( $caldav_context, $user_no, $path, 'Database error on COMMIT');
|
||||
}
|
||||
|
||||
}
|
||||
@ -808,7 +808,7 @@ function import_calendar_collection( $ics_content, $user_no, $path, $caldav_cont
|
||||
if ( !$appending && isset($displayname) ) {
|
||||
$sql = 'UPDATE collection SET dav_displayname = :displayname WHERE dav_name = :dav_name';
|
||||
$qry = new AwlQuery( $sql, array( ':displayname' => $displayname, ':dav_name' => $path) );
|
||||
if ( ! $qry->Exec('PUT',__LINE__,__FILE__) ) rollback_on_error( $caldav_context, $user_no, $path );
|
||||
if ( ! $qry->Exec('PUT',__LINE__,__FILE__) ) rollback_on_error( $caldav_context, $user_no, $path, 'Database error on: '.$sql );
|
||||
}
|
||||
|
||||
|
||||
@ -839,10 +839,10 @@ function import_calendar_collection( $ics_content, $user_no, $path, $caldav_cont
|
||||
|
||||
$sql = 'SELECT * FROM collection WHERE dav_name = :dav_name';
|
||||
$qry = new AwlQuery( $sql, array( ':dav_name' => $path) );
|
||||
if ( ! $qry->Exec('PUT',__LINE__,__FILE__) ) rollback_on_error( $caldav_context, $user_no, $path );
|
||||
if ( ! $qry->Exec('PUT',__LINE__,__FILE__) ) rollback_on_error( $caldav_context, $user_no, $path, 'Database error on: '.$sql );
|
||||
if ( ! $qry->rows() == 1 ) {
|
||||
dbg_error_log( 'ERROR', ' PUT: Collection does not exist at "%s" for user %d', $path, $user_no );
|
||||
rollback_on_error( $caldav_context, $user_no, $path );
|
||||
rollback_on_error( $caldav_context, $user_no, $path, sprintf( 'Error: Collection does not exist at "%s" for user %d', $path, $user_no ));
|
||||
}
|
||||
$collection = $qry->Fetch();
|
||||
$collection_id = $collection->collection_id;
|
||||
@ -944,7 +944,7 @@ EOSQL;
|
||||
|
||||
// Write to the caldav_data table
|
||||
if ( !$qry->QDo( ($inserting ? $dav_data_insert : $dav_data_update), $dav_data_params) )
|
||||
rollback_on_error( $caldav_context, $user_no, $path );
|
||||
rollback_on_error( $caldav_context, $user_no, $path, 'Database error on:'. ($inserting ? $dav_data_insert : $dav_data_update));
|
||||
|
||||
// Get the dav_id for this row
|
||||
$qry->QDo('SELECT dav_id FROM caldav_data WHERE dav_name = :dav_name ', array(':dav_name' => $dav_data_params[':dav_name']));
|
||||
@ -1249,7 +1249,7 @@ function write_resource( DAVResource $resource, $caldav_data, DAVResource $colle
|
||||
}
|
||||
if ( $qry->rows() != 1 || !($row = $qry->Fetch()) ) {
|
||||
// No dav_id? => We're toast!
|
||||
trace_bug( 'No dav_id for "%s" on %s!!!', $path, ($create_resource ? 'create': 'update'));
|
||||
trace_bug( 'No dav_id for "%s" on %s!!!', $path, ($put_action_type == 'INSERT' ? 'create': 'update'));
|
||||
rollback_on_error( $caldav_context, $user_no, $path);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -54,7 +54,8 @@ if ( count($qry_filters) == 0 ) {
|
||||
$qry_limit = -1; // everything
|
||||
$qry_filters_combination='OR';
|
||||
if ( is_array($qry_filters) ) {
|
||||
$filters_parent = $xmltree->GetPath('/urn:ietf:params:xml:ns:carddav:addressbook-query/urn:ietf:params:xml:ns:carddav:filter')[0];
|
||||
$filters_parent = $xmltree->GetPath('/urn:ietf:params:xml:ns:carddav:addressbook-query/urn:ietf:params:xml:ns:carddav:filter');
|
||||
$filters_parent = $filters_parent[0];
|
||||
// only anyof (OR) or allof (AND) allowed, if missing anyof is default (RFC6352 10.5)
|
||||
if ( $filters_parent->GetAttribute("test") == 'allof' ) {
|
||||
$qry_filters_combination='AND';
|
||||
|
||||
@ -33,7 +33,7 @@ if ( $sync_level == DEPTH_INFINITY ) {
|
||||
$sync_tokens = $xmltree->GetPath('/DAV::sync-collection/DAV::sync-token');
|
||||
if ( isset($sync_tokens[0]) ) $sync_token = $sync_tokens[0]->GetContent();
|
||||
if ( !isset($sync_token) ) $sync_token = 0;
|
||||
$sync_token = intval(str_ireplace('data:,', '', $sync_token ));
|
||||
$sync_token = intval(str_replace('data:,', '', strtolower($sync_token) ));
|
||||
dbg_error_log( 'sync', " sync-token: %s", $sync_token );
|
||||
|
||||
$proplist = array();
|
||||
|
||||
@ -73,7 +73,7 @@ function doItipAttendeeReply( vCalendar $resource, $partstat ) {
|
||||
|
||||
if ( !$organizer_principal->Exists() ) {
|
||||
dbg_error_log( 'schedule', 'Unknown ORGANIZER "%s" - unable to notify.', $organizer->Value() );
|
||||
header( "Debug: Could maybe do the iMIP message dance for organizer ". $organizer->Value() );
|
||||
//TODO: header( "Debug: Could maybe do the iMIP message dance for organizer ". $organizer->Value() );
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -177,7 +177,7 @@ function doItipAttendeeReply( vCalendar $resource, $partstat ) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
header( "Debug: Could maybe do the iMIP message dance for attendee ". $email );
|
||||
//TODO: header( "Debug: Could maybe do the iMIP message dance for attendee ". $email );
|
||||
}
|
||||
}
|
||||
|
||||
@ -280,7 +280,7 @@ function processItipCancel( vCalendar $vcal, vProperty $attendee, WritableCollec
|
||||
global $request;
|
||||
|
||||
dbg_error_log( 'schedule', 'Processing iTIP CANCEL to %s', $attendee->Value());
|
||||
header( "Debug: Could maybe do the iMIP message dance for attendee ". $attendee->Value() );
|
||||
//TODO: header( "Debug: Could maybe do the iMIP message dance for attendee ". $attendee->Value() );
|
||||
if ( !$attendee_calendar->Exists() ) {
|
||||
if ( doImipMessage('CANCEL', $attendee_principal->email(), $vcal) ) {
|
||||
return '1.1'; // Scheduling whoosit 'Sent'
|
||||
@ -332,7 +332,7 @@ function processItipCancel( vCalendar $vcal, vProperty $attendee, WritableCollec
|
||||
*/
|
||||
function deliverItipCancel( vCalendar $iTIP, vProperty $attendee, WritableCollection $attendee_inbox ) {
|
||||
$attendee_inbox->WriteCalendarMember($iTIP, false);
|
||||
header( "Debug: Could maybe do the iMIP message dance canceling for attendee: ".$attendee->Value());
|
||||
//TODO: header( "Debug: Could maybe do the iMIP message dance canceling for attendee: ".$attendee->Value());
|
||||
}
|
||||
|
||||
require_once('Multipart.php');
|
||||
|
||||
@ -24,6 +24,7 @@ $_SERVER['SERVER_NAME'] = 'localhost';
|
||||
$args = (object) array();
|
||||
$args->debug = false;
|
||||
$args->set_last = false;
|
||||
$args->slow_query_threshold = false; // Won't set higher threshold by default
|
||||
|
||||
$args->future = 'P400D';
|
||||
$args->near_past = 'P1D';
|
||||
@ -33,11 +34,12 @@ $debugging = null;
|
||||
function parse_arguments() {
|
||||
global $args;
|
||||
|
||||
$opts = getopt( 'f:p:s:d:lh' );
|
||||
$opts = getopt( 'f:p:q:s:d:lh' );
|
||||
foreach( $opts AS $k => $v ) {
|
||||
switch( $k ) {
|
||||
case 'f': $args->future = $v; break;
|
||||
case 'p': $args->near_past = $v; break;
|
||||
case 'q': $args->slow_query_threshold = $v; break;
|
||||
case 's': $_SERVER['SERVER_NAME'] = $v; break;
|
||||
case 'd': $args->debug = true; $debugging = explode(',',$v); break;
|
||||
case 'l': $args->set_last = true; break;
|
||||
@ -59,6 +61,7 @@ Usage:
|
||||
|
||||
-l Try to set the 'last' alarm date in historical alarms
|
||||
|
||||
-q <secs> Warn about slow queries which take longer than this many seconds (use AWL default).
|
||||
-d xxx Enable debugging where 'xxx' is a comma-separated list of debug subsystems
|
||||
|
||||
USAGE;
|
||||
@ -75,6 +78,9 @@ if ( $args->debug && is_array($debugging )) {
|
||||
$args->near_past = '-' . $args->near_past;
|
||||
|
||||
require_once("./always.php");
|
||||
if ( $args->slow_query_threshold !== false ) {
|
||||
$c->default_query_warning_threshold = $args->slow_query_threshold;
|
||||
}
|
||||
require_once('AwlQuery.php');
|
||||
require_once('RRule-v2.php');
|
||||
require_once('vCalendar.php');
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "0e8180a5a3677b7b3e2156a8053882fe"
|
||||
Content-Length: 1124
|
||||
ETag: "303850daab72c97380c725e4d1b90be7"
|
||||
Content-Length: 1160
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -32,7 +32,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontentlength>731</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
@ -43,7 +43,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontentlength>705</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "5fec6bf01e8802ec9facdb7adc7ab93f"
|
||||
Content-Length: 1124
|
||||
ETag: "88e33ac34090404791bb5d0d5208993f"
|
||||
Content-Length: 1160
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -32,7 +32,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontentlength>731</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
@ -43,7 +43,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontentlength>747</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
|
||||
@ -4,7 +4,7 @@ DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Etag: "2c32a2f8aba853654eb17fe037a4db4d"
|
||||
Content-Length: 780
|
||||
Content-Type: text/calendar; charset="utf-8"
|
||||
Content-Type: text/calendar; component=vevent; charset="utf-8"
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
CALSCALE:GREGORIAN
|
||||
|
||||
@ -4,7 +4,7 @@ DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Etag: "fdcc61a1e0d76b177ad81cf7c8bdacaf"
|
||||
Content-Length: 1106
|
||||
Content-Type: text/calendar; charset="utf-8"
|
||||
Content-Type: text/calendar; component=vevent; charset="utf-8"
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
CALSCALE:GREGORIAN
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "8ea04cfcf16d0c3ec23b67c6a479cce4"
|
||||
Content-Length: 4293
|
||||
ETag: "b9794562e6fd1d230515a6d4a8c211a4"
|
||||
Content-Length: 4504
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -31,7 +31,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/3F4CF6227300FD062D9EF3CDFB30D32D-0.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"2c32a2f8aba853654eb17fe037a4db4d"</getetag>
|
||||
</prop>
|
||||
@ -42,7 +42,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"fdcc61a1e0d76b177ad81cf7c8bdacaf"</getetag>
|
||||
</prop>
|
||||
@ -53,7 +53,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/4aaf8f37-f232-4c8e-a72e-e171d4c4fe54.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"a1c6404d61190f9574e2bfd69383f144"</getetag>
|
||||
</prop>
|
||||
@ -64,7 +64,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/9d050be7-8a02-4355-8ed3-02a9fc5f473f.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"08a435c2abaf38f4a50a997343c098a7"</getetag>
|
||||
</prop>
|
||||
@ -75,7 +75,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/1906b3ca-4890-468a-9b58-1de74bf2c716.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"5def8ae2b20893a1c7f4dbaeb008f2f1"</getetag>
|
||||
</prop>
|
||||
@ -86,7 +86,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/fbd57454-d966-4a14-8341-abe1edb1ae66.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"ac90acd649c25070b1a2a17fb31a105a"</getetag>
|
||||
</prop>
|
||||
@ -97,7 +97,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/2178279a-aec2-471f-832d-1f6df6203f2f.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"509b0f0d8a3363379f9f5727f5dd74a0"</getetag>
|
||||
</prop>
|
||||
@ -108,7 +108,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/917b9e47-b748-4550-a566-657fbe672447.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"cb3d9dc3e8c157f53eba3ea0e1e0f146"</getetag>
|
||||
</prop>
|
||||
@ -119,7 +119,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/0575d895-a006-4ed8-9be6-0d1b6b6b1f96.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"00ad5eb1eb5507884710b0b66aa5d5c4"</getetag>
|
||||
</prop>
|
||||
@ -130,7 +130,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/b1679f77-673d-4f46-b3eb-2420e1bba301.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"a2990674708634a311bb98a59865ca50"</getetag>
|
||||
</prop>
|
||||
@ -141,7 +141,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/e70576e9-c1e0-431e-a507-0386fd82f223.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"e8060931f30c1798ac58ffbe4ec0bffc"</getetag>
|
||||
</prop>
|
||||
@ -152,7 +152,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/e6eb5bc9-f7f9-4a0a-94e8-8e90eefc7d08.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getetag>"8f581a053df6d833254756dfd7553d37"</getetag>
|
||||
</prop>
|
||||
|
||||
@ -2,19 +2,21 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 326
|
||||
Content-Length: 359
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:">
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
dav_displayname: >iCal Calendar<
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "a8d0404f59a91a8a4ef9ab3fd8b356b2"
|
||||
Content-Length: 1354
|
||||
ETag: "1a0c2d97d0118e22caff1e90871e41dd"
|
||||
Content-Length: 1206
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -18,9 +18,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:schedule-inbox/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -29,6 +26,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -39,9 +37,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<prop>
|
||||
<displayname>test meeting</displayname>
|
||||
<resourcetype/>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -51,6 +46,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "ccb220eb6558890eb17d5e1da8b45269"
|
||||
Content-Length: 785
|
||||
ETag: "294d286a110b237df5c768aaeb7dda5a"
|
||||
Content-Length: 711
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -18,9 +18,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:schedule-outbox/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -29,6 +26,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "80d6f30ef4f9a0b77a2eb6c28d935804"
|
||||
Content-Length: 4594
|
||||
ETag: "fb3fbd1d4d0cc1e1926d0291a2be17a8"
|
||||
Content-Length: 4076
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -18,9 +18,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<principal/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -29,6 +26,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -43,9 +41,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -54,6 +49,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -68,9 +64,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C2:addressbook/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -79,6 +72,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -93,9 +87,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:schedule-inbox/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -104,6 +95,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -118,9 +110,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:schedule-outbox/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -129,6 +118,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -143,9 +133,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -154,6 +141,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -168,9 +156,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user2/home/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -179,6 +164,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "71bc1e00471cee14ce3dd36752320e6c"
|
||||
Content-Length: 17305
|
||||
ETag: "2f6bc2532047e694057b7ec66bd80b65"
|
||||
Content-Length: 15568
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -18,11 +18,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<principal/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -72,6 +67,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -95,11 +91,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -151,6 +142,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -169,11 +161,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C2:addressbook/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -223,6 +210,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -246,11 +234,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -302,6 +285,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -325,11 +309,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:schedule-inbox/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -390,6 +369,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -413,11 +393,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:schedule-outbox/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -478,6 +453,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -502,11 +478,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -557,6 +528,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C:xmpp-uri/>
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -575,11 +547,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -632,6 +599,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -650,11 +618,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -707,6 +670,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
|
||||
@ -2,17 +2,19 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 335
|
||||
Content-Length: 368
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:A="http://apple.com/ns/ical/">
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<A:calendar-color/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<A:calendar-color/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
@ -2,17 +2,19 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 335
|
||||
Content-Length: 368
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:A="http://apple.com/ns/ical/">
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<A:calendar-order/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<A:calendar-order/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
@ -2,15 +2,17 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 267
|
||||
Content-Length: 298
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:">
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop/>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop/>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "3c1ce7546b05f98eabd8cbe7680646d8"
|
||||
Content-Length: 19736
|
||||
ETag: "84f6ab86e65ad459a930d65cf80aad20"
|
||||
Content-Length: 17999
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -21,11 +21,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -75,6 +70,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -111,11 +107,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -165,6 +156,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -194,11 +186,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -248,6 +235,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -282,11 +270,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -338,6 +321,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -372,11 +356,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -437,6 +416,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -471,11 +451,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -536,6 +511,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -571,11 +547,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -626,6 +597,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C:xmpp-uri/>
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -655,11 +627,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -712,6 +679,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
@ -741,11 +709,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
@ -798,6 +761,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
|
||||
@ -4,24 +4,19 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "0bb6363a73d84bce63210f8956a67b9c"
|
||||
Content-Length: 29507
|
||||
ETag: "803271349e94513fdc607adc2fc2df6f"
|
||||
Content-Length: 27776
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/" xmlns:M="http://me.com/_namespace/" xmlns:A="http://apple.com/ns/ical/" xmlns:C2="urn:ietf:params:xml:ns:carddav">
|
||||
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:M="http://me.com/_namespace/" xmlns:A="http://apple.com/ns/ical/" xmlns:C2="urn:ietf:params:xml:ns:carddav">
|
||||
<response>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/?add-member</href>
|
||||
<href>/caldav.php/user1/?add_member</href>
|
||||
</add-member>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
<all/>
|
||||
@ -58,7 +53,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>User 1</displayname>
|
||||
<C1:getctag>"89514106d00f37cc9ee71689c450d2ef"</C1:getctag>
|
||||
<C:getctag>"89514106d00f37cc9ee71689c450d2ef"</C:getctag>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
@ -69,9 +64,9 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<principal/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -99,30 +94,31 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<A:calendar-color/>
|
||||
<C:calendar-description/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<A:calendar-order/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C2:max-resource-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C:supported-calendar-component-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<sync-token/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -132,14 +128,9 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/home/?add-member</href>
|
||||
<href>/caldav.php/user1/home/?add_member</href>
|
||||
</add-member>
|
||||
<A:calendar-color>#0252D4FF</A:calendar-color>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<A:calendar-order>1</A:calendar-order>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
@ -161,7 +152,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<write-acl/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:read-free-busy/>
|
||||
<C1:read-free-busy/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<write/>
|
||||
@ -180,7 +171,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>user1 home</displayname>
|
||||
<C1:getctag>"243d78db0cc75a576d2603eef69efdc9"</C1:getctag>
|
||||
<C:getctag>"243d78db0cc75a576d2603eef69efdc9"</C:getctag>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
@ -189,16 +180,16 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</resource-id>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C:calendar/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
<C:supported-calendar-component-set>
|
||||
<C:comp name="VEVENT"/>
|
||||
<C:comp name="VTODO"/>
|
||||
<C:comp name="VJOURNAL"/>
|
||||
</C:supported-calendar-component-set>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<C1:supported-calendar-component-set>
|
||||
<C1:comp name="VEVENT"/>
|
||||
<C1:comp name="VTODO"/>
|
||||
<C1:comp name="VJOURNAL"/>
|
||||
</C1:supported-calendar-component-set>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -222,17 +213,17 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-query/>
|
||||
<C1:calendar-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-multiget/>
|
||||
<C1:calendar-multiget/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:free-busy-query/>
|
||||
<C1:free-busy-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
</supported-report-set>
|
||||
@ -242,26 +233,27 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<C:calendar-description/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C2:max-resource-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -271,13 +263,8 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/addresses/?add-member</href>
|
||||
<href>/caldav.php/user1/addresses/?add_member</href>
|
||||
</add-member>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
<all/>
|
||||
@ -314,7 +301,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>user1 addresses</displayname>
|
||||
<C1:getctag>"24c9e15e52afc47c225b757e7bee1f9d"</C1:getctag>
|
||||
<C:getctag>"24c9e15e52afc47c225b757e7bee1f9d"</C:getctag>
|
||||
<C2:max-resource-size>65500</C2:max-resource-size>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
@ -326,9 +313,9 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C2:addressbook/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -367,28 +354,29 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<A:calendar-color/>
|
||||
<C:calendar-description/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<A:calendar-order/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C:supported-calendar-component-set/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -398,13 +386,8 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/created/?add-member</href>
|
||||
<href>/caldav.php/user1/created/?add_member</href>
|
||||
</add-member>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
<all/>
|
||||
@ -425,7 +408,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<write-acl/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:read-free-busy/>
|
||||
<C1:read-free-busy/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<write/>
|
||||
@ -444,7 +427,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>created</displayname>
|
||||
<C1:getctag>"bac273dae96780a3c8ed0c032266322c"</C1:getctag>
|
||||
<C:getctag>"bac273dae96780a3c8ed0c032266322c"</C:getctag>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
@ -453,16 +436,16 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</resource-id>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C:calendar/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
<C:supported-calendar-component-set>
|
||||
<C:comp name="VEVENT"/>
|
||||
<C:comp name="VTODO"/>
|
||||
<C:comp name="VJOURNAL"/>
|
||||
</C:supported-calendar-component-set>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<C1:supported-calendar-component-set>
|
||||
<C1:comp name="VEVENT"/>
|
||||
<C1:comp name="VTODO"/>
|
||||
<C1:comp name="VJOURNAL"/>
|
||||
</C1:supported-calendar-component-set>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -486,17 +469,17 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-query/>
|
||||
<C1:calendar-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-multiget/>
|
||||
<C1:calendar-multiget/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:free-busy-query/>
|
||||
<C1:free-busy-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
</supported-report-set>
|
||||
@ -506,28 +489,29 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<A:calendar-color/>
|
||||
<C:calendar-description/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<A:calendar-order/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C2:max-resource-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -537,13 +521,8 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/.in/?add-member</href>
|
||||
<href>/caldav.php/user1/.in/?add_member</href>
|
||||
</add-member>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
<all/>
|
||||
@ -579,20 +558,20 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<unbind/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:schedule-deliver/>
|
||||
<C1:schedule-deliver/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:schedule-deliver-invite/>
|
||||
<C1:schedule-deliver-invite/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:schedule-deliver-reply/>
|
||||
<C1:schedule-deliver-reply/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:schedule-query-freebusy/>
|
||||
<C1:schedule-query-freebusy/>
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>User 1 Inbox</displayname>
|
||||
<C1:getctag>"435712d0457c874316eb9cdd41cf92bc"</C1:getctag>
|
||||
<C:getctag>"435712d0457c874316eb9cdd41cf92bc"</C:getctag>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
@ -601,16 +580,16 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</resource-id>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C:schedule-inbox/>
|
||||
<C1:schedule-inbox/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
<C:supported-calendar-component-set>
|
||||
<C:comp name="VEVENT"/>
|
||||
<C:comp name="VTODO"/>
|
||||
<C:comp name="VFREEBUSY"/>
|
||||
</C:supported-calendar-component-set>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<C1:supported-calendar-component-set>
|
||||
<C1:comp name="VEVENT"/>
|
||||
<C1:comp name="VTODO"/>
|
||||
<C1:comp name="VFREEBUSY"/>
|
||||
</C1:supported-calendar-component-set>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -639,28 +618,29 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<A:calendar-color/>
|
||||
<C:calendar-description/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<A:calendar-order/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C2:max-resource-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -670,13 +650,8 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/.out/?add-member</href>
|
||||
<href>/caldav.php/user1/.out/?add_member</href>
|
||||
</add-member>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
<all/>
|
||||
@ -712,20 +687,20 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<unbind/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:schedule-send/>
|
||||
<C1:schedule-send/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:schedule-send-invite/>
|
||||
<C1:schedule-send-invite/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:schedule-send-reply/>
|
||||
<C1:schedule-send-reply/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:schedule-send-freebusy/>
|
||||
<C1:schedule-send-freebusy/>
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>User 1 Outbox</displayname>
|
||||
<C1:getctag>"1"</C1:getctag>
|
||||
<C:getctag>"1"</C:getctag>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
@ -734,16 +709,16 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</resource-id>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C:schedule-outbox/>
|
||||
<C1:schedule-outbox/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
<C:supported-calendar-component-set>
|
||||
<C:comp name="VEVENT"/>
|
||||
<C:comp name="VTODO"/>
|
||||
<C:comp name="VFREEBUSY"/>
|
||||
</C:supported-calendar-component-set>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<C1:supported-calendar-component-set>
|
||||
<C1:comp name="VEVENT"/>
|
||||
<C1:comp name="VTODO"/>
|
||||
<C1:comp name="VFREEBUSY"/>
|
||||
</C1:supported-calendar-component-set>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -772,28 +747,29 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<A:calendar-color/>
|
||||
<C:calendar-description/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<A:calendar-order/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C2:max-resource-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -803,14 +779,9 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/?add-member</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/?add_member</href>
|
||||
</add-member>
|
||||
<A:calendar-color>#391B71A0</A:calendar-color>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
<all/>
|
||||
@ -831,7 +802,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<write-acl/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:read-free-busy/>
|
||||
<C1:read-free-busy/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<write/>
|
||||
@ -850,7 +821,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>iCal Calendar</displayname>
|
||||
<C1:getctag>"ac192d10783fff90598af2facc8259df"</C1:getctag>
|
||||
<C:getctag>"ac192d10783fff90598af2facc8259df"</C:getctag>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
@ -859,16 +830,16 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</resource-id>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C:calendar/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
<C:supported-calendar-component-set>
|
||||
<C:comp name="VEVENT"/>
|
||||
<C:comp name="VTODO"/>
|
||||
<C:comp name="VJOURNAL"/>
|
||||
</C:supported-calendar-component-set>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<C1:supported-calendar-component-set>
|
||||
<C1:comp name="VEVENT"/>
|
||||
<C1:comp name="VTODO"/>
|
||||
<C1:comp name="VJOURNAL"/>
|
||||
</C1:supported-calendar-component-set>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -892,17 +863,17 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-query/>
|
||||
<C1:calendar-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-multiget/>
|
||||
<C1:calendar-multiget/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:free-busy-query/>
|
||||
<C1:free-busy-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
</supported-report-set>
|
||||
@ -912,27 +883,28 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<C:calendar-description/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<A:calendar-order/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C2:max-resource-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -942,13 +914,8 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/calendar-proxy-read/?add-member</href>
|
||||
<href>/caldav.php/user1/calendar-proxy-read/?add_member</href>
|
||||
</add-member>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
<all/>
|
||||
@ -969,7 +936,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<write-acl/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:read-free-busy/>
|
||||
<C1:read-free-busy/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<write/>
|
||||
@ -988,17 +955,17 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>/user1/calendar-proxy-read/</displayname>
|
||||
<C1:getctag>"abad5538c4aa570cc54b6ff0d36a4565"</C1:getctag>
|
||||
<C:getctag>"abad5538c4aa570cc54b6ff0d36a4565"</C:getctag>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-read/>
|
||||
<C:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -1022,17 +989,17 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-query/>
|
||||
<C1:calendar-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-multiget/>
|
||||
<C1:calendar-multiget/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:free-busy-query/>
|
||||
<C1:free-busy-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
@ -1051,31 +1018,32 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<A:calendar-color/>
|
||||
<C:calendar-description/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<A:calendar-order/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C2:max-resource-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<resource-id/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C:supported-calendar-component-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<sync-token/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -1085,13 +1053,8 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<add-member>
|
||||
<href>/caldav.php/user1/calendar-proxy-write/?add-member</href>
|
||||
<href>/caldav.php/user1/calendar-proxy-write/?add_member</href>
|
||||
</add-member>
|
||||
<C:calendar-free-busy-set>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C:calendar-free-busy-set>
|
||||
<current-user-privilege-set>
|
||||
<privilege>
|
||||
<all/>
|
||||
@ -1112,7 +1075,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<write-acl/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<C:read-free-busy/>
|
||||
<C1:read-free-busy/>
|
||||
</privilege>
|
||||
<privilege>
|
||||
<write/>
|
||||
@ -1131,17 +1094,17 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</privilege>
|
||||
</current-user-privilege-set>
|
||||
<displayname>/user1/calendar-proxy-write/</displayname>
|
||||
<C1:getctag>"04ba2c2164225fb5abce13f2c523b6c7"</C1:getctag>
|
||||
<C:getctag>"04ba2c2164225fb5abce13f2c523b6c7"</C:getctag>
|
||||
<owner>
|
||||
<href>/caldav.php/user1/</href>
|
||||
</owner>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-write/>
|
||||
<C:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
<C:schedule-default-calendar-URL>
|
||||
<C1:schedule-default-calendar-URL>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
</C:schedule-default-calendar-URL>
|
||||
</C1:schedule-default-calendar-URL>
|
||||
<supported-report-set>
|
||||
<supported-report>
|
||||
<report>
|
||||
@ -1165,17 +1128,17 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-query/>
|
||||
<C1:calendar-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:calendar-multiget/>
|
||||
<C1:calendar-multiget/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
<report>
|
||||
<C:free-busy-query/>
|
||||
<C1:free-busy-query/>
|
||||
</report>
|
||||
</supported-report>
|
||||
<supported-report>
|
||||
@ -1194,31 +1157,32 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</propstat>
|
||||
<propstat>
|
||||
<prop>
|
||||
<C1:allowed-sharing-modes/>
|
||||
<C:allowed-sharing-modes/>
|
||||
<M:bulk-requests/>
|
||||
<A:calendar-color/>
|
||||
<C:calendar-description/>
|
||||
<C1:calendar-description/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
<A:calendar-order/>
|
||||
<C:calendar-timezone/>
|
||||
<C1:calendar-timezone/>
|
||||
<C2:max-image-size/>
|
||||
<C2:max-resource-size/>
|
||||
<C1:me-card/>
|
||||
<C1:publish-url/>
|
||||
<C1:push-transports/>
|
||||
<C1:pushkey/>
|
||||
<C:me-card/>
|
||||
<C:publish-url/>
|
||||
<C:push-transports/>
|
||||
<C:pushkey/>
|
||||
<quota-available-bytes/>
|
||||
<quota-used-bytes/>
|
||||
<A:refreshrate/>
|
||||
<resource-id/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<C1:source/>
|
||||
<C1:subscribed-strip-alarms/>
|
||||
<C1:subscribed-strip-attachments/>
|
||||
<C1:subscribed-strip-todos/>
|
||||
<C:supported-calendar-component-set/>
|
||||
<C1:schedule-calendar-transp/>
|
||||
<C:source/>
|
||||
<C:subscribed-strip-alarms/>
|
||||
<C:subscribed-strip-attachments/>
|
||||
<C:subscribed-strip-todos/>
|
||||
<C1:supported-calendar-component-set/>
|
||||
<sync-token/>
|
||||
<C1:xmpp-server/>
|
||||
<C1:xmpp-uri/>
|
||||
<C:xmpp-server/>
|
||||
<C:xmpp-uri/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
|
||||
@ -3,20 +3,22 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Location: /caldav.php/user1/SOHO%20collection/
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 424
|
||||
Content-Length: 459
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:X="com.apple.ical:">
|
||||
<href>/caldav.php/user1/SOHO%20collection/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname/>
|
||||
<C:calendar-description/>
|
||||
<X:calendarcolor/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/SOHO%20collection/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname/>
|
||||
<C:calendar-description/>
|
||||
<X:calendarcolor/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
<displayname>Lunch with David</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>747</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"2c32a2f8aba853654eb17fe037a4db4d"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -81,7 +81,7 @@
|
||||
<displayname>A Changed Meeting</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>829</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -116,7 +116,7 @@
|
||||
<displayname>Weekly Project Meeting</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>999</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"a1c6404d61190f9574e2bfd69383f144"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -151,7 +151,7 @@
|
||||
<displayname>Confidential Event</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>956</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"08a435c2abaf38f4a50a997343c098a7"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -186,7 +186,7 @@
|
||||
<displayname>Private Event</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>970</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"5def8ae2b20893a1c7f4dbaeb008f2f1"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -221,7 +221,7 @@
|
||||
<displayname>Tentative Event</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>929</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"ac90acd649c25070b1a2a17fb31a105a"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -256,7 +256,7 @@
|
||||
<displayname>Incomplete, uncancelled</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>415</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<getetag>"509b0f0d8a3363379f9f5727f5dd74a0"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -291,7 +291,7 @@
|
||||
<displayname>50% Complete, uncancelled</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>449</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<getetag>"cb3d9dc3e8c157f53eba3ea0e1e0f146"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -326,7 +326,7 @@
|
||||
<displayname>Due 7/8/7 16:30, completed</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>961</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<getetag>"00ad5eb1eb5507884710b0b66aa5d5c4"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -361,7 +361,7 @@
|
||||
<displayname>A Cancelled Task, with a start and due date</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>1001</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<getetag>"a2990674708634a311bb98a59865ca50"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -396,7 +396,7 @@
|
||||
<displayname>Morning Meeting</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>1119</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"e8060931f30c1798ac58ffbe4ec0bffc"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -431,7 +431,7 @@
|
||||
<displayname>Release 0.9.3</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>1013</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vtodo</getcontenttype>
|
||||
<getetag>"8f581a053df6d833254756dfd7553d37"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -466,7 +466,7 @@
|
||||
<displayname>Beer O'Clock</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>769</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"55f02f66966ee150320383803d1e0d34"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -501,7 +501,7 @@
|
||||
<displayname>Morning Mgmt Mtg</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>313</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"6f16959eee5c920b45548840b1e9ea19"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -536,7 +536,7 @@
|
||||
<displayname>BBQ @ ML's</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>981</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"efd0257efbc898d059c200d1391af060"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -571,7 +571,7 @@
|
||||
<displayname>New Event</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>676</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"257b9df4aaf573a578af4aadd033abf4"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -606,7 +606,7 @@
|
||||
<displayname>In Central Europe, 2pm, Oct 5th for 1 hour</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>761</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"6ddd18264a9d40c1c9d37a005eeb7e4f"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -641,7 +641,7 @@
|
||||
<displayname>In Prague, 10am, Oct 7th for 1 hour</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>710</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"4a3aa58a3e11487e87d87024465d4182"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -676,7 +676,7 @@
|
||||
<displayname>Party all day!</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>772</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"165746adbab8bc0c8336a63cc5332ff2"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
@ -711,7 +711,7 @@
|
||||
<displayname>Woohoo! Time to Par-tay!</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>800</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"2a09ef8c6a9e0b6bc16228359b99d8e7"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
|
||||
@ -93,7 +93,7 @@
|
||||
<displayname>Morning Mgmt Mtg</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>313</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<getetag>"6f16959eee5c920b45548840b1e9ea19"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<href>/caldav.php/user1/home/da81c0ee-7871-11db-c6d6-f6927c144649.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getcontentlength>313</getcontentlength>
|
||||
<displayname>Morning Mgmt Mtg</displayname>
|
||||
|
||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 1256
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 7623
|
||||
Content-Type: text/plain
|
||||
Content-Type: text/plain;charset=UTF-8
|
||||
|
||||
#!/usr/bin/php
|
||||
Testing the RRule v2 Library
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 14720
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 2708
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 2708
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 222
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 14720
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 14720
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -2,22 +2,24 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 448
|
||||
Content-Length: 484
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:D="urn:mcmillan:bogus:xml:ns:davical">
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<resourcetype/>
|
||||
<displayname/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<D:arbitrary/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<resourcetype/>
|
||||
<displayname/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<D:arbitrary/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
changed_last_5m: >1<
|
||||
|
||||
@ -2,20 +2,22 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 313
|
||||
Content-Length: 347
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:">
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<resourcetype/>
|
||||
<displayname/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<resourcetype/>
|
||||
<displayname/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
changed_last_5m: >1<
|
||||
|
||||
@ -2,21 +2,23 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 374
|
||||
Content-Length: 409
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:D="http://dotcal.com/principal-properties">
|
||||
<href>/caldav.php/user1/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<D:country/>
|
||||
<D:countrycode/>
|
||||
<displayname/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<D:country/>
|
||||
<D:countrycode/>
|
||||
<displayname/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
displayname: >User Number One PROPPATCH'd in<
|
||||
|
||||
@ -2,21 +2,23 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 374
|
||||
Content-Length: 409
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:D="http://dotcal.com/principal-properties">
|
||||
<href>/caldav.php/user1/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname/>
|
||||
<D:country/>
|
||||
<D:countrycode/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname/>
|
||||
<D:country/>
|
||||
<D:countrycode/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
displayname: >User 1<
|
||||
|
||||
@ -2,23 +2,25 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 462
|
||||
Content-Length: 499
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:X="http://xmlns.comical.net/birds">
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<resourcetype/>
|
||||
<displayname/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<X:spotted-grebe/>
|
||||
<C:cats/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<resourcetype/>
|
||||
<displayname/>
|
||||
<C:schedule-calendar-transp/>
|
||||
<X:spotted-grebe/>
|
||||
<C:cats/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
changed_last_5m: >1<
|
||||
|
||||
@ -2,21 +2,23 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 386
|
||||
Content-Length: 421
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<resourcetype/>
|
||||
<displayname/>
|
||||
<C:schedule-calendar-transp/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
<response>
|
||||
<href>/caldav.php/user1/home/</href>
|
||||
<responsedescription>All requested changes were made.</responsedescription>
|
||||
<propstat>
|
||||
<prop>
|
||||
<resourcetype/>
|
||||
<displayname/>
|
||||
<C:schedule-calendar-transp/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
changed_last_5m: >1<
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 14720
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Content-Length: 2752
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 14720
|
||||
Content-Type: text/calendar
|
||||
Content-Type: text/calendar;charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "f640afc35eb1b3892d84512c69748944"
|
||||
Content-Length: 4581
|
||||
ETag: "4958f56cf9ec116e609399113e3e021e"
|
||||
Content-Length: 3633
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -18,10 +18,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<principal/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/User%20Six/home/</href>
|
||||
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -30,6 +26,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -44,10 +41,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/User%20Six/home/</href>
|
||||
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -56,6 +49,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -70,10 +64,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C2:addressbook/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/User%20Six/home/</href>
|
||||
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -82,6 +72,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -97,10 +88,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C1:calendar/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/User%20Six/home/</href>
|
||||
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -108,6 +95,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<prop>
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -122,10 +110,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/User%20Six/home/</href>
|
||||
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -134,6 +118,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
@ -148,10 +133,6 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<collection/>
|
||||
<C:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
<C1:calendar-free-busy-set>
|
||||
<href>/caldav.php/User%20Six/home/</href>
|
||||
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
</C1:calendar-free-busy-set>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -160,6 +141,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<C1:calendar-description/>
|
||||
<A:calendar-color/>
|
||||
<A:calendar-order/>
|
||||
<C1:calendar-free-busy-set/>
|
||||
</prop>
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
|
||||
@ -4,7 +4,7 @@ DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
Etag: "bcc402382688cb3e8e57379c757dbcb0"
|
||||
Content-Length: 676
|
||||
Content-Type: text/calendar; charset="utf-8"
|
||||
Content-Type: text/calendar; component=vevent; charset="utf-8"
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
CALSCALE:GREGORIAN
|
||||
|
||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, calendar-access
|
||||
Etag: "13249ced6c7527191a003f54f7e3cd25"
|
||||
Content-Length: 834
|
||||
Content-Type: text/calendar; charset="utf-8"
|
||||
Content-Type: text/calendar; component=vevent; charset="utf-8"
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, calendar-access
|
||||
Etag: "13249ced6c7527191a003f54f7e3cd25"
|
||||
Content-Length: 834
|
||||
Content-Type: text/calendar; charset="utf-8"
|
||||
Content-Type: text/calendar; component=vevent; charset="utf-8"
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||
|
||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
|
||||
ETag: "looks like an etag"
|
||||
Content-Length: 5464
|
||||
Content-Length: 5572
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -12,7 +12,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/4aaf8f37-f232-4c8e-a72e-e171d4c4fe54.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getcontentlength>999</getcontentlength>
|
||||
<displayname>Weekly Project Meeting</displayname>
|
||||
@ -44,7 +44,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/9d050be7-8a02-4355-8ed3-02a9fc5f473f.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getcontentlength>956</getcontentlength>
|
||||
<displayname>Confidential Event</displayname>
|
||||
@ -76,7 +76,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/1906b3ca-4890-468a-9b58-1de74bf2c716.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getcontentlength>970</getcontentlength>
|
||||
<displayname>Private Event</displayname>
|
||||
@ -108,7 +108,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/fbd57454-d966-4a14-8341-abe1edb1ae66.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getcontentlength>929</getcontentlength>
|
||||
<displayname>Tentative Event</displayname>
|
||||
@ -140,7 +140,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/71e2ae82-7870-11db-c6d6-f6927c144649.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getcontentlength>769</getcontentlength>
|
||||
<displayname>Beer O'Clock</displayname>
|
||||
@ -172,7 +172,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/da81c0ee-7871-11db-c6d6-f6927c144649.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getcontenttype>text/calendar; component=vevent</getcontenttype>
|
||||
<resourcetype/>
|
||||
<getcontentlength>313</getcontentlength>
|
||||
<displayname>Morning Mgmt Mtg</displayname>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
The database is version 9.4 currently at revision 1.2.11.
|
||||
The database is version 9.5 currently at revision 1.3.1.
|
||||
No patches were applied.
|
||||
Supported locales updated.
|
||||
Updated view: dav_principal.sql applied.
|
||||
|
||||
@ -52,7 +52,7 @@ INSERT INTO collection (user_no, parent_container, dav_name, dav_etag,
|
||||
SELECT user_no, '/' || username || '/', '/' || username || '/home/', md5(username),
|
||||
username || ' home', TRUE, '2009-06-03', '2009-06-04',
|
||||
FALSE, FALSE, user_no + 150, '<DAV::collection/><urn:ietf:params:xml:ns:caldav:calendar/>'
|
||||
FROM usr;
|
||||
FROM usr ORDER BY user_no;
|
||||
|
||||
INSERT INTO collection (user_no, parent_container, dav_name, dav_etag,
|
||||
dav_displayname, is_calendar, is_addressbook, created, modified,
|
||||
@ -60,24 +60,24 @@ INSERT INTO collection (user_no, parent_container, dav_name, dav_etag,
|
||||
SELECT user_no, '/' || username || '/', '/' || username || '/addresses/', md5(username),
|
||||
username || ' addresses', FALSE, TRUE, '1957-07-26', '1998-03-16',
|
||||
FALSE, FALSE, user_no + 450, '<DAV::collection/><urn:ietf:params:xml:ns:carddav:addressbook/>'
|
||||
FROM usr;
|
||||
FROM usr ORDER BY user_no;
|
||||
|
||||
|
||||
INSERT INTO principal (type_id, user_no, displayname, default_privileges)
|
||||
SELECT 1, user_no, fullname, privilege_to_bits(ARRAY['read-free-busy','schedule-send','schedule-deliver']) FROM usr
|
||||
WHERE NOT EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Group' AND role_member.user_no = usr.user_no)
|
||||
AND NOT EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Resource' AND role_member.user_no = usr.user_no)
|
||||
AND NOT EXISTS(SELECT 1 FROM principal WHERE principal.user_no = usr.user_no);
|
||||
AND NOT EXISTS(SELECT 1 FROM principal WHERE principal.user_no = usr.user_no) ORDER BY user_no;
|
||||
|
||||
INSERT INTO principal (type_id, user_no, displayname, default_privileges)
|
||||
SELECT 2, user_no, fullname, privilege_to_bits(ARRAY['read','schedule-send','schedule-deliver']) FROM usr
|
||||
WHERE EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Resource' AND role_member.user_no = usr.user_no)
|
||||
AND NOT EXISTS(SELECT 1 FROM principal WHERE principal.user_no = usr.user_no);
|
||||
AND NOT EXISTS(SELECT 1 FROM principal WHERE principal.user_no = usr.user_no) ORDER BY user_no;
|
||||
|
||||
INSERT INTO principal (type_id, user_no, displayname, default_privileges)
|
||||
SELECT 3, user_no, fullname, privilege_to_bits(ARRAY['read-free-busy','schedule-send','schedule-deliver']) FROM usr
|
||||
WHERE EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Group' AND role_member.user_no = usr.user_no)
|
||||
AND NOT EXISTS(SELECT 1 FROM principal WHERE principal.user_no = usr.user_no);
|
||||
AND NOT EXISTS(SELECT 1 FROM principal WHERE principal.user_no = usr.user_no) ORDER BY user_no;
|
||||
|
||||
-- Set the insert sequence to the next number, with a minimum of 1000
|
||||
SELECT setval('relationship_type_rt_id_seq', (SELECT 10 UNION SELECT rt_id FROM relationship_type ORDER BY 1 DESC LIMIT 1) );
|
||||
@ -114,7 +114,7 @@ UPDATE relationship r SET confers = (SELECT bit_confers FROM relationship_type r
|
||||
INSERT INTO group_member ( group_id, member_id)
|
||||
SELECT g.principal_id, m.principal_id
|
||||
FROM relationship JOIN principal g ON(to_user=g.user_no AND g.type_id = 3) -- Group
|
||||
JOIN principal m ON(from_user=m.user_no AND m.type_id IN (1,2)); -- Person | Resource
|
||||
JOIN principal m ON(from_user=m.user_no AND m.type_id IN (1,2)) ORDER BY 1, 2; -- Person | Resource
|
||||
|
||||
INSERT INTO grants ( by_principal, to_principal, privileges, is_group )
|
||||
SELECT pby.principal_id AS by_principal, pto.principal_id AS to_principal,
|
||||
@ -123,4 +123,4 @@ INSERT INTO grants ( by_principal, to_principal, privileges, is_group )
|
||||
JOIN usr t ON(t.user_no=r.to_user)
|
||||
JOIN principal pby ON(t.user_no=pby.user_no)
|
||||
JOIN principal pto ON(pto.user_no=f.user_no)
|
||||
WHERE rt_id < 4 AND pby.type_id < 3;
|
||||
WHERE rt_id < 4 AND pby.type_id < 3 ORDER BY 1, 2;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user