www/calendarserver: Calendar and Contacts Server from Apple (RFC 4791, RFC 6352)

The open source Calendar and Contacts Server project is a standards-compliant
server implementing the CalDAV and CardDAV protocols (RFC 4791, RFC 6352).
It provides a shared location on the network allowing multiple users to store
and edit calendaring and contact information.

WWW: http://www.calendarserver.org

PR:		186201 (with changes)
Submitted by:	Axel.Rau Chaos1 de
This commit is contained in:
William Grzybowski 2014-09-20 15:19:34 +00:00
parent e15f89dbb4
commit e74eb13366
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=368648
10 changed files with 383 additions and 0 deletions

1
GIDs
View File

@ -202,6 +202,7 @@ _xsi:*:600:
_tss:*:601:
_pkcs11:*:602:
freeswitch:*:610:
caldavd:*:639:639:
monkeysphere:*:641:
aox:*:666:
riak:*:667:

1
UIDs
View File

@ -206,6 +206,7 @@ _tss:*:601:601:daemon:0:0:TrouSerS user:/var/empty:/usr/sbin/nologin
_pkcs11:*:602:602:daemon:0:0:opencryptoki user:/var/empty:/usr/sbin/nologin
freeswitch:*:610:610::0:0:Freeswitch user:/nonexistent:/usr/sbin/nologin
_pla:*:636:80::0:0:phpLDAPAdmin Owner:/nonexistent:/usr/sbin/nologin
caldavd:*:639:639::0:0:Caldavd user:/var/db/caldavd:/usr/sbin/nologin
monkeysphere:*:641:641::0:0:Monkeysphere User:/var/monkeysphere:/usr/local/bin/bash
aox:*:666:666::0:0:Archiveopteryx user:/nonexistent:/usr/sbin/nologin
riak:*:667:667::0:0:Riak user:/usr/local/lib/riak:/bin/sh

View File

@ -62,6 +62,7 @@
SUBDIR += cakephp22
SUBDIR += cakephp23
SUBDIR += calamaris
SUBDIR += calendarserver
SUBDIR += castget
SUBDIR += caudium14
SUBDIR += cblog

100
www/calendarserver/Makefile Normal file
View File

@ -0,0 +1,100 @@
# $FreeBSD$
PORTNAME= calendarserver
PORTVERSION= 5.1
CATEGORIES= www python
MASTER_SITES= https://svn.calendarserver.org/repository/calendarserver/CalendarServer/tags/release/
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
DISTNAME= CalendarServer-${PORTVERSION}
MAINTAINER= axel.rau@chaos1.de
COMMENT= Calendar and Contacts Server from Apple (RFC 4791, RFC 6352)
LICENSE= APACHE20
FETCH_DEPENDS= svn:${PORTSDIR}/devel/subversion
BUILD_DEPENDS= ${FETCH_DEPENDS}
RUN_DEPENDS= bash:${PORTSDIR}/shells/bash \
memcached:${PORTSDIR}/databases/memcached \
${PYTHON_PKGNAMEPREFIX}pycrypto>=2.5:${PORTSDIR}/security/py-pycrypto \
${PYTHON_PKGNAMEPREFIX}dateutil>=2.1:${PORTSDIR}/devel/py-dateutil \
${PYTHON_PKGNAMEPREFIX}openssl>=0.13:${PORTSDIR}/security/py-openssl \
${PYTHON_PKGNAMEPREFIX}psutil>=1.2:${PORTSDIR}/sysutils/py-psutil \
${PYTHON_PKGNAMEPREFIX}PyGreSQL>=4.1:${PORTSDIR}/databases/py-PyGreSQL \
${PYTHON_PKGNAMEPREFIX}sqlite3>=2.7:${PORTSDIR}/databases/py-sqlite3 \
${PYTHON_PKGNAMEPREFIX}sqlparse>=0.1:${PORTSDIR}/databases/py-sqlparse \
${PYTHON_PKGNAMEPREFIX}xattr>=0.6:${PORTSDIR}/devel/py-xattr \
${PYTHON_PKGNAMEPREFIX}zope.interface>=3.8:${PORTSDIR}/devel/py-zope.interface
OPTIONS_DEFINE= EXAMPLES DOCS
EXAMPLES_DESC= Install configuration examples
DOCS_DESC= Install additional documentation
NEED_ROOT= yes
USES= shebangfix pgsql:9.0+ python twisted:run,conch,mail,names,runner,web,words
USE_PYTHON= autoplist distutils
SUB_FILES= pkg-message
SUB_LIST+= USER=${USERS}
SHEBANG_FILES=\
${WRKSRC}/calendarserver/tools/backup_pg.py \
${WRKSRC}/calendarserver/tools/backup.py \
${WRKSRC}/twext/python/test/pullpipe.py
USE_RC_SUBR= caldavd
SVN_REPOSITORY_URL= http://svn.calendarserver.org/repository/calendarserver
SVN_TAG1= CalendarServer/tags/release/${DISTNAME}
SVN_CMD1= svn export
SVN_TAG2= PyCalendar/trunk
SVN_CMD2= svn export -r11458
LOGDIR= /var/log/caldavd
SHAREDIR= ${PREFIX}/share/caldavd
ETCDIR= ${PREFIX}/etc/caldavd
CALDAVD_USER= caldavd
USERS= ${CALDAVD_USER}
GROUPS= ${CALDAVD_USER}
do-fetch:
@if [ ! -f "${DISTDIR}/${DISTNAME}${EXTRACT_SUFX}" ] ; then \
${MKDIR} ${WRKDIR} ; cd ${WRKDIR} ; ${RM} -Rf ${WRKDIR}/${DISTNAME} ; \
${ECHO_MSG} "=> Checking out CalendarServer from svn.calendarserver.org/..."; \
${SVN_CMD1} ${SVN_REPOSITORY_URL}/${SVN_TAG1} > /dev/null ; \
${ECHO_MSG} "=> Checking out PyCalendar from svn.calendarserver.org/..."; \
cd ${WRKDIR}/${DISTNAME} ; ${SVN_CMD2} ${SVN_REPOSITORY_URL}/${SVN_TAG2} > /dev/null ; \
${MV} trunk/src/* . ; \
${ECHO_MSG} "=> Creating tar archive ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX}"; \
cd ${WRKDIR} ; tar -czf ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX} ${DISTNAME} ; \
${RM} -Rf ${WRKDIR}/${DISTNAME} ; \
else \
${ECHO_MSG} "===> ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX} found." ; \
fi
post-patch:
@${REINPLACE_CMD} -e 's|"{number} ({info})".format(number=version_number, info=version_info)|"5.1"|' ${WRKSRC}/setup.py
@${REINPLACE_CMD} -e 's|distutils.core|setuptools|g' ${WRKSRC}/setup.py
@${REINPLACE_CMD} -e 's|bin/bash|usr/bin/env bash|' ${WRKSRC}/bin/caldavd
@${REINPLACE_CMD} -e 's|/usr/bin|${LOCALBASE}/bin|g' ${WRKSRC}/calendarserver/tools/bootstrapdatabase.py
@${REINPLACE_CMD} -e 's|"/etc/caldavd/caldavd.plist"|"${ETCDIR}/caldavd.plist"|g' ${WRKSRC}/twistedcaldav/stdconfig.py
@${REINPLACE_CMD} -e 's|/usr/share/caldavd/lib/python/txdav/common/datastore|${SHAREDIR}|' ${WRKSRC}/calendarserver/tools/bootstrapdatabase.py
@${REINPLACE_CMD} -e 's|"_postgres"|"pgsql"|' ${WRKSRC}/calendarserver/tools/bootstrapdatabase.py
post-install:
@${MKDIR} ${STAGEDIR}${ETCDIR}/auth
@${MKDIR} ${STAGEDIR}${ETCDIR}
(cd ${WRKSRC}/bin && ${COPYTREE_BIN} . ${STAGEDIR}${PREFIX}/bin)
${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
(cd ${WRKSRC}/conf && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR})
cd ${WRKSRC}/doc && \
for i in `ls |${GREP} -v '.8'`; do \
${MKDIR} ${STAGEDIR}${DOCSDIR}/$${i} && \
${INSTALL_MAN} ${WRKSRC}/doc/$${i}/* ${STAGEDIR}${DOCSDIR}/$${i}; done
${CP} -p ${WRKSRC}/txdav/common/datastore/sql_schema/current.sql ${STAGEDIR}${DOCSDIR}
${INSTALL_MAN} ${WRKSRC}/doc/*.8 ${STAGEDIR}${PREFIX}/man/man8
.include <bsd.port.mk>

View File

@ -0,0 +1,2 @@
SHA256 (CalendarServer-5.1.tar.gz) = d8081c9764ee03b598420b074494e09800c7ca6b751435394f9b56b4a720c70e
SIZE (CalendarServer-5.1.tar.gz) = 4106073

View File

@ -0,0 +1,40 @@
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: caldavd
# REQUIRE: DAEMON
#
# Add the following lines to /etc/rc.conf to run caldavd:
#
# caldavd_enable (bool): Set it to "YES" to enable caldavd.
# Default is "NO".
# caldavd_conf (file): Local config file.
# Default is "/usr/local/etc/caldavd.conf".
# caldavd_flags (string): Flags to pass to caldavd.
# Default is empty.
#
. /etc/rc.subr
: ${caldavd_enable="NO"}
: ${caldavd_conf="%%PREFIX%%/etc/caldavd/caldavd.plist"}
name="caldavd"
rcvar=`set_rcvar`
command="%%PREFIX%%/bin/caldavd"
command_args=" -f ${caldavd_conf} -R kqueue"
extra_commands="reload"
pidfile="/var/db/${name}/${name}.pid"
required_files="${caldavd_conf}"
stop_cmd=" if [ -f ${pidfile} ] ; then kill -TERM `cat ${pidfile}` ; else echo 'Not running.'; fi "
start_precmd="install -d -o %%USER%% /var/db/caldavd/Data/Documents /var/db/caldavd/Documents && install -d /var/log/caldavd"
reload_cmd=" if [ -f ${pidfile} ] ; then kill -HUP `cat ${pidfile}` ; else echo 'Not running.'; fi "
status_cmd=" if [ -f ${pidfile} ] ; then ps -xl `cat ${pidfile}` ; else echo 'Not running.'; fi "
load_rc_config ${name}
run_rc_command "$1"

View File

@ -0,0 +1,52 @@
Index: twext/trunk/twext/python/log.py
===================================================================
--- twext/python/log.py.orig 2013-09-17 23:08:55.000000000 +0000
+++ twext/python/log.py 2014-01-22 09:29:56.000000000 +0000
@@ -932,24 +932,29 @@
# Don't patch this module
if moduleName is __name__:
continue
-
- for name, obj in module.__dict__.iteritems():
- newLogger = Logger(namespace=module.__name__)
- legacyLogger = LegacyLogger(logger=newLogger)
-
- if obj is twisted.python.log:
- log.info("Replacing Twisted log module object {0} in {1}"
- .format(name, module.__name__))
- setattr(module, name, legacyLogger)
- elif obj is twisted.python.log.msg:
- log.info("Replacing Twisted log.msg object {0} in {1}"
- .format(name, module.__name__))
- setattr(module, name, legacyLogger.msg)
- elif obj is twisted.python.log.err:
- log.info("Replacing Twisted log.err object {0} in {1}"
- .format(name, module.__name__))
- setattr(module, name, legacyLogger.err)
-
+
+ try:
+ for name, obj in module.__dict__.iteritems():
+ newLogger = Logger(namespace=module.__name__)
+ legacyLogger = LegacyLogger(logger=newLogger)
+
+ if obj is twisted.python.log:
+ log.info("Replacing Twisted log module object {0} in {1}"
+ .format(name, module.__name__))
+ setattr(module, name, legacyLogger)
+ elif obj is twisted.python.log.msg:
+ log.info("Replacing Twisted log.msg object {0} in {1}"
+ .format(name, module.__name__))
+ setattr(module, name, legacyLogger.msg)
+ elif obj is twisted.python.log.err:
+ log.info("Replacing Twisted log.err object {0} in {1}"
+ .format(name, module.__name__))
+ setattr(module, name, legacyLogger.err)
+ except (AttributeError, RuntimeError,):
+ # Can't look up __name__. A hack in the "six" module causes
+ # this. Skip the module.
+ # See https://trac.calendarserver.org/ticket/832
+ continue
######################################################################

View File

@ -0,0 +1,47 @@
This is the core code base for the Calendar and Contacts Server,
which is a CalDAV, CardDAV, WebDAV, and HTTP server.
For general information about the server, see:
http://www.calendarserver.org/
plus online DOCs, including RFCs (if installed).
Getting Started
---------------
Before you can run the server, you need to set up a configuration file
(etc/caldavd/caldavd.plist).
If you installed the examples configuration, you could start with a test
configuration by copying and editing from
%%PREFIX%%/share/examples/calendarserver/ to %%PREFIX%%/etc/caldavd/
the files
caldavd*.plist
auth/accounts.dtd
auth/accounts.xml
auth/augments.dtd
auth/augments-test.xml
auth/proxies.dtd
auth/proxies-test.xml
You will need to choose a "directory service" to use to populate your server's
principals (users, groups and resources). A directory service provides
the Calendar and Contacts Server with information about these principals.
Some of the directory services which are supported by the Calendar and
Contacts Server include:
- XMLDirectoryService: this service is configurable via an XML file that
contains principal information. The file auth/accounts.xml provides
an example principals configuration.
- OpenDirectoryService: this service uses Apple's OpenDirectory client (which in
turn uses LDAP, Active Directory, etc.) to obtain principal information.
The above configuration uses XMLDirectoryService by default.
This is a generally useful configuration for development and testing.
This file contains a user principal, named admin, with password admin,
which is set up (in caldavd-test.plist) to have administrative permissions
on the server.
Updates from earlier versions may require a DB schema update, which is done
automatically on server start up, if <key>FailIfUpgradeNeeded</key> is set to
<true/>.

View File

@ -0,0 +1,6 @@
The open source Calendar and Contacts Server project is a standards-compliant
server implementing the CalDAV and CardDAV protocols (RFC 4791, RFC 6352).
It provides a shared location on the network allowing multiple users to store
and edit calendaring and contact information.
WWW: http://www.calendarserver.org

View File

@ -0,0 +1,133 @@
bin/_calendarserver_preamble.py
bin/calendarserver_dbinspect
bin/calendarserver_dkimtool
bin/calendarserver_icalendar_validate
bin/calendarserver_load_augmentdb
bin/calendarserver_make_partition
bin/calendarserver_manage_postgres
bin/calendarserver_monitor_amp_notifications
bin/calendarserver_monitor_notifications
bin/calendarserver_monitor_work
bin/calendarserver_verify_data
bin/icalendar_split
bin/make-ssl-ca
bin/make-ssl-key
bin/proxyclean
bin/watch_memcached
man/man8/caldavd.8.gz
man/man8/calendarserver_bootstrap_database.8.gz
man/man8/calendarserver_command_gateway.8.gz
man/man8/calendarserver_config.8.gz
man/man8/calendarserver_export.8.gz
man/man8/calendarserver_manage_principals.8.gz
man/man8/calendarserver_manage_push.8.gz
man/man8/calendarserver_manage_timezones.8.gz
man/man8/calendarserver_migrate_resources.8.gz
man/man8/calendarserver_monitor_notifications.8.gz
man/man8/calendarserver_purge_attachments.8.gz
man/man8/calendarserver_purge_events.8.gz
man/man8/calendarserver_purge_principals.8.gz
man/man8/calendarserver_shell.8.gz
%%PORTDOCS%%%%DOCSDIR%%/Admin/DirectoryService-Apache.rst
%%PORTDOCS%%%%DOCSDIR%%/Admin/DirectoryService-OpenDirectory.rst
%%PORTDOCS%%%%DOCSDIR%%/Admin/DirectoryService-XML.rst
%%PORTDOCS%%%%DOCSDIR%%/Admin/DirectoryServices.rst
%%PORTDOCS%%%%DOCSDIR%%/Admin/ExtendedLogItems.rst
%%PORTDOCS%%%%DOCSDIR%%/Admin/LoadSimulation.rst
%%PORTDOCS%%%%DOCSDIR%%/Admin/MultiServerDeployment.rst
%%PORTDOCS%%%%DOCSDIR%%/Admin/iSchedule.txt
%%PORTDOCS%%%%DOCSDIR%%/Client-Server/Principal Bootstrap.graffle.zip
%%PORTDOCS%%%%DOCSDIR%%/Client-Server/Principal Bootstrap.pdf
%%PORTDOCS%%%%DOCSDIR%%/Client-Server/calendar-client.rst
%%PORTDOCS%%%%DOCSDIR%%/Developer/Calendar Store API.graffle
%%PORTDOCS%%%%DOCSDIR%%/Developer/Calendar Store Schema.graffle
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-ctag.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-ctag.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-notifications.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-notifications.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-privatecomments.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-privatecomments.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-privateevents.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-privateevents.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-proxy.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-proxy.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-pubsubdiscovery.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-pubsubdiscovery.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-schedulingchanges.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-schedulingchanges.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-sharing.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/caldav-sharing.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/calendarserver-bulk-change.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/calendarserver-bulk-change.xml
%%PORTDOCS%%%%DOCSDIR%%/Extensions/icalendar-maskuids.txt
%%PORTDOCS%%%%DOCSDIR%%/Extensions/icalendar-maskuids.xml
%%PORTDOCS%%%%DOCSDIR%%/RFC/RFC6764-srv-CalDAV.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/RFC6868-Parameter Value Encoding.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/draft-daboo-caldav-extensions.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/draft-daboo-calendar-availability.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/draft-daboo-carddav-directory-gateway.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/draft-desruisseaux-ischedule.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc2616-HTTP.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc2617-HTTP Auth.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc3253-DeltaV.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc3283-Calendaring.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc3744-WebDAV ACL.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc4331-WebDAV Quota.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc4559-SPNEGO.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc4791-CalDAV.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc4918-WebDAV.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc5397-Current Principal.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc5545-iCalendar.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc5546-iTIP.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc5689-Extended MKCOL.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc5785-well-known-uris.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc5842-BIND.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc5995-POST addmember.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc6047-iMIP.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc6321-xCal.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc6350-vCard4.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc6351-xCard.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc6352-CardDAV.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc6578-WebDAV Sync.txt
%%PORTDOCS%%%%DOCSDIR%%/RFC/rfc6638-CalDAV-Scheduling.txt
%%PORTDOCS%%%%DOCSDIR%%/current.sql
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/accounts-test.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/accounts.dtd
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/accounts.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/augments-default.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/augments-test.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/augments.dtd
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/proxies-test.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/proxies.dtd
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/auth/resources-test.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/caldavd-apple.plist
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/caldavd-partitioning-primary.plist
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/caldavd-partitioning-secondary.plist
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/caldavd-test.plist
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/caldavd.plist
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/localservers-test.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/localservers.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mime.types
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/remoteservers-test.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/remoteservers.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/resources.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/resources/caldavd-resources.plist
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/resources/locations-resources-orig.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/resources/locations-resources.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/resources/users-groups.xml
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/servers.dtd
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/servertoserver.dtd
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sudoers.plist
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/test/accounts.xml
%%PORTEXAMPLES%%@dirrmtry %%EXAMPLESDIR%%/test
%%PORTEXAMPLES%%@dirrmtry %%EXAMPLESDIR%%/resources
%%PORTEXAMPLES%%@dirrmtry %%EXAMPLESDIR%%/auth
%%PORTEXAMPLES%%@dirrmtry %%EXAMPLESDIR%%
%%PORTDOCS%%@dirrmtry %%DOCSDIR%%/RFC
%%PORTDOCS%%@dirrmtry %%DOCSDIR%%/Extensions
%%PORTDOCS%%@dirrmtry %%DOCSDIR%%/Developer
%%PORTDOCS%%@dirrmtry %%DOCSDIR%%/Client-Server
%%PORTDOCS%%@dirrmtry %%DOCSDIR%%/Admin
%%PORTDOCS%%@dirrm %%DOCSDIR%%
@dirrmtry etc/caldavd/auth
@dirrmtry etc/caldavd