diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 000000000..ea12c04f0
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,23 @@
+*.egg-info/
+*.o
+*.py[co]
+*.so
+_trial_temp*/
+build/
+dropin.cache
+*~
+*.lock
+.git
+.gitignore
+.gitmodules
+*.pyc
+.develop/
+data/
+bin/calendarserver_*
+calendarserver/version.py
+conf/caldavd-dev.plist
+subprojects/
+_run/
+
+# Otherwise any change to the Dockerfile itself means a complete rebuild
+Dockerfile
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..fb9bfdfe8
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,72 @@
+FROM ubuntu:16.04
+
+LABEL maintainer = "giorgio.azzinnaro@gmail.com" \
+ io.openshift.tags = caldavd,ccs \
+ io.openshift.wants = memcached,postgres \
+ io.k8s.description = "Calendar and Contacts Server is a CalDAV implementation" \
+ io.openshift.expose-services = 8080:http
+
+# Straight from CCS GitHub install guide
+# except for gettext-base, which we need for "envsubst"
+RUN apt-get update && \
+ apt-get -y install \
+ build-essential \
+ curl \
+ gettext-base \
+ git \
+ libffi-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ libreadline6-dev \
+ libsasl2-dev \
+ libssl-dev \
+ python-dev \
+ python-pip \
+ python-setuptools \
+ zlib1g-dev
+
+# All of the source code is in here
+ADD . /home/ccs
+
+WORKDIR /home/ccs
+
+# Dependencies are retrieved and CCS installed in /usr/local
+RUN pip install -r requirements-default.txt
+
+# Create all runtime directories and ensure right permissions for OC
+RUN mkdir -p /var/db/caldavd \
+ /var/log/caldavd \
+ /var/run/caldavd \
+ /etc/caldavd && \
+ chmod -R g+rwX /home/ccs \
+ /var/db/caldavd \
+ /var/log/caldavd \
+ /var/run/caldavd \
+ /etc/caldavd && \
+ chmod g=u /etc/passwd
+
+# TODO Check if everything is in this dir
+VOLUME [ "/var/db/caldavd" ]
+
+# For user defined complex configuration (e.g. accounts.xml, resources.xml)
+# A configuration file can be placed at /etc/caldavd/caldavd.ext.plist
+VOLUME [ "/etc/caldavd" ]
+
+# This can be edited in docker/caldavd.plist.template > HTTPPort
+EXPOSE 8080
+
+# Some sensible defaults for config
+ENV POSTGRES_HOST tcp:postgres:5432
+ENV POSTGRES_DB postgres
+ENV POSTGRES_USER postgres
+ENV POSTGRES_PASS password
+ENV MEMCACHED_HOST memcached
+ENV MEMCACHED_PORT 11211
+
+# To avoid errors with OpenShift, could be any
+USER 1000
+
+# This entry point simply creates /tmp/caldavd.plist,
+# using the given ENV as placeholders
+ENTRYPOINT [ "/home/ccs/contrib/docker/docker_entrypoint.sh" ]
+CMD [ "caldavd", "-X", "-L", "-f", "/tmp/caldavd.plist" ]
\ No newline at end of file
diff --git a/README.rst b/README.rst
index 5ad203ce3..c0f187dba 100644
--- a/README.rst
+++ b/README.rst
@@ -87,3 +87,16 @@ Start the server using the bin/run script, and use the -n option to bypass depen
Starting server...
The server should then start up and bind to port 8008 for HTTP and 8443 for HTTPS. You should then be able to connect to the server using your web browser (eg. Safari, Firefox) or with a CalDAV client (eg. Calendar).
+
+
+==========================
+Docker
+==========================
+
+A Dockerfile is provided to build an image that may be run in production.
+An example docker-compose file is provided in contrib/docker.
+
+PostgreSQL and Memcached are required as external services.
+
+Configuration may be altered to make use of an LDAP server,
+or XML files, as noted above.
\ No newline at end of file
diff --git a/contrib/docker/README.md b/contrib/docker/README.md
new file mode 100644
index 000000000..662ad8aa3
--- /dev/null
+++ b/contrib/docker/README.md
@@ -0,0 +1,44 @@
+# CCS dockerised
+
+This container of [Calendar and Contacts Server](https://github.com/apple/ccs-calendarserver/)
+is thought to be run in production (in Kubernetes or OpenShift).
+
+It uses `setup.py` and expects external __Postgres__ and __Memcached__.
+
+__Postgres__ schema must be manually defined during the first run,
+using [current.sql](https://github.com/apple/ccs-calendarserver/blob/master/txdav/common/datastore/sql_schema/current.sql).
+
+What is being done in our `docker-compose.yml` is adding the SQL file in
+`/docker-entrypoint-initdb.d` as suggested
+[here](https://hub.docker.com/_/postgres/), at chapter:
+*How to extend this image*.
+
+## Running
+
+### Docker Swarm
+```bash
+$ docker stack deploy -c docker-compose.yml ccs-stack
+```
+
+### K8s / OpenShift
+__TODO__
+
+
+## Configuration
+
+Configuration of CCS is done in multiple layers:
+
+1. `caldavd.envsubst.plist`, on which env variable are replaced by `docker_entrypoint.sh`. This takes care of loading:
+2. `/etc/caldavd/caldavd.ext.plist`, which may be added via a *VOLUME*, envsubst is __NOT__ applied to this.
+3. `/etc/caldavd/caldavd.writable.plist`, as a writable config file is required by CCS.
+
+
+### XML example
+In `contrib/docker/samples/xml` is a sample Docker stack where
+XML is used to define accounts.
+
+### LDAP example
+__TODO__
+
+In `contrib/docker/samples/ldap` a stack with Apache DS is defined
+to test getting resources via LDAP.
\ No newline at end of file
diff --git a/contrib/docker/caldavd.envsubst.plist b/contrib/docker/caldavd.envsubst.plist
new file mode 100644
index 000000000..974d91bd4
--- /dev/null
+++ b/contrib/docker/caldavd.envsubst.plist
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+ HTTPPort
+ 8080
+
+
+ UseDatabase
+
+
+
+ DBType
+ postgres
+
+
+ DBFeatures
+
+ skip-locked
+
+
+
+ FailIfUpgradeNeeded
+
+
+
+ CheckExistingSchema
+
+
+
+
+
+ ServerRoot
+ /var/db/caldavd
+
+
+ ConfigRoot
+ /etc/caldavd
+
+
+
+
+ Includes
+
+ /etc/caldavd/caldavd.ext.plist
+ /etc/caldavd/caldavd.writable.plist
+
+
+
+ WritableConfigFile
+ /etc/caldavd/caldavd.writable.plist
+
+
+ DatabaseConnection
+
+
+ endpoint
+ $POSTGRES_HOST
+
+
+
+ database
+ $POSTGRES_DB
+
+
+
+ user
+ $POSTGRES_USER
+
+
+
+ password
+ $POSTGRES_PASS
+
+
+
+ ssl
+
+
+
+ Memcached
+
+ MaxClients
+ 5
+
+ Pools
+
+ Default
+
+
+ MemcacheSocket
+
+
+ ClientEnabled
+
+
+
+ ServerEnabled
+
+
+ BindAddress
+ $MEMCACHED_HOST
+
+
+ Port
+ $MEMCACHED_PORT
+
+
+
+ HandleCacheTypes
+
+ Default
+
+
+
+
+
+
+
+ memcached
+ memcached
+
+
+ MaxMemory
+ 0
+
+ Options
+
+
+
+ ProxyDBKeyNormalization
+
+
+
+
diff --git a/contrib/docker/docker-compose.yml b/contrib/docker/docker-compose.yml
new file mode 100644
index 000000000..ed52f9dc0
--- /dev/null
+++ b/contrib/docker/docker-compose.yml
@@ -0,0 +1,57 @@
+version: "3.3"
+
+configs:
+ sql_seed:
+ file: ../../txdav/common/datastore/sql_schema/current.sql
+
+services:
+ ccs:
+ image: giorgioazzinnaro/ccs-calendarserver
+ environment:
+ POSTGRES_HOST: 'tcp:postgres:5432'
+ POSTGRES_DB: ccs
+ POSTGRES_USER: caldavd
+ POSTGRES_PASS: test1234
+ MEMCACHED_HOST: memcached
+ MEMCACHED_PORT: 11211
+ volumes:
+ - ccsdata:/var/db/caldavd
+ - ccsconf:/etc/caldavd
+ networks:
+ - ccsnet
+ ports:
+ - "8080:8080"
+ depends_on:
+ - postgres
+ - memcached
+ restart: always
+
+ postgres:
+ image: postgres
+ restart: always
+ environment:
+ POSTGRES_DB: ccs
+ POSTGRES_USER: caldavd
+ POSTGRES_PASSWORD: test1234
+ volumes:
+ - "postgresdata:/var/lib/postgresql/data"
+ configs:
+ - source: sql_seed
+ target: /docker-entrypoint-initdb.d/ccs.sql
+ networks:
+ - ccsnet
+
+ memcached:
+ image: memcached:1.5
+ networks:
+ - ccsnet
+
+
+volumes:
+ postgresdata:
+ ccsdata:
+ ccsconf:
+
+
+networks:
+ ccsnet:
\ No newline at end of file
diff --git a/contrib/docker/docker_entrypoint.sh b/contrib/docker/docker_entrypoint.sh
new file mode 100755
index 000000000..73d384049
--- /dev/null
+++ b/contrib/docker/docker_entrypoint.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -e
+
+# This is because OpenShift runs with random UIDs,
+# and ccs expects the UID to be in /etc/passwd
+# Must be done at runtime because of the dynamic UID
+echo "ccs:x:$(id -u):$(id -g):Calendar and Contacts Server:/home/ccs:/bin/bash" >> /etc/passwd
+
+# Just get our conf file
+CCS_CONF_TEMP_FILE="/home/ccs/contrib/docker/caldavd.envsubst.plist"
+
+# It is important that this dir is world-writable,
+# /tmp usually is
+export CCS_CONF_FILE="/tmp/caldavd.plist"
+
+# This file may be added by the user in a volume
+CCS_USER_CONF_FILE="/etc/caldavd/caldavd.ext.plist"
+
+# Replace any env variable as they come from docker run
+envsubst < $CCS_CONF_TEMP_FILE > $CCS_CONF_FILE
+
+# Doesn't work in-place,
+# doesn't make much sense to have either:
+# as the user is already defining their config...
+#
+# Replace env variables in user defined config if exists
+# if [ -f $CCS_USER_CONF_FILE ]; then
+# envsubst < $CCS_USER_CONF_FILE > $CCS_USER_CONF_FILE
+# fi
+
+exec "$@"
diff --git a/contrib/docker/samples/xml/conf/accounts-test.xml b/contrib/docker/samples/xml/conf/accounts-test.xml
new file mode 100755
index 000000000..d3f5afc5f
--- /dev/null
+++ b/contrib/docker/samples/xml/conf/accounts-test.xml
@@ -0,0 +1,1648 @@
+
+
+
+
+
+
+
+
+ 0C8BDE62-E600-4696-83D3-8B5ECABDFD2E
+ 0C8BDE62-E600-4696-83D3-8B5ECABDFD2E
+ admin
+ admin
+ Super User
+ admin@example.com
+
+
+ 29B6C503-11DF-43EC-8CCA-40C7003149CE
+ 29B6C503-11DF-43EC-8CCA-40C7003149CE
+ apprentice
+ apprentice
+ Apprentice Super User
+ apprentice@example.com
+
+
+ 860B3EE9-6D7C-4296-9639-E6B998074A78
+ 860B3EE9-6D7C-4296-9639-E6B998074A78
+ i18nuser
+ i18nuser
+ まだ
+ i18nuser@example.com
+
+
+ 10000000-0000-0000-0000-000000000001
+ 10000000-0000-0000-0000-000000000001
+ user01
+ user01
+ User 01
+ user01@example.com
+
+
+ 10000000-0000-0000-0000-000000000002
+ 10000000-0000-0000-0000-000000000002
+ user02
+ user02
+ User 02
+ user02@example.com
+
+
+ 10000000-0000-0000-0000-000000000003
+ 10000000-0000-0000-0000-000000000003
+ user03
+ user03
+ User 03
+ user03@example.com
+
+
+ 10000000-0000-0000-0000-000000000004
+ 10000000-0000-0000-0000-000000000004
+ user04
+ user04
+ User 04
+ user04@example.com
+
+
+ 10000000-0000-0000-0000-000000000005
+ 10000000-0000-0000-0000-000000000005
+ user05
+ user05
+ User 05
+ user05@example.com
+
+
+ 10000000-0000-0000-0000-000000000006
+ 10000000-0000-0000-0000-000000000006
+ user06
+ user06
+ User 06
+ user06@example.com
+
+
+ 10000000-0000-0000-0000-000000000007
+ 10000000-0000-0000-0000-000000000007
+ user07
+ user07
+ User 07
+ user07@example.com
+
+
+ 10000000-0000-0000-0000-000000000008
+ 10000000-0000-0000-0000-000000000008
+ user08
+ user08
+ User 08
+ user08@example.com
+
+
+ 10000000-0000-0000-0000-000000000009
+ 10000000-0000-0000-0000-000000000009
+ user09
+ user09
+ User 09
+ user09@example.com
+
+
+ 10000000-0000-0000-0000-000000000010
+ 10000000-0000-0000-0000-000000000010
+ user10
+ user10
+ User 10
+ user10@example.com
+
+
+ 10000000-0000-0000-0000-000000000011
+ 10000000-0000-0000-0000-000000000011
+ user11
+ user11
+ User 11
+ user11@example.com
+
+
+ 10000000-0000-0000-0000-000000000012
+ 10000000-0000-0000-0000-000000000012
+ user12
+ user12
+ User 12
+ user12@example.com
+
+
+ 10000000-0000-0000-0000-000000000013
+ 10000000-0000-0000-0000-000000000013
+ user13
+ user13
+ User 13
+ user13@example.com
+
+
+ 10000000-0000-0000-0000-000000000014
+ 10000000-0000-0000-0000-000000000014
+ user14
+ user14
+ User 14
+ user14@example.com
+
+
+ 10000000-0000-0000-0000-000000000015
+ 10000000-0000-0000-0000-000000000015
+ user15
+ user15
+ User 15
+ user15@example.com
+
+
+ 10000000-0000-0000-0000-000000000016
+ 10000000-0000-0000-0000-000000000016
+ user16
+ user16
+ User 16
+ user16@example.com
+
+
+ 10000000-0000-0000-0000-000000000017
+ 10000000-0000-0000-0000-000000000017
+ user17
+ user17
+ User 17
+ user17@example.com
+
+
+ 10000000-0000-0000-0000-000000000018
+ 10000000-0000-0000-0000-000000000018
+ user18
+ user18
+ User 18
+ user18@example.com
+
+
+ 10000000-0000-0000-0000-000000000019
+ 10000000-0000-0000-0000-000000000019
+ user19
+ user19
+ User 19
+ user19@example.com
+
+
+ 10000000-0000-0000-0000-000000000020
+ 10000000-0000-0000-0000-000000000020
+ user20
+ user20
+ User 20
+ user20@example.com
+
+
+ 10000000-0000-0000-0000-000000000021
+ 10000000-0000-0000-0000-000000000021
+ user21
+ user21
+ User 21
+ user21@example.com
+
+
+ 10000000-0000-0000-0000-000000000022
+ 10000000-0000-0000-0000-000000000022
+ user22
+ user22
+ User 22
+ user22@example.com
+
+
+ 10000000-0000-0000-0000-000000000023
+ 10000000-0000-0000-0000-000000000023
+ user23
+ user23
+ User 23
+ user23@example.com
+
+
+ 10000000-0000-0000-0000-000000000024
+ 10000000-0000-0000-0000-000000000024
+ user24
+ user24
+ User 24
+ user24@example.com
+
+
+ 10000000-0000-0000-0000-000000000025
+ 10000000-0000-0000-0000-000000000025
+ user25
+ user25
+ User 25
+ user25@example.com
+
+
+ 10000000-0000-0000-0000-000000000026
+ 10000000-0000-0000-0000-000000000026
+ user26
+ user26
+ User 26
+ user26@example.com
+
+
+ 10000000-0000-0000-0000-000000000027
+ 10000000-0000-0000-0000-000000000027
+ user27
+ user27
+ User 27
+ user27@example.com
+
+
+ 10000000-0000-0000-0000-000000000028
+ 10000000-0000-0000-0000-000000000028
+ user28
+ user28
+ User 28
+ user28@example.com
+
+
+ 10000000-0000-0000-0000-000000000029
+ 10000000-0000-0000-0000-000000000029
+ user29
+ user29
+ User 29
+ user29@example.com
+
+
+ 10000000-0000-0000-0000-000000000030
+ 10000000-0000-0000-0000-000000000030
+ user30
+ user30
+ User 30
+ user30@example.com
+
+
+ 10000000-0000-0000-0000-000000000031
+ 10000000-0000-0000-0000-000000000031
+ user31
+ user31
+ User 31
+ user31@example.com
+
+
+ 10000000-0000-0000-0000-000000000032
+ 10000000-0000-0000-0000-000000000032
+ user32
+ user32
+ User 32
+ user32@example.com
+
+
+ 10000000-0000-0000-0000-000000000033
+ 10000000-0000-0000-0000-000000000033
+ user33
+ user33
+ User 33
+ user33@example.com
+
+
+ 10000000-0000-0000-0000-000000000034
+ 10000000-0000-0000-0000-000000000034
+ user34
+ user34
+ User 34
+ user34@example.com
+
+
+ 10000000-0000-0000-0000-000000000035
+ 10000000-0000-0000-0000-000000000035
+ user35
+ user35
+ User 35
+ user35@example.com
+
+
+ 10000000-0000-0000-0000-000000000036
+ 10000000-0000-0000-0000-000000000036
+ user36
+ user36
+ User 36
+ user36@example.com
+
+
+ 10000000-0000-0000-0000-000000000037
+ 10000000-0000-0000-0000-000000000037
+ user37
+ user37
+ User 37
+ user37@example.com
+
+
+ 10000000-0000-0000-0000-000000000038
+ 10000000-0000-0000-0000-000000000038
+ user38
+ user38
+ User 38
+ user38@example.com
+
+
+ 10000000-0000-0000-0000-000000000039
+ 10000000-0000-0000-0000-000000000039
+ user39
+ user39
+ User 39
+ user39@example.com
+
+
+ 10000000-0000-0000-0000-000000000040
+ 10000000-0000-0000-0000-000000000040
+ user40
+ user40
+ User 40
+ user40@example.com
+
+
+ 10000000-0000-0000-0000-000000000041
+ 10000000-0000-0000-0000-000000000041
+ user41
+ user41
+ User 41
+ user41@example.com
+
+
+ 10000000-0000-0000-0000-000000000042
+ 10000000-0000-0000-0000-000000000042
+ user42
+ user42
+ User 42
+ user42@example.com
+
+
+ 10000000-0000-0000-0000-000000000043
+ 10000000-0000-0000-0000-000000000043
+ user43
+ user43
+ User 43
+ user43@example.com
+
+
+ 10000000-0000-0000-0000-000000000044
+ 10000000-0000-0000-0000-000000000044
+ user44
+ user44
+ User 44
+ user44@example.com
+
+
+ 10000000-0000-0000-0000-000000000045
+ 10000000-0000-0000-0000-000000000045
+ user45
+ user45
+ User 45
+ user45@example.com
+
+
+ 10000000-0000-0000-0000-000000000046
+ 10000000-0000-0000-0000-000000000046
+ user46
+ user46
+ User 46
+ user46@example.com
+
+
+ 10000000-0000-0000-0000-000000000047
+ 10000000-0000-0000-0000-000000000047
+ user47
+ user47
+ User 47
+ user47@example.com
+
+
+ 10000000-0000-0000-0000-000000000048
+ 10000000-0000-0000-0000-000000000048
+ user48
+ user48
+ User 48
+ user48@example.com
+
+
+ 10000000-0000-0000-0000-000000000049
+ 10000000-0000-0000-0000-000000000049
+ user49
+ user49
+ User 49
+ user49@example.com
+
+
+ 10000000-0000-0000-0000-000000000050
+ 10000000-0000-0000-0000-000000000050
+ user50
+ user50
+ User 50
+ user50@example.com
+
+
+ 10000000-0000-0000-0000-000000000051
+ 10000000-0000-0000-0000-000000000051
+ user51
+ user51
+ User 51
+ user51@example.com
+
+
+ 10000000-0000-0000-0000-000000000052
+ 10000000-0000-0000-0000-000000000052
+ user52
+ user52
+ User 52
+ user52@example.com
+
+
+ 10000000-0000-0000-0000-000000000053
+ 10000000-0000-0000-0000-000000000053
+ user53
+ user53
+ User 53
+ user53@example.com
+
+
+ 10000000-0000-0000-0000-000000000054
+ 10000000-0000-0000-0000-000000000054
+ user54
+ user54
+ User 54
+ user54@example.com
+
+
+ 10000000-0000-0000-0000-000000000055
+ 10000000-0000-0000-0000-000000000055
+ user55
+ user55
+ User 55
+ user55@example.com
+
+
+ 10000000-0000-0000-0000-000000000056
+ 10000000-0000-0000-0000-000000000056
+ user56
+ user56
+ User 56
+ user56@example.com
+
+
+ 10000000-0000-0000-0000-000000000057
+ 10000000-0000-0000-0000-000000000057
+ user57
+ user57
+ User 57
+ user57@example.com
+
+
+ 10000000-0000-0000-0000-000000000058
+ 10000000-0000-0000-0000-000000000058
+ user58
+ user58
+ User 58
+ user58@example.com
+
+
+ 10000000-0000-0000-0000-000000000059
+ 10000000-0000-0000-0000-000000000059
+ user59
+ user59
+ User 59
+ user59@example.com
+
+
+ 10000000-0000-0000-0000-000000000060
+ 10000000-0000-0000-0000-000000000060
+ user60
+ user60
+ User 60
+ user60@example.com
+
+
+ 10000000-0000-0000-0000-000000000061
+ 10000000-0000-0000-0000-000000000061
+ user61
+ user61
+ User 61
+ user61@example.com
+
+
+ 10000000-0000-0000-0000-000000000062
+ 10000000-0000-0000-0000-000000000062
+ user62
+ user62
+ User 62
+ user62@example.com
+
+
+ 10000000-0000-0000-0000-000000000063
+ 10000000-0000-0000-0000-000000000063
+ user63
+ user63
+ User 63
+ user63@example.com
+
+
+ 10000000-0000-0000-0000-000000000064
+ 10000000-0000-0000-0000-000000000064
+ user64
+ user64
+ User 64
+ user64@example.com
+
+
+ 10000000-0000-0000-0000-000000000065
+ 10000000-0000-0000-0000-000000000065
+ user65
+ user65
+ User 65
+ user65@example.com
+
+
+ 10000000-0000-0000-0000-000000000066
+ 10000000-0000-0000-0000-000000000066
+ user66
+ user66
+ User 66
+ user66@example.com
+
+
+ 10000000-0000-0000-0000-000000000067
+ 10000000-0000-0000-0000-000000000067
+ user67
+ user67
+ User 67
+ user67@example.com
+
+
+ 10000000-0000-0000-0000-000000000068
+ 10000000-0000-0000-0000-000000000068
+ user68
+ user68
+ User 68
+ user68@example.com
+
+
+ 10000000-0000-0000-0000-000000000069
+ 10000000-0000-0000-0000-000000000069
+ user69
+ user69
+ User 69
+ user69@example.com
+
+
+ 10000000-0000-0000-0000-000000000070
+ 10000000-0000-0000-0000-000000000070
+ user70
+ user70
+ User 70
+ user70@example.com
+
+
+ 10000000-0000-0000-0000-000000000071
+ 10000000-0000-0000-0000-000000000071
+ user71
+ user71
+ User 71
+ user71@example.com
+
+
+ 10000000-0000-0000-0000-000000000072
+ 10000000-0000-0000-0000-000000000072
+ user72
+ user72
+ User 72
+ user72@example.com
+
+
+ 10000000-0000-0000-0000-000000000073
+ 10000000-0000-0000-0000-000000000073
+ user73
+ user73
+ User 73
+ user73@example.com
+
+
+ 10000000-0000-0000-0000-000000000074
+ 10000000-0000-0000-0000-000000000074
+ user74
+ user74
+ User 74
+ user74@example.com
+
+
+ 10000000-0000-0000-0000-000000000075
+ 10000000-0000-0000-0000-000000000075
+ user75
+ user75
+ User 75
+ user75@example.com
+
+
+ 10000000-0000-0000-0000-000000000076
+ 10000000-0000-0000-0000-000000000076
+ user76
+ user76
+ User 76
+ user76@example.com
+
+
+ 10000000-0000-0000-0000-000000000077
+ 10000000-0000-0000-0000-000000000077
+ user77
+ user77
+ User 77
+ user77@example.com
+
+
+ 10000000-0000-0000-0000-000000000078
+ 10000000-0000-0000-0000-000000000078
+ user78
+ user78
+ User 78
+ user78@example.com
+
+
+ 10000000-0000-0000-0000-000000000079
+ 10000000-0000-0000-0000-000000000079
+ user79
+ user79
+ User 79
+ user79@example.com
+
+
+ 10000000-0000-0000-0000-000000000080
+ 10000000-0000-0000-0000-000000000080
+ user80
+ user80
+ User 80
+ user80@example.com
+
+
+ 10000000-0000-0000-0000-000000000081
+ 10000000-0000-0000-0000-000000000081
+ user81
+ user81
+ User 81
+ user81@example.com
+
+
+ 10000000-0000-0000-0000-000000000082
+ 10000000-0000-0000-0000-000000000082
+ user82
+ user82
+ User 82
+ user82@example.com
+
+
+ 10000000-0000-0000-0000-000000000083
+ 10000000-0000-0000-0000-000000000083
+ user83
+ user83
+ User 83
+ user83@example.com
+
+
+ 10000000-0000-0000-0000-000000000084
+ 10000000-0000-0000-0000-000000000084
+ user84
+ user84
+ User 84
+ user84@example.com
+
+
+ 10000000-0000-0000-0000-000000000085
+ 10000000-0000-0000-0000-000000000085
+ user85
+ user85
+ User 85
+ user85@example.com
+
+
+ 10000000-0000-0000-0000-000000000086
+ 10000000-0000-0000-0000-000000000086
+ user86
+ user86
+ User 86
+ user86@example.com
+
+
+ 10000000-0000-0000-0000-000000000087
+ 10000000-0000-0000-0000-000000000087
+ user87
+ user87
+ User 87
+ user87@example.com
+
+
+ 10000000-0000-0000-0000-000000000088
+ 10000000-0000-0000-0000-000000000088
+ user88
+ user88
+ User 88
+ user88@example.com
+
+
+ 10000000-0000-0000-0000-000000000089
+ 10000000-0000-0000-0000-000000000089
+ user89
+ user89
+ User 89
+ user89@example.com
+
+
+ 10000000-0000-0000-0000-000000000090
+ 10000000-0000-0000-0000-000000000090
+ user90
+ user90
+ User 90
+ user90@example.com
+
+
+ 10000000-0000-0000-0000-000000000091
+ 10000000-0000-0000-0000-000000000091
+ user91
+ user91
+ User 91
+ user91@example.com
+
+
+ 10000000-0000-0000-0000-000000000092
+ 10000000-0000-0000-0000-000000000092
+ user92
+ user92
+ User 92
+ user92@example.com
+
+
+ 10000000-0000-0000-0000-000000000093
+ 10000000-0000-0000-0000-000000000093
+ user93
+ user93
+ User 93
+ user93@example.com
+
+
+ 10000000-0000-0000-0000-000000000094
+ 10000000-0000-0000-0000-000000000094
+ user94
+ user94
+ User 94
+ user94@example.com
+
+
+ 10000000-0000-0000-0000-000000000095
+ 10000000-0000-0000-0000-000000000095
+ user95
+ user95
+ User 95
+ user95@example.com
+
+
+ 10000000-0000-0000-0000-000000000096
+ 10000000-0000-0000-0000-000000000096
+ user96
+ user96
+ User 96
+ user96@example.com
+
+
+ 10000000-0000-0000-0000-000000000097
+ 10000000-0000-0000-0000-000000000097
+ user97
+ user97
+ User 97
+ user97@example.com
+
+
+ 10000000-0000-0000-0000-000000000098
+ 10000000-0000-0000-0000-000000000098
+ user98
+ user98
+ User 98
+ user98@example.com
+
+
+ 10000000-0000-0000-0000-000000000099
+ 10000000-0000-0000-0000-000000000099
+ user99
+ user99
+ User 99
+ user99@example.com
+
+
+ 10000000-0000-0000-0000-000000000100
+ 10000000-0000-0000-0000-000000000100
+ user100
+ user100
+ User 100
+ user100@example.com
+
+
+ 10000000-0000-0000-0000-000000000101
+ 10000000-0000-0000-0000-000000000101
+ user101
+ user101
+ User 101
+ user101@example.com
+
+
+ 50000000-0000-0000-0000-000000000001
+ 50000000-0000-0000-0000-000000000001
+ public01
+ public01
+ Public 01
+ public01@example.com
+
+
+ 50000000-0000-0000-0000-000000000002
+ 50000000-0000-0000-0000-000000000002
+ public02
+ public02
+ Public 02
+ public02@example.com
+
+
+ 50000000-0000-0000-0000-000000000003
+ 50000000-0000-0000-0000-000000000003
+ public03
+ public03
+ Public 03
+ public03@example.com
+
+
+ 50000000-0000-0000-0000-000000000004
+ 50000000-0000-0000-0000-000000000004
+ public04
+ public04
+ Public 04
+ public04@example.com
+
+
+ 50000000-0000-0000-0000-000000000005
+ 50000000-0000-0000-0000-000000000005
+ public05
+ public05
+ Public 05
+ public05@example.com
+
+
+ 50000000-0000-0000-0000-000000000006
+ 50000000-0000-0000-0000-000000000006
+ public06
+ public06
+ Public 06
+ public06@example.com
+
+
+ 50000000-0000-0000-0000-000000000007
+ 50000000-0000-0000-0000-000000000007
+ public07
+ public07
+ Public 07
+ public07@example.com
+
+
+ 50000000-0000-0000-0000-000000000008
+ 50000000-0000-0000-0000-000000000008
+ public08
+ public08
+ Public 08
+ public08@example.com
+
+
+ 50000000-0000-0000-0000-000000000009
+ 50000000-0000-0000-0000-000000000009
+ public09
+ public09
+ Public 09
+ public09@example.com
+
+
+ 50000000-0000-0000-0000-000000000010
+ 50000000-0000-0000-0000-000000000010
+ public10
+ public10
+ Public 10
+ public10@example.com
+
+
+ 20000000-0000-0000-0000-000000000001
+ 20000000-0000-0000-0000-000000000001
+ group01
+ Group 01
+ group01@example.com
+ 10000000-0000-0000-0000-000000000001
+
+
+ 20000000-0000-0000-0000-000000000002
+ 20000000-0000-0000-0000-000000000002
+ group02
+ Group 02
+ group02@example.com
+ 10000000-0000-0000-0000-000000000006
+ 10000000-0000-0000-0000-000000000007
+
+
+ 20000000-0000-0000-0000-000000000003
+ 20000000-0000-0000-0000-000000000003
+ group03
+ Group 03
+ group03@example.com
+ 10000000-0000-0000-0000-000000000008
+ 10000000-0000-0000-0000-000000000009
+
+
+ 20000000-0000-0000-0000-000000000004
+ 20000000-0000-0000-0000-000000000004
+ group04
+ Group 04
+ group04@example.com
+ 20000000-0000-0000-0000-000000000002
+ 20000000-0000-0000-0000-000000000003
+ 10000000-0000-0000-0000-000000000010
+
+
+ 20000000-0000-0000-0000-000000000005
+ 20000000-0000-0000-0000-000000000005
+ group05
+ Group 05
+ group05@example.com
+ 20000000-0000-0000-0000-000000000006
+ 10000000-0000-0000-0000-000000000020
+
+
+ 20000000-0000-0000-0000-000000000006
+ 20000000-0000-0000-0000-000000000006
+ group06
+ Group 06
+ group06@example.com
+ 10000000-0000-0000-0000-000000000021
+
+
+ 20000000-0000-0000-0000-000000000007
+ 20000000-0000-0000-0000-000000000007
+ group07
+ Group 07
+ group07@example.com
+ 10000000-0000-0000-0000-000000000022
+ 10000000-0000-0000-0000-000000000023
+ 10000000-0000-0000-0000-000000000024
+
+
+ 20000000-0000-0000-0000-000000000008
+ 20000000-0000-0000-0000-000000000008
+ group08
+ Group 08
+ group08@example.com
+
+
+ 20000000-0000-0000-0000-000000000009
+ 20000000-0000-0000-0000-000000000009
+ group09
+ Group 09
+ group09@example.com
+
+
+ 20000000-0000-0000-0000-000000000010
+ 20000000-0000-0000-0000-000000000010
+ group10
+ Group 10
+ group10@example.com
+
+
+ 20000000-0000-0000-0000-000000000011
+ 20000000-0000-0000-0000-000000000011
+ group11
+ Group 11
+ group11@example.com
+
+
+ 20000000-0000-0000-0000-000000000012
+ 20000000-0000-0000-0000-000000000012
+ group12
+ Group 12
+ group12@example.com
+
+
+ 20000000-0000-0000-0000-000000000013
+ 20000000-0000-0000-0000-000000000013
+ group13
+ Group 13
+ group13@example.com
+
+
+ 20000000-0000-0000-0000-000000000014
+ 20000000-0000-0000-0000-000000000014
+ group14
+ Group 14
+ group14@example.com
+
+
+ 20000000-0000-0000-0000-000000000015
+ 20000000-0000-0000-0000-000000000015
+ group15
+ Group 15
+ group15@example.com
+
+
+ 20000000-0000-0000-0000-000000000016
+ 20000000-0000-0000-0000-000000000016
+ group16
+ Group 16
+ group16@example.com
+
+
+ 20000000-0000-0000-0000-000000000017
+ 20000000-0000-0000-0000-000000000017
+ group17
+ Group 17
+ group17@example.com
+
+
+ 20000000-0000-0000-0000-000000000018
+ 20000000-0000-0000-0000-000000000018
+ group18
+ Group 18
+ group18@example.com
+
+
+ 20000000-0000-0000-0000-000000000019
+ 20000000-0000-0000-0000-000000000019
+ group19
+ Group 19
+ group19@example.com
+
+
+ 20000000-0000-0000-0000-000000000020
+ 20000000-0000-0000-0000-000000000020
+ group20
+ Group 20
+ group20@example.com
+
+
+ 20000000-0000-0000-0000-000000000021
+ 20000000-0000-0000-0000-000000000021
+ group21
+ Group 21
+ group21@example.com
+
+
+ 20000000-0000-0000-0000-000000000022
+ 20000000-0000-0000-0000-000000000022
+ group22
+ Group 22
+ group22@example.com
+
+
+ 20000000-0000-0000-0000-000000000023
+ 20000000-0000-0000-0000-000000000023
+ group23
+ Group 23
+ group23@example.com
+
+
+ 20000000-0000-0000-0000-000000000024
+ 20000000-0000-0000-0000-000000000024
+ group24
+ Group 24
+ group24@example.com
+
+
+ 20000000-0000-0000-0000-000000000025
+ 20000000-0000-0000-0000-000000000025
+ group25
+ Group 25
+ group25@example.com
+
+
+ 20000000-0000-0000-0000-000000000026
+ 20000000-0000-0000-0000-000000000026
+ group26
+ Group 26
+ group26@example.com
+
+
+ 20000000-0000-0000-0000-000000000027
+ 20000000-0000-0000-0000-000000000027
+ group27
+ Group 27
+ group27@example.com
+
+
+ 20000000-0000-0000-0000-000000000028
+ 20000000-0000-0000-0000-000000000028
+ group28
+ Group 28
+ group28@example.com
+
+
+ 20000000-0000-0000-0000-000000000029
+ 20000000-0000-0000-0000-000000000029
+ group29
+ Group 29
+ group29@example.com
+
+
+ 20000000-0000-0000-0000-000000000030
+ 20000000-0000-0000-0000-000000000030
+ group30
+ Group 30
+ group30@example.com
+
+
+ 20000000-0000-0000-0000-000000000031
+ 20000000-0000-0000-0000-000000000031
+ group31
+ Group 31
+ group31@example.com
+
+
+ 20000000-0000-0000-0000-000000000032
+ 20000000-0000-0000-0000-000000000032
+ group32
+ Group 32
+ group32@example.com
+
+
+ 20000000-0000-0000-0000-000000000033
+ 20000000-0000-0000-0000-000000000033
+ group33
+ Group 33
+ group33@example.com
+
+
+ 20000000-0000-0000-0000-000000000034
+ 20000000-0000-0000-0000-000000000034
+ group34
+ Group 34
+ group34@example.com
+
+
+ 20000000-0000-0000-0000-000000000035
+ 20000000-0000-0000-0000-000000000035
+ group35
+ Group 35
+ group35@example.com
+
+
+ 20000000-0000-0000-0000-000000000036
+ 20000000-0000-0000-0000-000000000036
+ group36
+ Group 36
+ group36@example.com
+
+
+ 20000000-0000-0000-0000-000000000037
+ 20000000-0000-0000-0000-000000000037
+ group37
+ Group 37
+ group37@example.com
+
+
+ 20000000-0000-0000-0000-000000000038
+ 20000000-0000-0000-0000-000000000038
+ group38
+ Group 38
+ group38@example.com
+
+
+ 20000000-0000-0000-0000-000000000039
+ 20000000-0000-0000-0000-000000000039
+ group39
+ Group 39
+ group39@example.com
+
+
+ 20000000-0000-0000-0000-000000000040
+ 20000000-0000-0000-0000-000000000040
+ group40
+ Group 40
+ group40@example.com
+
+
+ 20000000-0000-0000-0000-000000000041
+ 20000000-0000-0000-0000-000000000041
+ group41
+ Group 41
+ group41@example.com
+
+
+ 20000000-0000-0000-0000-000000000042
+ 20000000-0000-0000-0000-000000000042
+ group42
+ Group 42
+ group42@example.com
+
+
+ 20000000-0000-0000-0000-000000000043
+ 20000000-0000-0000-0000-000000000043
+ group43
+ Group 43
+ group43@example.com
+
+
+ 20000000-0000-0000-0000-000000000044
+ 20000000-0000-0000-0000-000000000044
+ group44
+ Group 44
+ group44@example.com
+
+
+ 20000000-0000-0000-0000-000000000045
+ 20000000-0000-0000-0000-000000000045
+ group45
+ Group 45
+ group45@example.com
+
+
+ 20000000-0000-0000-0000-000000000046
+ 20000000-0000-0000-0000-000000000046
+ group46
+ Group 46
+ group46@example.com
+
+
+ 20000000-0000-0000-0000-000000000047
+ 20000000-0000-0000-0000-000000000047
+ group47
+ Group 47
+ group47@example.com
+
+
+ 20000000-0000-0000-0000-000000000048
+ 20000000-0000-0000-0000-000000000048
+ group48
+ Group 48
+ group48@example.com
+
+
+ 20000000-0000-0000-0000-000000000049
+ 20000000-0000-0000-0000-000000000049
+ group49
+ Group 49
+ group49@example.com
+
+
+ 20000000-0000-0000-0000-000000000050
+ 20000000-0000-0000-0000-000000000050
+ group50
+ Group 50
+ group50@example.com
+
+
+ 20000000-0000-0000-0000-000000000051
+ 20000000-0000-0000-0000-000000000051
+ group51
+ Group 51
+ group51@example.com
+
+
+ 20000000-0000-0000-0000-000000000052
+ 20000000-0000-0000-0000-000000000052
+ group52
+ Group 52
+ group52@example.com
+
+
+ 20000000-0000-0000-0000-000000000053
+ 20000000-0000-0000-0000-000000000053
+ group53
+ Group 53
+ group53@example.com
+
+
+ 20000000-0000-0000-0000-000000000054
+ 20000000-0000-0000-0000-000000000054
+ group54
+ Group 54
+ group54@example.com
+
+
+ 20000000-0000-0000-0000-000000000055
+ 20000000-0000-0000-0000-000000000055
+ group55
+ Group 55
+ group55@example.com
+
+
+ 20000000-0000-0000-0000-000000000056
+ 20000000-0000-0000-0000-000000000056
+ group56
+ Group 56
+ group56@example.com
+
+
+ 20000000-0000-0000-0000-000000000057
+ 20000000-0000-0000-0000-000000000057
+ group57
+ Group 57
+ group57@example.com
+
+
+ 20000000-0000-0000-0000-000000000058
+ 20000000-0000-0000-0000-000000000058
+ group58
+ Group 58
+ group58@example.com
+
+
+ 20000000-0000-0000-0000-000000000059
+ 20000000-0000-0000-0000-000000000059
+ group59
+ Group 59
+ group59@example.com
+
+
+ 20000000-0000-0000-0000-000000000060
+ 20000000-0000-0000-0000-000000000060
+ group60
+ Group 60
+ group60@example.com
+
+
+ 20000000-0000-0000-0000-000000000061
+ 20000000-0000-0000-0000-000000000061
+ group61
+ Group 61
+ group61@example.com
+
+
+ 20000000-0000-0000-0000-000000000062
+ 20000000-0000-0000-0000-000000000062
+ group62
+ Group 62
+ group62@example.com
+
+
+ 20000000-0000-0000-0000-000000000063
+ 20000000-0000-0000-0000-000000000063
+ group63
+ Group 63
+ group63@example.com
+
+
+ 20000000-0000-0000-0000-000000000064
+ 20000000-0000-0000-0000-000000000064
+ group64
+ Group 64
+ group64@example.com
+
+
+ 20000000-0000-0000-0000-000000000065
+ 20000000-0000-0000-0000-000000000065
+ group65
+ Group 65
+ group65@example.com
+
+
+ 20000000-0000-0000-0000-000000000066
+ 20000000-0000-0000-0000-000000000066
+ group66
+ Group 66
+ group66@example.com
+
+
+ 20000000-0000-0000-0000-000000000067
+ 20000000-0000-0000-0000-000000000067
+ group67
+ Group 67
+ group67@example.com
+
+
+ 20000000-0000-0000-0000-000000000068
+ 20000000-0000-0000-0000-000000000068
+ group68
+ Group 68
+ group68@example.com
+
+
+ 20000000-0000-0000-0000-000000000069
+ 20000000-0000-0000-0000-000000000069
+ group69
+ Group 69
+ group69@example.com
+
+
+ 20000000-0000-0000-0000-000000000070
+ 20000000-0000-0000-0000-000000000070
+ group70
+ Group 70
+ group70@example.com
+
+
+ 20000000-0000-0000-0000-000000000071
+ 20000000-0000-0000-0000-000000000071
+ group71
+ Group 71
+ group71@example.com
+
+
+ 20000000-0000-0000-0000-000000000072
+ 20000000-0000-0000-0000-000000000072
+ group72
+ Group 72
+ group72@example.com
+
+
+ 20000000-0000-0000-0000-000000000073
+ 20000000-0000-0000-0000-000000000073
+ group73
+ Group 73
+ group73@example.com
+
+
+ 20000000-0000-0000-0000-000000000074
+ 20000000-0000-0000-0000-000000000074
+ group74
+ Group 74
+ group74@example.com
+
+
+ 20000000-0000-0000-0000-000000000075
+ 20000000-0000-0000-0000-000000000075
+ group75
+ Group 75
+ group75@example.com
+
+
+ 20000000-0000-0000-0000-000000000076
+ 20000000-0000-0000-0000-000000000076
+ group76
+ Group 76
+ group76@example.com
+
+
+ 20000000-0000-0000-0000-000000000077
+ 20000000-0000-0000-0000-000000000077
+ group77
+ Group 77
+ group77@example.com
+
+
+ 20000000-0000-0000-0000-000000000078
+ 20000000-0000-0000-0000-000000000078
+ group78
+ Group 78
+ group78@example.com
+
+
+ 20000000-0000-0000-0000-000000000079
+ 20000000-0000-0000-0000-000000000079
+ group79
+ Group 79
+ group79@example.com
+
+
+ 20000000-0000-0000-0000-000000000080
+ 20000000-0000-0000-0000-000000000080
+ group80
+ Group 80
+ group80@example.com
+
+
+ 20000000-0000-0000-0000-000000000081
+ 20000000-0000-0000-0000-000000000081
+ group81
+ Group 81
+ group81@example.com
+
+
+ 20000000-0000-0000-0000-000000000082
+ 20000000-0000-0000-0000-000000000082
+ group82
+ Group 82
+ group82@example.com
+
+
+ 20000000-0000-0000-0000-000000000083
+ 20000000-0000-0000-0000-000000000083
+ group83
+ Group 83
+ group83@example.com
+
+
+ 20000000-0000-0000-0000-000000000084
+ 20000000-0000-0000-0000-000000000084
+ group84
+ Group 84
+ group84@example.com
+
+
+ 20000000-0000-0000-0000-000000000085
+ 20000000-0000-0000-0000-000000000085
+ group85
+ Group 85
+ group85@example.com
+
+
+ 20000000-0000-0000-0000-000000000086
+ 20000000-0000-0000-0000-000000000086
+ group86
+ Group 86
+ group86@example.com
+
+
+ 20000000-0000-0000-0000-000000000087
+ 20000000-0000-0000-0000-000000000087
+ group87
+ Group 87
+ group87@example.com
+
+
+ 20000000-0000-0000-0000-000000000088
+ 20000000-0000-0000-0000-000000000088
+ group88
+ Group 88
+ group88@example.com
+
+
+ 20000000-0000-0000-0000-000000000089
+ 20000000-0000-0000-0000-000000000089
+ group89
+ Group 89
+ group89@example.com
+
+
+ 20000000-0000-0000-0000-000000000090
+ 20000000-0000-0000-0000-000000000090
+ group90
+ Group 90
+ group90@example.com
+
+
+ 20000000-0000-0000-0000-000000000091
+ 20000000-0000-0000-0000-000000000091
+ group91
+ Group 91
+ group91@example.com
+
+
+ 20000000-0000-0000-0000-000000000092
+ 20000000-0000-0000-0000-000000000092
+ group92
+ Group 92
+ group92@example.com
+
+
+ 20000000-0000-0000-0000-000000000093
+ 20000000-0000-0000-0000-000000000093
+ group93
+ Group 93
+ group93@example.com
+
+
+ 20000000-0000-0000-0000-000000000094
+ 20000000-0000-0000-0000-000000000094
+ group94
+ Group 94
+ group94@example.com
+
+
+ 20000000-0000-0000-0000-000000000095
+ 20000000-0000-0000-0000-000000000095
+ group95
+ Group 95
+ group95@example.com
+
+
+ 20000000-0000-0000-0000-000000000096
+ 20000000-0000-0000-0000-000000000096
+ group96
+ Group 96
+ group96@example.com
+
+
+ 20000000-0000-0000-0000-000000000097
+ 20000000-0000-0000-0000-000000000097
+ group97
+ Group 97
+ group97@example.com
+
+
+ 20000000-0000-0000-0000-000000000098
+ 20000000-0000-0000-0000-000000000098
+ group98
+ Group 98
+ group98@example.com
+
+
+ 20000000-0000-0000-0000-000000000099
+ 20000000-0000-0000-0000-000000000099
+ group99
+ Group 99
+ group99@example.com
+
+
+ 20000000-0000-0000-0000-000000000100
+ 20000000-0000-0000-0000-000000000100
+ group100
+ Group 100
+ group100@example.com
+
+
diff --git a/contrib/docker/samples/xml/conf/augments-test.xml b/contrib/docker/samples/xml/conf/augments-test.xml
new file mode 100644
index 000000000..bd579e825
--- /dev/null
+++ b/contrib/docker/samples/xml/conf/augments-test.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+ Default
+ true
+ true
+
+
+ Location-Default
+ true
+ true
+ automatic
+
+
+ Resource-Default
+ true
+ true
+ automatic
+
+
+ 40000000-0000-0000-0000-000000000005
+ true
+ true
+ none
+
+
+ 40000000-0000-0000-0000-000000000006
+ true
+ true
+ accept-always
+
+
+ 40000000-0000-0000-0000-000000000007
+ true
+ true
+ decline-always
+
+
+ 40000000-0000-0000-0000-000000000008
+ true
+ true
+ accept-if-free
+
+
+ 40000000-0000-0000-0000-000000000009
+ true
+ true
+ decline-if-busy
+
+
+ 40000000-0000-0000-0000-000000000010
+ true
+ true
+ automatic
+
+
+ 40000000-0000-0000-0000-000000000011
+ true
+ true
+ decline-always
+ 20000000-0000-0000-0000-000000000001
+
+
diff --git a/contrib/docker/samples/xml/conf/caldavd.ext.plist b/contrib/docker/samples/xml/conf/caldavd.ext.plist
new file mode 100644
index 000000000..c0e26ef1c
--- /dev/null
+++ b/contrib/docker/samples/xml/conf/caldavd.ext.plist
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+ DirectoryService
+
+ type
+ xml
+
+ params
+
+ xmlFile
+ /etc/caldavd/accounts-test.xml
+
+
+
+
+ DirectoryRealmName
+ Test Realm
+
+
+ ResourceService
+
+ Enabled
+
+ type
+ xml
+
+ params
+
+ xmlFile
+ /etc/caldavd/resources-test.xml
+
+
+
+
+ AugmentService
+
+ type
+ xml
+
+ params
+
+ xmlFiles
+
+ /etc/caldavd/augments-test.xml
+
+
+
+
+ ProxyLoadFromFile
+ /etc/caldavd/proxies-test.xml
+
+
+
+
+
+ AdminPrincipals
+
+ /principals/__uids__/0C8BDE62-E600-4696-83D3-8B5ECABDFD2E/
+
+
+
+ ReadPrincipals
+
+
+
+
+
+ EnableProxyPrincipals
+
+
+
+
+
+
+ EnableAnonymousReadRoot
+
+
+
+ EnableAnonymousReadNav
+
+
+
+ EnablePrincipalListings
+
+
+
+ EnableMonolithicCalendars
+
+
+
+
diff --git a/contrib/docker/samples/xml/conf/proxies-test.xml b/contrib/docker/samples/xml/conf/proxies-test.xml
new file mode 100644
index 000000000..05fe0f05a
--- /dev/null
+++ b/contrib/docker/samples/xml/conf/proxies-test.xml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+ 40000000-0000-0000-0000-000000000001
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000002
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000003
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000004
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000005
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000006
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000007
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000008
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000009
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ 40000000-0000-0000-0000-000000000010
+
+ 10000000-0000-0000-0000-000000000001
+
+
+ 10000000-0000-0000-0000-000000000003
+
+
+
+ delegatedroom
+
+ 20000000-0000-0000-0000-000000000005
+
+
+
+
+
diff --git a/contrib/docker/samples/xml/conf/resources-test.xml b/contrib/docker/samples/xml/conf/resources-test.xml
new file mode 100755
index 000000000..a7edc2ea3
--- /dev/null
+++ b/contrib/docker/samples/xml/conf/resources-test.xml
@@ -0,0 +1,1253 @@
+
+
+
+
+
+
+
+
+ pretend
+ pretend
+ Pretend Conference Room
+ il1
+
+
+ il1
+ il1
+ IL1
+ 1 Infinite Loop, Cupertino, CA 95014
+ geo:37.331741,-122.030333
+
+
+ fantastic
+ fantastic
+ Fantastic Conference Room
+ il2
+
+
+ il2
+ il2
+ IL2
+ 2 Infinite Loop, Cupertino, CA 95014
+ geo:37.332633,-122.030502
+
+
+ delegatedroom
+ delegatedroom
+ Delegated Conference Room
+
+
+ 30000000-0000-0000-0000-000000000001
+ 30000000-0000-0000-0000-000000000001
+ location01
+ Location 01
+
+
+ 30000000-0000-0000-0000-000000000002
+ 30000000-0000-0000-0000-000000000002
+ location02
+ Location 02
+
+
+ 30000000-0000-0000-0000-000000000003
+ 30000000-0000-0000-0000-000000000003
+ location03
+ Location 03
+
+
+ 30000000-0000-0000-0000-000000000004
+ 30000000-0000-0000-0000-000000000004
+ location04
+ Location 04
+
+
+ 30000000-0000-0000-0000-000000000005
+ 30000000-0000-0000-0000-000000000005
+ location05
+ Location 05
+
+
+ 30000000-0000-0000-0000-000000000006
+ 30000000-0000-0000-0000-000000000006
+ location06
+ Location 06
+
+
+ 30000000-0000-0000-0000-000000000007
+ 30000000-0000-0000-0000-000000000007
+ location07
+ Location 07
+
+
+ 30000000-0000-0000-0000-000000000008
+ 30000000-0000-0000-0000-000000000008
+ location08
+ Location 08
+
+
+ 30000000-0000-0000-0000-000000000009
+ 30000000-0000-0000-0000-000000000009
+ location09
+ Location 09
+
+
+ 30000000-0000-0000-0000-000000000010
+ 30000000-0000-0000-0000-000000000010
+ location10
+ Location 10
+
+
+ 30000000-0000-0000-0000-000000000011
+ 30000000-0000-0000-0000-000000000011
+ location11
+ Location 11
+
+
+ 30000000-0000-0000-0000-000000000012
+ 30000000-0000-0000-0000-000000000012
+ location12
+ Location 12
+
+
+ 30000000-0000-0000-0000-000000000013
+ 30000000-0000-0000-0000-000000000013
+ location13
+ Location 13
+
+
+ 30000000-0000-0000-0000-000000000014
+ 30000000-0000-0000-0000-000000000014
+ location14
+ Location 14
+
+
+ 30000000-0000-0000-0000-000000000015
+ 30000000-0000-0000-0000-000000000015
+ location15
+ Location 15
+
+
+ 30000000-0000-0000-0000-000000000016
+ 30000000-0000-0000-0000-000000000016
+ location16
+ Location 16
+
+
+ 30000000-0000-0000-0000-000000000017
+ 30000000-0000-0000-0000-000000000017
+ location17
+ Location 17
+
+
+ 30000000-0000-0000-0000-000000000018
+ 30000000-0000-0000-0000-000000000018
+ location18
+ Location 18
+
+
+ 30000000-0000-0000-0000-000000000019
+ 30000000-0000-0000-0000-000000000019
+ location19
+ Location 19
+
+
+ 30000000-0000-0000-0000-000000000020
+ 30000000-0000-0000-0000-000000000020
+ location20
+ Location 20
+
+
+ 30000000-0000-0000-0000-000000000021
+ 30000000-0000-0000-0000-000000000021
+ location21
+ Location 21
+
+
+ 30000000-0000-0000-0000-000000000022
+ 30000000-0000-0000-0000-000000000022
+ location22
+ Location 22
+
+
+ 30000000-0000-0000-0000-000000000023
+ 30000000-0000-0000-0000-000000000023
+ location23
+ Location 23
+
+
+ 30000000-0000-0000-0000-000000000024
+ 30000000-0000-0000-0000-000000000024
+ location24
+ Location 24
+
+
+ 30000000-0000-0000-0000-000000000025
+ 30000000-0000-0000-0000-000000000025
+ location25
+ Location 25
+
+
+ 30000000-0000-0000-0000-000000000026
+ 30000000-0000-0000-0000-000000000026
+ location26
+ Location 26
+
+
+ 30000000-0000-0000-0000-000000000027
+ 30000000-0000-0000-0000-000000000027
+ location27
+ Location 27
+
+
+ 30000000-0000-0000-0000-000000000028
+ 30000000-0000-0000-0000-000000000028
+ location28
+ Location 28
+
+
+ 30000000-0000-0000-0000-000000000029
+ 30000000-0000-0000-0000-000000000029
+ location29
+ Location 29
+
+
+ 30000000-0000-0000-0000-000000000030
+ 30000000-0000-0000-0000-000000000030
+ location30
+ Location 30
+
+
+ 30000000-0000-0000-0000-000000000031
+ 30000000-0000-0000-0000-000000000031
+ location31
+ Location 31
+
+
+ 30000000-0000-0000-0000-000000000032
+ 30000000-0000-0000-0000-000000000032
+ location32
+ Location 32
+
+
+ 30000000-0000-0000-0000-000000000033
+ 30000000-0000-0000-0000-000000000033
+ location33
+ Location 33
+
+
+ 30000000-0000-0000-0000-000000000034
+ 30000000-0000-0000-0000-000000000034
+ location34
+ Location 34
+
+
+ 30000000-0000-0000-0000-000000000035
+ 30000000-0000-0000-0000-000000000035
+ location35
+ Location 35
+
+
+ 30000000-0000-0000-0000-000000000036
+ 30000000-0000-0000-0000-000000000036
+ location36
+ Location 36
+
+
+ 30000000-0000-0000-0000-000000000037
+ 30000000-0000-0000-0000-000000000037
+ location37
+ Location 37
+
+
+ 30000000-0000-0000-0000-000000000038
+ 30000000-0000-0000-0000-000000000038
+ location38
+ Location 38
+
+
+ 30000000-0000-0000-0000-000000000039
+ 30000000-0000-0000-0000-000000000039
+ location39
+ Location 39
+
+
+ 30000000-0000-0000-0000-000000000040
+ 30000000-0000-0000-0000-000000000040
+ location40
+ Location 40
+
+
+ 30000000-0000-0000-0000-000000000041
+ 30000000-0000-0000-0000-000000000041
+ location41
+ Location 41
+
+
+ 30000000-0000-0000-0000-000000000042
+ 30000000-0000-0000-0000-000000000042
+ location42
+ Location 42
+
+
+ 30000000-0000-0000-0000-000000000043
+ 30000000-0000-0000-0000-000000000043
+ location43
+ Location 43
+
+
+ 30000000-0000-0000-0000-000000000044
+ 30000000-0000-0000-0000-000000000044
+ location44
+ Location 44
+
+
+ 30000000-0000-0000-0000-000000000045
+ 30000000-0000-0000-0000-000000000045
+ location45
+ Location 45
+
+
+ 30000000-0000-0000-0000-000000000046
+ 30000000-0000-0000-0000-000000000046
+ location46
+ Location 46
+
+
+ 30000000-0000-0000-0000-000000000047
+ 30000000-0000-0000-0000-000000000047
+ location47
+ Location 47
+
+
+ 30000000-0000-0000-0000-000000000048
+ 30000000-0000-0000-0000-000000000048
+ location48
+ Location 48
+
+
+ 30000000-0000-0000-0000-000000000049
+ 30000000-0000-0000-0000-000000000049
+ location49
+ Location 49
+
+
+ 30000000-0000-0000-0000-000000000050
+ 30000000-0000-0000-0000-000000000050
+ location50
+ Location 50
+
+
+ 30000000-0000-0000-0000-000000000051
+ 30000000-0000-0000-0000-000000000051
+ location51
+ Location 51
+
+
+ 30000000-0000-0000-0000-000000000052
+ 30000000-0000-0000-0000-000000000052
+ location52
+ Location 52
+
+
+ 30000000-0000-0000-0000-000000000053
+ 30000000-0000-0000-0000-000000000053
+ location53
+ Location 53
+
+
+ 30000000-0000-0000-0000-000000000054
+ 30000000-0000-0000-0000-000000000054
+ location54
+ Location 54
+
+
+ 30000000-0000-0000-0000-000000000055
+ 30000000-0000-0000-0000-000000000055
+ location55
+ Location 55
+
+
+ 30000000-0000-0000-0000-000000000056
+ 30000000-0000-0000-0000-000000000056
+ location56
+ Location 56
+
+
+ 30000000-0000-0000-0000-000000000057
+ 30000000-0000-0000-0000-000000000057
+ location57
+ Location 57
+
+
+ 30000000-0000-0000-0000-000000000058
+ 30000000-0000-0000-0000-000000000058
+ location58
+ Location 58
+
+
+ 30000000-0000-0000-0000-000000000059
+ 30000000-0000-0000-0000-000000000059
+ location59
+ Location 59
+
+
+ 30000000-0000-0000-0000-000000000060
+ 30000000-0000-0000-0000-000000000060
+ location60
+ Location 60
+
+
+ 30000000-0000-0000-0000-000000000061
+ 30000000-0000-0000-0000-000000000061
+ location61
+ Location 61
+
+
+ 30000000-0000-0000-0000-000000000062
+ 30000000-0000-0000-0000-000000000062
+ location62
+ Location 62
+
+
+ 30000000-0000-0000-0000-000000000063
+ 30000000-0000-0000-0000-000000000063
+ location63
+ Location 63
+
+
+ 30000000-0000-0000-0000-000000000064
+ 30000000-0000-0000-0000-000000000064
+ location64
+ Location 64
+
+
+ 30000000-0000-0000-0000-000000000065
+ 30000000-0000-0000-0000-000000000065
+ location65
+ Location 65
+
+
+ 30000000-0000-0000-0000-000000000066
+ 30000000-0000-0000-0000-000000000066
+ location66
+ Location 66
+
+
+ 30000000-0000-0000-0000-000000000067
+ 30000000-0000-0000-0000-000000000067
+ location67
+ Location 67
+
+
+ 30000000-0000-0000-0000-000000000068
+ 30000000-0000-0000-0000-000000000068
+ location68
+ Location 68
+
+
+ 30000000-0000-0000-0000-000000000069
+ 30000000-0000-0000-0000-000000000069
+ location69
+ Location 69
+
+
+ 30000000-0000-0000-0000-000000000070
+ 30000000-0000-0000-0000-000000000070
+ location70
+ Location 70
+
+
+ 30000000-0000-0000-0000-000000000071
+ 30000000-0000-0000-0000-000000000071
+ location71
+ Location 71
+
+
+ 30000000-0000-0000-0000-000000000072
+ 30000000-0000-0000-0000-000000000072
+ location72
+ Location 72
+
+
+ 30000000-0000-0000-0000-000000000073
+ 30000000-0000-0000-0000-000000000073
+ location73
+ Location 73
+
+
+ 30000000-0000-0000-0000-000000000074
+ 30000000-0000-0000-0000-000000000074
+ location74
+ Location 74
+
+
+ 30000000-0000-0000-0000-000000000075
+ 30000000-0000-0000-0000-000000000075
+ location75
+ Location 75
+
+
+ 30000000-0000-0000-0000-000000000076
+ 30000000-0000-0000-0000-000000000076
+ location76
+ Location 76
+
+
+ 30000000-0000-0000-0000-000000000077
+ 30000000-0000-0000-0000-000000000077
+ location77
+ Location 77
+
+
+ 30000000-0000-0000-0000-000000000078
+ 30000000-0000-0000-0000-000000000078
+ location78
+ Location 78
+
+
+ 30000000-0000-0000-0000-000000000079
+ 30000000-0000-0000-0000-000000000079
+ location79
+ Location 79
+
+
+ 30000000-0000-0000-0000-000000000080
+ 30000000-0000-0000-0000-000000000080
+ location80
+ Location 80
+
+
+ 30000000-0000-0000-0000-000000000081
+ 30000000-0000-0000-0000-000000000081
+ location81
+ Location 81
+
+
+ 30000000-0000-0000-0000-000000000082
+ 30000000-0000-0000-0000-000000000082
+ location82
+ Location 82
+
+
+ 30000000-0000-0000-0000-000000000083
+ 30000000-0000-0000-0000-000000000083
+ location83
+ Location 83
+
+
+ 30000000-0000-0000-0000-000000000084
+ 30000000-0000-0000-0000-000000000084
+ location84
+ Location 84
+
+
+ 30000000-0000-0000-0000-000000000085
+ 30000000-0000-0000-0000-000000000085
+ location85
+ Location 85
+
+
+ 30000000-0000-0000-0000-000000000086
+ 30000000-0000-0000-0000-000000000086
+ location86
+ Location 86
+
+
+ 30000000-0000-0000-0000-000000000087
+ 30000000-0000-0000-0000-000000000087
+ location87
+ Location 87
+
+
+ 30000000-0000-0000-0000-000000000088
+ 30000000-0000-0000-0000-000000000088
+ location88
+ Location 88
+
+
+ 30000000-0000-0000-0000-000000000089
+ 30000000-0000-0000-0000-000000000089
+ location89
+ Location 89
+
+
+ 30000000-0000-0000-0000-000000000090
+ 30000000-0000-0000-0000-000000000090
+ location90
+ Location 90
+
+
+ 30000000-0000-0000-0000-000000000091
+ 30000000-0000-0000-0000-000000000091
+ location91
+ Location 91
+
+
+ 30000000-0000-0000-0000-000000000092
+ 30000000-0000-0000-0000-000000000092
+ location92
+ Location 92
+
+
+ 30000000-0000-0000-0000-000000000093
+ 30000000-0000-0000-0000-000000000093
+ location93
+ Location 93
+
+
+ 30000000-0000-0000-0000-000000000094
+ 30000000-0000-0000-0000-000000000094
+ location94
+ Location 94
+
+
+ 30000000-0000-0000-0000-000000000095
+ 30000000-0000-0000-0000-000000000095
+ location95
+ Location 95
+
+
+ 30000000-0000-0000-0000-000000000096
+ 30000000-0000-0000-0000-000000000096
+ location96
+ Location 96
+
+
+ 30000000-0000-0000-0000-000000000097
+ 30000000-0000-0000-0000-000000000097
+ location97
+ Location 97
+
+
+ 30000000-0000-0000-0000-000000000098
+ 30000000-0000-0000-0000-000000000098
+ location98
+ Location 98
+
+
+ 30000000-0000-0000-0000-000000000099
+ 30000000-0000-0000-0000-000000000099
+ location99
+ Location 99
+
+
+ 30000000-0000-0000-0000-000000000100
+ 30000000-0000-0000-0000-000000000100
+ location100
+ Location 100
+
+
+ 40000000-0000-0000-0000-000000000001
+ 40000000-0000-0000-0000-000000000001
+ resource01
+ Resource 01
+
+
+ 40000000-0000-0000-0000-000000000002
+ 40000000-0000-0000-0000-000000000002
+ resource02
+ Resource 02
+
+
+ 40000000-0000-0000-0000-000000000003
+ 40000000-0000-0000-0000-000000000003
+ resource03
+ Resource 03
+
+
+ 40000000-0000-0000-0000-000000000004
+ 40000000-0000-0000-0000-000000000004
+ resource04
+ Resource 04
+
+
+ 40000000-0000-0000-0000-000000000005
+ 40000000-0000-0000-0000-000000000005
+ resource05
+ Resource 05
+
+
+ 40000000-0000-0000-0000-000000000006
+ 40000000-0000-0000-0000-000000000006
+ resource06
+ Resource 06
+
+
+ 40000000-0000-0000-0000-000000000007
+ 40000000-0000-0000-0000-000000000007
+ resource07
+ Resource 07
+
+
+ 40000000-0000-0000-0000-000000000008
+ 40000000-0000-0000-0000-000000000008
+ resource08
+ Resource 08
+
+
+ 40000000-0000-0000-0000-000000000009
+ 40000000-0000-0000-0000-000000000009
+ resource09
+ Resource 09
+
+
+ 40000000-0000-0000-0000-000000000010
+ 40000000-0000-0000-0000-000000000010
+ resource10
+ Resource 10
+
+
+ 40000000-0000-0000-0000-000000000011
+ 40000000-0000-0000-0000-000000000011
+ resource11
+ Resource 11
+
+
+ 40000000-0000-0000-0000-000000000012
+ 40000000-0000-0000-0000-000000000012
+ resource12
+ Resource 12
+
+
+ 40000000-0000-0000-0000-000000000013
+ 40000000-0000-0000-0000-000000000013
+ resource13
+ Resource 13
+
+
+ 40000000-0000-0000-0000-000000000014
+ 40000000-0000-0000-0000-000000000014
+ resource14
+ Resource 14
+
+
+ 40000000-0000-0000-0000-000000000015
+ 40000000-0000-0000-0000-000000000015
+ resource15
+ Resource 15
+
+
+ 40000000-0000-0000-0000-000000000016
+ 40000000-0000-0000-0000-000000000016
+ resource16
+ Resource 16
+
+
+ 40000000-0000-0000-0000-000000000017
+ 40000000-0000-0000-0000-000000000017
+ resource17
+ Resource 17
+
+
+ 40000000-0000-0000-0000-000000000018
+ 40000000-0000-0000-0000-000000000018
+ resource18
+ Resource 18
+
+
+ 40000000-0000-0000-0000-000000000019
+ 40000000-0000-0000-0000-000000000019
+ resource19
+ Resource 19
+
+
+ 40000000-0000-0000-0000-000000000020
+ 40000000-0000-0000-0000-000000000020
+ resource20
+ Resource 20
+
+
+ 40000000-0000-0000-0000-000000000021
+ 40000000-0000-0000-0000-000000000021
+ resource21
+ Resource 21
+
+
+ 40000000-0000-0000-0000-000000000022
+ 40000000-0000-0000-0000-000000000022
+ resource22
+ Resource 22
+
+
+ 40000000-0000-0000-0000-000000000023
+ 40000000-0000-0000-0000-000000000023
+ resource23
+ Resource 23
+
+
+ 40000000-0000-0000-0000-000000000024
+ 40000000-0000-0000-0000-000000000024
+ resource24
+ Resource 24
+
+
+ 40000000-0000-0000-0000-000000000025
+ 40000000-0000-0000-0000-000000000025
+ resource25
+ Resource 25
+
+
+ 40000000-0000-0000-0000-000000000026
+ 40000000-0000-0000-0000-000000000026
+ resource26
+ Resource 26
+
+
+ 40000000-0000-0000-0000-000000000027
+ 40000000-0000-0000-0000-000000000027
+ resource27
+ Resource 27
+
+
+ 40000000-0000-0000-0000-000000000028
+ 40000000-0000-0000-0000-000000000028
+ resource28
+ Resource 28
+
+
+ 40000000-0000-0000-0000-000000000029
+ 40000000-0000-0000-0000-000000000029
+ resource29
+ Resource 29
+
+
+ 40000000-0000-0000-0000-000000000030
+ 40000000-0000-0000-0000-000000000030
+ resource30
+ Resource 30
+
+
+ 40000000-0000-0000-0000-000000000031
+ 40000000-0000-0000-0000-000000000031
+ resource31
+ Resource 31
+
+
+ 40000000-0000-0000-0000-000000000032
+ 40000000-0000-0000-0000-000000000032
+ resource32
+ Resource 32
+
+
+ 40000000-0000-0000-0000-000000000033
+ 40000000-0000-0000-0000-000000000033
+ resource33
+ Resource 33
+
+
+ 40000000-0000-0000-0000-000000000034
+ 40000000-0000-0000-0000-000000000034
+ resource34
+ Resource 34
+
+
+ 40000000-0000-0000-0000-000000000035
+ 40000000-0000-0000-0000-000000000035
+ resource35
+ Resource 35
+
+
+ 40000000-0000-0000-0000-000000000036
+ 40000000-0000-0000-0000-000000000036
+ resource36
+ Resource 36
+
+
+ 40000000-0000-0000-0000-000000000037
+ 40000000-0000-0000-0000-000000000037
+ resource37
+ Resource 37
+
+
+ 40000000-0000-0000-0000-000000000038
+ 40000000-0000-0000-0000-000000000038
+ resource38
+ Resource 38
+
+
+ 40000000-0000-0000-0000-000000000039
+ 40000000-0000-0000-0000-000000000039
+ resource39
+ Resource 39
+
+
+ 40000000-0000-0000-0000-000000000040
+ 40000000-0000-0000-0000-000000000040
+ resource40
+ Resource 40
+
+
+ 40000000-0000-0000-0000-000000000041
+ 40000000-0000-0000-0000-000000000041
+ resource41
+ Resource 41
+
+
+ 40000000-0000-0000-0000-000000000042
+ 40000000-0000-0000-0000-000000000042
+ resource42
+ Resource 42
+
+
+ 40000000-0000-0000-0000-000000000043
+ 40000000-0000-0000-0000-000000000043
+ resource43
+ Resource 43
+
+
+ 40000000-0000-0000-0000-000000000044
+ 40000000-0000-0000-0000-000000000044
+ resource44
+ Resource 44
+
+
+ 40000000-0000-0000-0000-000000000045
+ 40000000-0000-0000-0000-000000000045
+ resource45
+ Resource 45
+
+
+ 40000000-0000-0000-0000-000000000046
+ 40000000-0000-0000-0000-000000000046
+ resource46
+ Resource 46
+
+
+ 40000000-0000-0000-0000-000000000047
+ 40000000-0000-0000-0000-000000000047
+ resource47
+ Resource 47
+
+
+ 40000000-0000-0000-0000-000000000048
+ 40000000-0000-0000-0000-000000000048
+ resource48
+ Resource 48
+
+
+ 40000000-0000-0000-0000-000000000049
+ 40000000-0000-0000-0000-000000000049
+ resource49
+ Resource 49
+
+
+ 40000000-0000-0000-0000-000000000050
+ 40000000-0000-0000-0000-000000000050
+ resource50
+ Resource 50
+
+
+ 40000000-0000-0000-0000-000000000051
+ 40000000-0000-0000-0000-000000000051
+ resource51
+ Resource 51
+
+
+ 40000000-0000-0000-0000-000000000052
+ 40000000-0000-0000-0000-000000000052
+ resource52
+ Resource 52
+
+
+ 40000000-0000-0000-0000-000000000053
+ 40000000-0000-0000-0000-000000000053
+ resource53
+ Resource 53
+
+
+ 40000000-0000-0000-0000-000000000054
+ 40000000-0000-0000-0000-000000000054
+ resource54
+ Resource 54
+
+
+ 40000000-0000-0000-0000-000000000055
+ 40000000-0000-0000-0000-000000000055
+ resource55
+ Resource 55
+
+
+ 40000000-0000-0000-0000-000000000056
+ 40000000-0000-0000-0000-000000000056
+ resource56
+ Resource 56
+
+
+ 40000000-0000-0000-0000-000000000057
+ 40000000-0000-0000-0000-000000000057
+ resource57
+ Resource 57
+
+
+ 40000000-0000-0000-0000-000000000058
+ 40000000-0000-0000-0000-000000000058
+ resource58
+ Resource 58
+
+
+ 40000000-0000-0000-0000-000000000059
+ 40000000-0000-0000-0000-000000000059
+ resource59
+ Resource 59
+
+
+ 40000000-0000-0000-0000-000000000060
+ 40000000-0000-0000-0000-000000000060
+ resource60
+ Resource 60
+
+
+ 40000000-0000-0000-0000-000000000061
+ 40000000-0000-0000-0000-000000000061
+ resource61
+ Resource 61
+
+
+ 40000000-0000-0000-0000-000000000062
+ 40000000-0000-0000-0000-000000000062
+ resource62
+ Resource 62
+
+
+ 40000000-0000-0000-0000-000000000063
+ 40000000-0000-0000-0000-000000000063
+ resource63
+ Resource 63
+
+
+ 40000000-0000-0000-0000-000000000064
+ 40000000-0000-0000-0000-000000000064
+ resource64
+ Resource 64
+
+
+ 40000000-0000-0000-0000-000000000065
+ 40000000-0000-0000-0000-000000000065
+ resource65
+ Resource 65
+
+
+ 40000000-0000-0000-0000-000000000066
+ 40000000-0000-0000-0000-000000000066
+ resource66
+ Resource 66
+
+
+ 40000000-0000-0000-0000-000000000067
+ 40000000-0000-0000-0000-000000000067
+ resource67
+ Resource 67
+
+
+ 40000000-0000-0000-0000-000000000068
+ 40000000-0000-0000-0000-000000000068
+ resource68
+ Resource 68
+
+
+ 40000000-0000-0000-0000-000000000069
+ 40000000-0000-0000-0000-000000000069
+ resource69
+ Resource 69
+
+
+ 40000000-0000-0000-0000-000000000070
+ 40000000-0000-0000-0000-000000000070
+ resource70
+ Resource 70
+
+
+ 40000000-0000-0000-0000-000000000071
+ 40000000-0000-0000-0000-000000000071
+ resource71
+ Resource 71
+
+
+ 40000000-0000-0000-0000-000000000072
+ 40000000-0000-0000-0000-000000000072
+ resource72
+ Resource 72
+
+
+ 40000000-0000-0000-0000-000000000073
+ 40000000-0000-0000-0000-000000000073
+ resource73
+ Resource 73
+
+
+ 40000000-0000-0000-0000-000000000074
+ 40000000-0000-0000-0000-000000000074
+ resource74
+ Resource 74
+
+
+ 40000000-0000-0000-0000-000000000075
+ 40000000-0000-0000-0000-000000000075
+ resource75
+ Resource 75
+
+
+ 40000000-0000-0000-0000-000000000076
+ 40000000-0000-0000-0000-000000000076
+ resource76
+ Resource 76
+
+
+ 40000000-0000-0000-0000-000000000077
+ 40000000-0000-0000-0000-000000000077
+ resource77
+ Resource 77
+
+
+ 40000000-0000-0000-0000-000000000078
+ 40000000-0000-0000-0000-000000000078
+ resource78
+ Resource 78
+
+
+ 40000000-0000-0000-0000-000000000079
+ 40000000-0000-0000-0000-000000000079
+ resource79
+ Resource 79
+
+
+ 40000000-0000-0000-0000-000000000080
+ 40000000-0000-0000-0000-000000000080
+ resource80
+ Resource 80
+
+
+ 40000000-0000-0000-0000-000000000081
+ 40000000-0000-0000-0000-000000000081
+ resource81
+ Resource 81
+
+
+ 40000000-0000-0000-0000-000000000082
+ 40000000-0000-0000-0000-000000000082
+ resource82
+ Resource 82
+
+
+ 40000000-0000-0000-0000-000000000083
+ 40000000-0000-0000-0000-000000000083
+ resource83
+ Resource 83
+
+
+ 40000000-0000-0000-0000-000000000084
+ 40000000-0000-0000-0000-000000000084
+ resource84
+ Resource 84
+
+
+ 40000000-0000-0000-0000-000000000085
+ 40000000-0000-0000-0000-000000000085
+ resource85
+ Resource 85
+
+
+ 40000000-0000-0000-0000-000000000086
+ 40000000-0000-0000-0000-000000000086
+ resource86
+ Resource 86
+
+
+ 40000000-0000-0000-0000-000000000087
+ 40000000-0000-0000-0000-000000000087
+ resource87
+ Resource 87
+
+
+ 40000000-0000-0000-0000-000000000088
+ 40000000-0000-0000-0000-000000000088
+ resource88
+ Resource 88
+
+
+ 40000000-0000-0000-0000-000000000089
+ 40000000-0000-0000-0000-000000000089
+ resource89
+ Resource 89
+
+
+ 40000000-0000-0000-0000-000000000090
+ 40000000-0000-0000-0000-000000000090
+ resource90
+ Resource 90
+
+
+ 40000000-0000-0000-0000-000000000091
+ 40000000-0000-0000-0000-000000000091
+ resource91
+ Resource 91
+
+
+ 40000000-0000-0000-0000-000000000092
+ 40000000-0000-0000-0000-000000000092
+ resource92
+ Resource 92
+
+
+ 40000000-0000-0000-0000-000000000093
+ 40000000-0000-0000-0000-000000000093
+ resource93
+ Resource 93
+
+
+ 40000000-0000-0000-0000-000000000094
+ 40000000-0000-0000-0000-000000000094
+ resource94
+ Resource 94
+
+
+ 40000000-0000-0000-0000-000000000095
+ 40000000-0000-0000-0000-000000000095
+ resource95
+ Resource 95
+
+
+ 40000000-0000-0000-0000-000000000096
+ 40000000-0000-0000-0000-000000000096
+ resource96
+ Resource 96
+
+
+ 40000000-0000-0000-0000-000000000097
+ 40000000-0000-0000-0000-000000000097
+ resource97
+ Resource 97
+
+
+ 40000000-0000-0000-0000-000000000098
+ 40000000-0000-0000-0000-000000000098
+ resource98
+ Resource 98
+
+
+ 40000000-0000-0000-0000-000000000099
+ 40000000-0000-0000-0000-000000000099
+ resource99
+ Resource 99
+
+
+ 40000000-0000-0000-0000-000000000100
+ 40000000-0000-0000-0000-000000000100
+ resource100
+ Resource 100
+
+
diff --git a/contrib/docker/samples/xml/docker-compose.yml b/contrib/docker/samples/xml/docker-compose.yml
new file mode 100644
index 000000000..0ca3ab24c
--- /dev/null
+++ b/contrib/docker/samples/xml/docker-compose.yml
@@ -0,0 +1,58 @@
+
+version: "3.3"
+
+configs:
+ sql_seed:
+ file: ../../../../txdav/common/datastore/sql_schema/current.sql
+
+services:
+ ccs:
+ image: giorgioazzinnaro/ccs-calendarserver
+ environment:
+ POSTGRES_HOST: 'tcp:postgres:5432'
+ POSTGRES_DB: ccs
+ POSTGRES_USER: caldavd
+ POSTGRES_PASS: test1234
+ MEMCACHED_HOST: memcached
+ MEMCACHED_PORT: 11211
+ volumes:
+ - ccsdata:/var/db/caldavd
+ - ./conf:/etc/caldavd
+ networks:
+ - ccsnet
+ ports:
+ - "8080:8080"
+ depends_on:
+ - postgres
+ - memcached
+ restart: always
+
+ postgres:
+ image: postgres
+ restart: always
+ environment:
+ POSTGRES_DB: ccs
+ POSTGRES_USER: caldavd
+ POSTGRES_PASSWORD: test1234
+ volumes:
+ - "postgresdata:/var/lib/postgresql/data"
+ configs:
+ - source: sql_seed
+ target: /docker-entrypoint-initdb.d/ccs.sql
+ networks:
+ - ccsnet
+
+ memcached:
+ image: memcached:1.5
+ networks:
+ - ccsnet
+
+
+volumes:
+ postgresdata:
+ ccsdata:
+ ccsconf:
+
+
+networks:
+ ccsnet:
\ No newline at end of file