[CalendarServer-changes] [13170] CalendarServer/branches/users/sagen/move2who-4

source_changes at macosforge.org source_changes at macosforge.org
Fri Apr 4 16:10:04 PDT 2014


Revision: 13170
          http://trac.calendarserver.org//changeset/13170
Author:   gaya at apple.com
Date:     2014-04-04 16:10:03 -0700 (Fri, 04 Apr 2014)
Log Message:
-----------


Modified Paths:
--------------
    CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directorybackedaddressbook.py
    CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/method/report_addressbook_query.py
    CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/method/report_multiget_common.py
    CalendarServer/branches/users/sagen/move2who-4/txdav/who/vcard.py

Added Paths:
-----------
    CalendarServer/branches/users/sagen/move2who-4/conf/caldavd-odtest.plist

Added: CalendarServer/branches/users/sagen/move2who-4/conf/caldavd-odtest.plist
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/conf/caldavd-odtest.plist	                        (rev 0)
+++ CalendarServer/branches/users/sagen/move2who-4/conf/caldavd-odtest.plist	2014-04-04 23:10:03 UTC (rev 13170)
@@ -0,0 +1,1024 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    Copyright (c) 2006-2014 Apple Inc. All rights reserved.
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+  -->
+
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+  <dict>
+
+    <!--
+        Public network address information
+
+        This is the server's public network address, which is provided to
+        clients in URLs and the like.  It may or may not be the network
+        address that the server is listening to directly, though it is by
+        default.  For example, it may be the address of a load balancer or
+        proxy which forwards connections to the server.
+      -->
+
+    <!-- Network host name [empty = system host name] -->
+    <key>ServerHostName</key>
+    <string>localhost</string> <!-- The hostname clients use when connecting -->
+
+    <!-- Enable Calendars -->
+    <key>EnableCalDAV</key>
+    <true/>
+
+    <!-- Enable AddressBooks -->
+    <key>EnableCardDAV</key>
+    <true/>
+
+    <!-- HTTP port [0 = disable HTTP] -->
+    <key>HTTPPort</key>
+    <integer>8008</integer>
+
+    <!-- SSL port [0 = disable HTTPS] -->
+    <!-- (Must also configure SSLCertificate and SSLPrivateKey below) -->
+    <key>SSLPort</key>
+    <integer>8443</integer>
+
+    <!-- Enable listening on SSL port(s) -->
+    <key>EnableSSL</key>
+    <true/>
+
+    <!-- Redirect non-SSL ports to an SSL port (if configured for SSL) -->
+    <key>RedirectHTTPToHTTPS</key>
+    <false/>
+
+
+    <!--
+        Network address configuration information
+
+        This configures the actual network address that the server binds to.
+      -->
+
+    <!-- List of IP addresses to bind to [empty = all] -->
+    <key>BindAddresses</key>
+    <array>
+    </array>
+
+    <!-- List of port numbers to bind to for HTTP [empty = same as "Port"] -->
+    <key>BindHTTPPorts</key>
+    <array>
+        <integer>8008</integer>
+        <integer>8800</integer>
+    </array>
+
+    <!-- List of port numbers to bind to for SSL [empty = same as "SSLPort"] -->
+    <key>BindSSLPorts</key>
+    <array>
+        <integer>8443</integer>
+        <integer>8843</integer>
+    </array>
+
+
+    <!--
+        Data Store
+      -->
+
+    <!-- Server root -->
+    <key>ServerRoot</key>
+    <string>./data</string>
+
+    <!-- Database connection -->
+    <!--
+    <key>DBType</key>
+    <string>postgres</string>
+    <key>DSN</key>
+    <string>:caldav:caldav:::</string>
+     -->
+
+    <!-- Data root -->
+    <key>DataRoot</key>
+    <string>Data</string>
+
+    <!-- Database root -->
+    <key>DatabaseRoot</key>
+    <string>Database</string>
+
+    <!-- Document root -->
+    <key>DocumentRoot</key>
+    <string>Documents</string>
+
+    <!-- Configuration root -->
+    <key>ConfigRoot</key>
+    <string>./conf</string>
+
+    <!-- Run root -->
+    <key>RunRoot</key>
+    <string>Logs/state</string>
+
+    <!-- Child aliases -->
+    <key>Aliases</key>
+    <array>
+      <!--
+      <dict>
+        <key>url</key>
+        <string>/foo</string>
+        <key>path</key>
+        <string>/path/to/foo</string>
+      </dict>
+       -->
+    </array>
+
+    <!-- Don't exit if the DB needs an upgrade. -->
+    <key>FailIfUpgradeNeeded</key>
+    <false/>
+
+    <!--
+        Quotas and limits
+      -->
+
+    <!-- User quota (in bytes) [0 = no quota] applies to attachments only -->
+    <key>UserQuota</key>
+    <integer>104857600</integer><!-- 100Mb -->
+
+    <!-- Maximum number of calendars/address books allowed in a home -->
+    <!-- 0 for no limit -->
+    <key>MaxCollectionsPerHome</key>
+    <integer>50</integer>
+
+    <!-- Maximum number of resources in a calendar/address book -->
+    <!-- 0 for no limit -->
+    <key>MaxResourcesPerCollection</key>
+    <integer>10000</integer>
+
+    <!-- Maximum resource size (in bytes) -->
+    <key>MaxResourceSize</key>
+    <integer>1048576</integer> <!-- 1Mb -->
+
+    <!-- Maximum number of unique attendees per entire event -->
+    <!-- 0 for no limit -->
+    <key>MaxAttendeesPerInstance</key>
+    <integer>100</integer>
+
+    <!-- Maximum number of instances allowed during expansion -->
+    <!-- 0 for no limit -->
+    <key>MaxAllowedInstances</key>
+    <integer>3000</integer>
+
+    <!--
+        Directory service
+
+        A directory service provides information about principals (eg.
+        users, groups, locations and resources) to the server.
+
+        A variety of directory services are available for use.
+      -->
+
+    <!-- XML File Directory Service -->
+    <!--
+    <key>DirectoryService</key>
+    <dict>
+      <key>type</key>
+      <string>twistedcaldav.directory.xmlfile.XMLDirectoryService</string>
+      
+      <key>params</key>
+      <dict>
+        <key>xmlFile</key>
+        <string>./conf/auth/accounts-test.xml</string>
+      </dict>
+    </dict>
+    -->
+    
+    <!-- Open Directory Service (Mac OS X) -->
+    <key>DirectoryService</key>
+    <dict>
+      <key>type</key>
+      <string>twistedcaldav.directory.appleopendirectory.OpenDirectoryService</string>
+      
+      <key>params</key>
+      <dict>
+        <key>node</key>
+        <string>/Search</string>
+        <key>cacheTimeout</key>
+        <integer>10</integer>
+      </dict>
+    </dict>
+
+    <!--  OpenLDAP Directory Service -->
+    <!--
+    <key>DirectoryService</key>
+    <dict>
+      <key>type</key>
+      <string>twistedcaldav.directory.ldapdirectory.LdapDirectoryService</string>
+
+      <key>params</key>
+      <dict>
+        <key>recordTypes</key>
+        <array>
+           <string>users</string>
+           <string>groups</string>
+           <string>locations</string>
+           <string>resources</string>
+        </array>
+        <key>cacheTimeout</key>
+        <integer>10</integer>
+        <key>uri</key>
+        <string>ldap://ldapserver.example.com/</string>
+        <key>tls</key>
+        <false/>
+        <key>tlsCACertFile</key>
+        <string></string>
+        <key>tlsCACertDir</key>
+        <string></string>
+        <key>tlsRequireCert</key>
+        <string>never</string>
+        <key>credentials</key>
+        <dict>
+          <key>dn</key>
+          <string>uid=admin,ou=people,o=example.com</string>
+          <key>password</key>
+          <string>PASSWORD</string>
+        </dict>
+        <key>rdnSchema</key>
+        <dict>
+          <key>base</key>
+          <string>o=example.com</string>
+          <key>guidAttr</key>
+          <string>GUID</string>
+          <key>users</key>
+          <dict>
+            <key>rdn</key>
+            <string>ou=people</string>
+            <key>mapping</key>
+            <dict>
+                <key>recordName</key>
+                <string>uid</string>
+                <key>fullName</key>
+                <string>cn</string>
+                <key>emailAddresses</key>
+                <array>
+                    <string>mail</string>
+                    <string>mailAlias</string>
+                </array>
+                <key>firstName</key>
+                <string>givenName</string>
+                <key>lastName</key>
+                <string>sn</string>
+            </dict>
+          </dict>
+          <key>groups</key>
+          <dict>
+            <key>rdn</key>
+            <string>ou=groups</string>
+            <key>mapping</key>
+            <dict>
+                <key>recordName</key>
+                <string>cn</string>
+                <key>fullName</key>
+                <string>cn</string>
+                <key>emailAddresses</key>
+                <array>
+                    <string>mail</string>
+                    <string>mailAlias</string>
+                </array>
+            </dict>
+          </dict>
+          <key>locations</key>
+          <dict>
+            <key>rdn</key>
+            <string>ou=locations</string>
+            <key>associatedAddressAttr</key>
+            <string></string>
+            <key>mapping</key>
+            <dict>
+                <key>recordName</key>
+                <string>cn</string>
+                <key>fullName</key>
+                <string>cn</string>
+            </dict>
+          </dict>
+          <key>resources</key>
+          <dict>
+            <key>rdn</key>
+            <string>ou=resources</string>
+            <key>mapping</key>
+            <dict>
+                <key>recordName</key>
+                <string>cn</string>
+                <key>fullName</key>
+                <string>cn</string>
+            </dict>
+          </dict>
+          <key>addresses</key>
+          <dict>
+            <key>rdn</key>
+            <string>ou=buildings</string>
+            <key>geoAttr</key>
+            <string></string>
+            <key>streetAddressAttr</key>
+            <string></string>
+            <key>mapping</key>
+            <dict>
+                <key>recordName</key>
+                <string>cn</string>
+                <key>fullName</key>
+                <string>cn</string>
+            </dict>
+          </dict>
+        </dict>
+        <key>groupSchema</key>
+        <dict>
+          <key>membersAttr</key>
+          <string>uniqueMember</string>
+          <key>nestedGroupsAttr</key>
+          <string></string>
+          <key>memberIdAttr</key>
+          <string></string>
+        </dict>
+        <key>resourceSchema</key>
+        <dict>
+         <key>resourceInfoAttr</key>
+         <string></string>
+         <key>autoScheduleAttr</key>
+         <string></string>
+         <key>autoScheduleEnabledValue</key>
+         <string></string>
+         <key>proxyAttr</key>
+         <string></string>
+         <key>readOnlyProxyAttr</key>
+         <string></string>
+        </dict>
+      </dict>
+    </dict>
+    -->
+
+    <!-- Resource and Location Service -->
+    <key>ResourceService</key>
+    <dict>
+      <key>Enabled</key>
+      <true/>
+      <key>type</key>
+      <string>twistedcaldav.directory.xmlfile.XMLDirectoryService</string>
+      
+      <key>params</key>
+      <dict>
+        <key>xmlFile</key>
+        <string>./conf/auth/resources-test.xml</string>
+      </dict>
+    </dict>
+
+    <!-- XML File Augment Service -->
+    <key>AugmentService</key>
+    <dict>
+      <key>type</key>
+      <string>twistedcaldav.directory.augment.AugmentXMLDB</string>
+      
+      <key>params</key>
+      <dict>
+        <key>xmlFiles</key>
+        <array>
+	      <string>./conf/auth/augments-test.xml</string>
+        </array>
+      </dict>
+    </dict>
+
+    <!-- Sqlite Augment Service -->
+    <!--
+    <key>AugmentService</key>
+    <dict>
+      <key>type</key>
+      <string>twistedcaldav.directory.augment.AugmentSqliteDB</string>
+      
+      <key>params</key>
+      <dict>
+        <key>dbpath</key>
+        <string>./conf/auth/augments.sqlite</string>
+      </dict>
+    </dict>
+     -->
+
+    <!-- PostgreSQL Augment Service -->
+    <!--
+    <key>AugmentService</key>
+    <dict>
+      <key>type</key>
+      <string>twistedcaldav.directory.augment.AugmentPostgreSQLDB</string>
+      
+      <key>params</key>
+      <dict>
+        <key>host</key>
+        <string>localhost</string>
+        <key>database</key>
+        <string>augments</string>
+      </dict>
+    </dict>
+     -->
+
+    <!-- Sqlite ProxyDB Service -->
+    <key>ProxyDBService</key>
+    <dict>
+      <key>type</key>
+      <string>twistedcaldav.directory.calendaruserproxy.ProxySqliteDB</string>
+      
+      <key>params</key>
+      <dict>
+        <key>dbpath</key>
+        <string>proxies.sqlite</string>
+      </dict>
+    </dict>
+
+    <!-- PostgreSQL ProxyDB Service -->
+    <!--
+    <key>ProxyDBService</key>
+    <dict>
+      <key>type</key>
+      <string>twistedcaldav.directory.calendaruserproxy.ProxyPostgreSQLDB</string>
+      
+      <key>params</key>
+      <dict>
+        <key>host</key>
+        <string>localhost</string>
+        <key>database</key>
+        <string>proxies</string>
+      </dict>
+    </dict>
+     -->
+
+    <key>ProxyLoadFromFile</key>
+    <string>./conf/auth/proxies-test.xml</string>
+
+
+    <!--
+        Special principals
+
+        These principals are granted special access and/or perform
+        special roles on the server.
+      -->
+
+    <!-- Principals with "DAV:all" access (relative URLs) -->
+    <key>AdminPrincipals</key>
+    <array>
+      <string>/principals/__uids__/0C8BDE62-E600-4696-83D3-8B5ECABDFD2E/</string>
+    </array>
+
+    <!-- Principals with "DAV:read" access (relative URLs) -->
+    <key>ReadPrincipals</key>
+    <array>
+      <!-- <string>/principals/__uids__/983C8238-FB6B-4D92-9242-89C0A39E5F81/</string> -->
+    </array>
+
+    <!-- Create "proxy access" principals -->
+    <key>EnableProxyPrincipals</key>
+    <true/>
+
+
+    <!--
+        Permissions
+      -->
+
+    <!-- Anonymous read access for root resource -->
+    <key>EnableAnonymousReadRoot</key>
+    <true/>
+
+    <!-- Anonymous read access for resource hierarchy -->
+    <key>EnableAnonymousReadNav</key>
+    <false/>
+
+    <!-- Enables directory listings for principals -->
+    <key>EnablePrincipalListings</key>
+    <true/>
+
+    <!-- Render calendar collections as a monolithic iCalendar object -->
+    <key>EnableMonolithicCalendars</key>
+    <true/>
+
+
+    <!--
+        Authentication
+      -->
+
+    <key>Authentication</key>
+    <dict>
+
+      <!-- Clear text; best avoided -->
+      <key>Basic</key>
+      <dict>
+        <key>Enabled</key>
+        <true/>
+        <key>AllowedOverWireUnencrypted</key> <!-- advertised over non SSL? -->
+        <true/>
+      </dict>
+
+      <!-- Digest challenge/response -->
+      <key>Digest</key>
+      <dict>
+        <key>Enabled</key>
+        <false/>
+        <key>AllowedOverWireUnencrypted</key> <!-- advertised over non SSL? -->
+        <true/>
+        <key>Algorithm</key>
+        <string>md5</string>
+        <key>Qop</key>
+        <string></string>
+      </dict>
+
+      <!-- Kerberos/SPNEGO -->
+      <key>Kerberos</key>
+      <dict>
+        <key>Enabled</key>
+        <false/>
+        <key>AllowedOverWireUnencrypted</key> <!-- advertised over non SSL? -->
+        <true/>
+        <key>ServicePrincipal</key>
+        <string></string>
+      </dict>
+
+      <!-- Wikiserver authentication (Mac OS X) -->
+      <key>Wiki</key>
+      <dict>
+        <key>Enabled</key>
+        <false/>
+        <key>Cookie</key>
+        <string>sessionID</string>
+        <key>URL</key>
+        <string>http://127.0.0.1/RPC2</string>
+        <key>UserMethod</key>
+        <string>userForSession</string>
+        <key>WikiMethod</key>
+        <string>accessLevelForUserWikiCalendar</string>
+      </dict>
+
+    </dict>
+
+
+    <!--
+        Logging
+      -->
+
+    <!-- Log root -->
+    <key>LogRoot</key>
+    <string>Logs</string>
+
+    <!-- Apache-style access log -->
+    <key>AccessLogFile</key>
+    <string>access.log</string>
+    <key>RotateAccessLog</key>
+    <false/>
+
+    <!-- Server activity log -->
+    <key>ErrorLogFile</key>
+    <string>error.log</string>
+
+    <!-- Log levels -->
+    <key>DefaultLogLevel</key>
+    <string>debug</string> <!-- debug, info, warn, error -->
+
+    <!-- Log level overrides for specific functionality -->
+    <key>LogLevels</key>
+    <dict>
+      <!--
+      <key>twistedcaldav.directory.appleopendirectory.OpenDirectoryService</key>
+      <string>debug</string>
+      -->
+    </dict>
+
+    <!-- Server process ID file -->
+    <key>PIDFile</key>
+    <string>caldavd.pid</string>
+
+
+    <!--
+        Accounting
+      -->
+
+    <!-- Enable accounting for certain operations -->
+    <key>AccountingCategories</key>
+    <dict>
+      <key>iTIP</key>
+      <false/>
+      <key>HTTP</key>
+      <false/>
+    </dict>
+
+    <!-- Enable accounting for specific principals -->
+    <key>AccountingPrincipals</key>
+    <array>
+      <!-- <string>/principals/__uids__/454D85C0-09F0-4DC6-A3C6-97DFEB4622CD/</string> -->
+    </array>
+
+
+    <!--
+        SSL/TLS
+      -->
+
+    <!-- Public key -->
+    <key>SSLCertificate</key>
+    <string>twistedcaldav/test/data/server.pem</string>
+
+    <!-- SSL authority chain (for intermediate certs) -->
+    <key>SSLAuthorityChain</key>
+    <string></string>
+
+    <!-- Private key -->
+    <key>SSLPrivateKey</key>
+    <string>twistedcaldav/test/data/server.pem</string>
+
+
+    <!--
+        Process management
+      -->
+
+    <key>UserName</key>
+    <string></string>
+
+    <key>GroupName</key>
+    <string></string>
+
+    <key>ProcessType</key>
+    <string>Combined</string>
+
+    <key>MultiProcess</key>
+    <dict>
+      <key>ProcessCount</key>
+      <integer>2</integer> <!-- 0 = automatic -->
+    </dict>
+
+
+    <!--
+        Notifications
+      -->
+
+    <key>Notifications</key>
+    <dict>
+      <!-- Time spent coalescing notifications before delivery -->
+      <key>CoalesceSeconds</key>
+      <integer>3</integer>
+
+      <key>Services</key>
+      <dict>
+
+        <key>AMP</key>
+        <dict>
+          <key>Enabled</key>
+          <true/>
+          <key>Port</key>
+          <integer>62311</integer>
+          <key>EnableStaggering</key>
+          <false/>
+          <key>StaggerSeconds</key>
+          <integer>3</integer>
+        </dict>
+
+      </dict>
+    </dict>
+
+
+    <!--
+        Server-to-server protocol
+      -->
+
+    <key>Scheduling</key>
+    <dict>
+
+      <!-- CalDAV protocol options -->
+      <key>CalDAV</key>
+      <dict>
+        <key>EmailDomain</key>
+        <string></string>
+        <key>HTTPDomain</key>
+        <string></string>
+        <key>AddressPatterns</key>
+        <array>
+        </array>
+        <key>OldDraftCompatibility</key>
+        <true/>
+        <key>ScheduleTagCompatibility</key>
+        <true/>
+        <key>EnablePrivateComments</key>
+        <true/>
+      </dict>
+
+      <!-- iSchedule protocol options -->
+      <key>iSchedule</key>
+      <dict>
+        <key>Enabled</key>
+        <false/>
+        <key>AddressPatterns</key>
+        <array>
+        </array>
+        <key>RemoteServers</key>
+        <string>remoteservers-test.xml</string>
+      </dict>
+
+      <!-- iMIP protocol options -->
+      <key>iMIP</key>
+      <dict>
+        <key>Enabled</key>
+        <false/>
+        <key>MailGatewayServer</key>
+        <string>localhost</string>
+        <key>MailGatewayPort</key>
+        <integer>62310</integer>
+        <key>Sending</key>
+        <dict>
+          <key>Server</key>
+          <string></string>
+          <key>Port</key>
+          <integer>587</integer>
+          <key>UseSSL</key>
+          <true/>
+          <key>Username</key>
+          <string></string>
+          <key>Password</key>
+          <string></string>
+          <key>Address</key>
+          <string></string> <!-- Address email will be sent from -->
+          <key>SupressionDays</key>
+          <integer>7</integer> <!-- Don't send messages for events earlier than this many days in the past -->
+        </dict>
+        <key>Receiving</key>
+        <dict>
+          <key>Server</key>
+          <string></string>
+          <key>Port</key>
+          <integer>995</integer>
+          <key>Type</key>
+          <string></string> <!-- Either "pop" or "imap" -->
+          <key>UseSSL</key>
+          <true/>
+          <key>Username</key>
+          <string></string>
+          <key>Password</key>
+          <string></string>
+          <key>PollingSeconds</key>
+          <integer>30</integer>
+        </dict>
+        <key>AddressPatterns</key>
+        <array>
+          <string>mailto:.*</string>
+        </array>
+      </dict>
+
+      <!-- General options for scheduling -->
+      <key>Options</key>
+      <dict>
+        <key>AllowGroupAsOrganizer</key>
+        <false/>
+        <key>AllowLocationAsOrganizer</key>
+        <false/>
+        <key>AllowResourceAsOrganizer</key>
+        <false/>
+        <key>AttendeeRefreshBatch</key>
+        <integer>0</integer>
+        <key>AttendeeRefreshCountLimit</key>
+        <integer>50</integer>
+
+		<key>AutoSchedule</key>
+		<dict>
+			<key>Enabled</key>
+			<true/>
+			<key>Always</key>
+			<false/>
+			<!-- Default mode for auto-schedule processing, one of:
+	              "none"            - no auto-scheduling
+	              "accept-always"   - always accept, ignore busy time
+	              "decline-always"  - always decline, ignore free time
+	              "accept-if-free"  - accept if free, do nothing if busy
+	              "decline-if-busy" - decline if busy, do nothing if free
+	              "automatic"       - accept if free, decline if busy -->
+	        <key>DefaultMode</key>
+	        <string>automatic</string>
+		</dict>
+		
+		<key>WorkQueues</key>
+		<dict>
+			<key>Enabled</key>
+			<true/>
+            <key>RequestDelaySeconds</key>
+            <integer>1</integer>
+            <key>ReplyDelaySeconds</key>
+            <integer>2</integer>
+            <key>AutoReplyDelaySeconds</key>
+            <integer>1</integer>
+            <key>AttendeeRefreshBatchDelaySeconds</key>
+            <integer>2</integer>
+            <key>AttendeeRefreshBatchIntervalSeconds</key>
+            <integer>2</integer>
+		</dict>
+      </dict>
+    </dict>
+
+
+    <!--
+        Free-busy URL protocol
+      -->
+
+    <key>FreeBusyURL</key>
+    <dict>
+      <key>Enabled</key>
+      <true/>
+      <key>TimePeriod</key>
+      <integer>14</integer>
+      <key>AnonymousAccess</key>
+      <false/>
+    </dict>
+
+
+    <!--
+        Non-standard CalDAV extensions
+      -->
+
+    <!-- Calendar Drop Box -->
+    <key>EnableDropBox</key>
+    <false/>
+
+    <!-- Calendar Managed Attachments -->
+    <key>EnableManagedAttachments</key>
+    <true/>
+
+    <!-- Private Events -->
+    <key>EnablePrivateEvents</key>
+    <true/>
+    
+    <!-- Private Comment fix off for testing -->
+    <key>RemoveDuplicatePrivateComments</key>
+    <false/>
+
+    <!-- Timezone Service -->
+    <key>EnableTimezoneService</key>
+    <true/>
+
+    <!-- Standard Timezone Service -->
+    <key>TimezoneService</key>
+    <dict>
+    	<key>Enabled</key>
+    	<true/>
+    	<key>Mode</key>
+    	<string>primary</string>
+    	<key>BasePath</key>
+    	<string></string>
+    	<key>XMLInfoPath</key>
+    	<string></string>
+    	<key>SecondaryService</key>
+    	<dict>
+    		<key>Host</key>
+    		<string></string>
+    		<key>URI</key>
+    		<string></string>
+    		<key>UpdateIntervalMinutes</key>
+    		<integer>1440</integer>
+    	</dict>
+    </dict>
+
+	<key>UsePackageTimezones</key>
+	<true/>
+
+    <!-- Batch Upload via POST -->
+    <key>EnableBatchUpload</key>
+    <true/>
+
+    <!-- Shared Calendars & Address Books -->
+    <key>Sharing</key>
+    <dict>
+      <key>Enabled</key>
+      <true/>
+      <key>AllowExternalUsers</key>
+      <false/>
+      <key>Calendars</key>
+      <dict>
+    	<key>Enabled</key>
+    	<true/>
+      </dict>
+      <key>AddressBooks</key>
+      <dict>
+    	<key>Enabled</key>
+    	<true/>
+      </dict>
+    </dict>
+
+    <!--
+        Miscellaneous items
+      -->
+
+    <!-- Service ACLs (Mac OS X) -->
+    <key>EnableSACLs</key>
+    <false/>
+
+    <!-- Make entire server read-only -->
+    <key>EnableReadOnlyServer</key>
+    <false/>
+
+    <!-- Web-based administration -->
+    <key>EnableWebAdmin</key>
+    <true/>
+
+    <!-- Support for Content-Encoding compression -->
+    <key>ResponseCompression</key>
+    <false/>  <!-- Off for testing, as debugging is easier that way. -->
+
+    
+    <!-- The retry-after value (in seconds) to return with a 503 error. -->
+    <key>HTTPRetryAfter</key>
+    <integer>180</integer>
+
+    <!-- For child-master IPC. [empty = use tcp] -->
+    <key>ControlSocket</key>
+    <string>caldavd.sock</string>
+
+    <!-- Support for Memcached -->
+    <key>Memcached</key>
+    <dict>
+      <key>MaxClients</key>
+      <integer>5</integer>
+      <key>memcached</key>
+      <string>memcached</string> <!-- Find in PATH -->
+      <key>Options</key>
+      <array>
+        <!--<string>-vv</string>--> <!-- Be very verbose -->
+      </array>
+    </dict>
+
+    <!-- Response Caching -->
+    <key>EnableResponseCache</key>
+    <true/>
+    <key>ResponseCacheTimeout</key>
+    <integer>30</integer> <!-- in minutes -->
+
+    <!-- Support for Postgres -->
+    <key>Postgres</key>
+    <dict>
+      <key>Options</key>
+      <array>
+      	<!-- Optional extra logging for posgres -->
+      	<!-- <string>-c log_lock_waits=TRUE</string> -->
+      	<!-- <string>-c log_statement=all</string> -->
+      	<!-- <string>-c log_line_prefix='%t [%p]: [%l] '</string> -->
+      </array>
+    </dict>
+
+    <!-- SQL Query Caching -->
+    <key>QueryCaching</key>
+    <dict>
+      <key>Enabled</key>
+      <true/>
+      <key>MemcachedPool</key>
+      <string>Default</string>
+      <key>ExpireSeconds</key>
+      <integer>3600</integer>
+    </dict>
+
+    <!-- Group Membership Caching -->
+    <key>GroupCaching</key>
+    <dict>
+      <key>Enabled</key>
+      <true/>
+      <key>EnableUpdater</key>
+      <true/>
+      <key>MemcachedPool</key>
+      <string>Default</string>
+      <key>UpdateSeconds</key>
+      <integer>300</integer>
+      <key>ExpireSeconds</key>
+      <integer>3600</integer>
+      <key>LockSeconds</key>
+      <integer>300</integer>
+      <key>UseExternalProxies</key>
+      <false/>
+    </dict>
+
+    <!-- Maximum number of results returned by principal-property-search REPORT -->
+    <key>MaxPrincipalSearchReportResults</key>
+    <integer>500</integer>
+
+    <!--
+        Twisted
+      -->
+
+    <key>Twisted</key>
+    <dict>
+      <key>twistd</key>
+      <string>../Twisted/bin/twistd</string>
+    </dict>
+
+
+    <key>Localization</key>
+    <dict>
+      <key>TranslationsDirectory</key>
+      <string>locales</string>
+      <key>LocalesDirectory</key>
+      <string>locales</string>
+      <key>Language</key>
+      <string>en</string>
+    </dict>
+
+    <!-- Directory Address Book -->
+    <key>EnableSearchAddressBook</key>
+    <true/>
+  </dict>
+</plist>

Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directorybackedaddressbook.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directorybackedaddressbook.py	2014-04-04 22:59:48 UTC (rev 13169)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directorybackedaddressbook.py	2014-04-04 23:10:03 UTC (rev 13170)
@@ -157,7 +157,7 @@
 
 
     @inlineCallbacks
-    def doAddressBookDirectoryQuery(self, addressBookFilter, addressBookQuery, maxResults, defaultKind=None):
+    def doAddressBookDirectoryQuery(self, addressBookFilter, addressBookQuery, maxResults, defaultKind="individual"):
         """
         Get vCards for a given addressBookFilter and addressBookQuery
         """

Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/method/report_addressbook_query.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/method/report_addressbook_query.py	2014-04-04 22:59:48 UTC (rev 13169)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/method/report_addressbook_query.py	2014-04-04 23:10:03 UTC (rev 13170)
@@ -157,7 +157,7 @@
         def queryDirectoryBackedAddressBook(directoryBackedAddressBook, addressBookFilter):
             """
             """
-            results, limited[0] = yield directoryBackedAddressBook.doAddressBookDirectoryQuery(addressBookFilter, query, max_number_of_results[0], defaultKind="individual")
+            results, limited[0] = yield directoryBackedAddressBook.doAddressBookDirectoryQuery(addressBookFilter, query, max_number_of_results[0])
             for vCardResult in results:
 
                 # match against original filter if different from addressBookFilter

Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/method/report_multiget_common.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/method/report_multiget_common.py	2014-04-04 22:59:48 UTC (rev 13169)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/method/report_multiget_common.py	2014-04-04 23:10:03 UTC (rev 13170)
@@ -267,7 +267,7 @@
 
                 #get vCards and filter
                 limit = config.DirectoryAddressBook.MaxQueryResults
-                results, limited = (yield self.doAddressBookDirectoryQuery(addressBookFilter, propertyreq, limit))
+                results, limited = (yield self.doAddressBookDirectoryQuery(addressBookFilter, propertyreq, limit, defaultKind=None))
                 if limited:
                     log.error("Too many results in multiget report: {count}", count=len(resources))
                     raise HTTPError(ErrorResponse(

Modified: CalendarServer/branches/users/sagen/move2who-4/txdav/who/vcard.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/txdav/who/vcard.py	2014-04-04 22:59:48 UTC (rev 13169)
+++ CalendarServer/branches/users/sagen/move2who-4/txdav/who/vcard.py	2014-04-04 23:10:03 UTC (rev 13170)
@@ -55,7 +55,8 @@
 # all possible generated parameters.
 vCardPropToParamMap = {
     #"PHOTO": {"ENCODING": ("B",), "TYPE": ("JPEG",), },
-    "ADR": {"TYPE": ("WORK", "PREF", "POSTAL", "PARCEL",), },
+    "ADR": {"TYPE": ("WORK", "PREF", "POSTAL", "PARCEL",),
+            "LABEL": None, "GEO": None, },
     #"LABEL": {"TYPE": ("POSTAL", "PARCEL",)},
     #"TEL": {"TYPE": None, },  # None means param can contain can be anything
     "EMAIL": {"TYPE": None, },
@@ -188,17 +189,29 @@
     # 3.2 Delivery Addressing Types http://tools.ietf.org/html/rfc2426#section-3.2
     #===========================================================================
     # 3.2.1 ADR
+    #
+    # Experimental:
+    #     Use vCard 4.0 ADR: http://tools.ietf.org/html/rfc6350#section-6.3.1
+    params = {}
+    geo = record.fields.get(CalFieldName.geographicLocation)
+    if geo:
+        params["GEO"] = geo.encode("utf-8")
+    label = record.fields.get(CalFieldName.streetAddress)
+    if label:
+        params["LABEL"] = label.encode("utf-8")
 
+    #
     extended = record.fields.get(CalFieldName.floor)
 
-    #TODO: parse !
+    # TODO: Parse?
     street = record.fields.get(CalFieldName.streetAddress)
     city = None
     region = None
     postalcode = None
     country = None
 
-    if extended or street or city or region or postalcode or country:
+    if extended or street or city or region or postalcode or country or params:
+        params["TYPE"] = ("WORK", "PREF", "POSTAL", "PARCEL",)
         vcard.addProperty(
             Property(
                 "ADR", Adr(
@@ -210,7 +223,7 @@
                     postalcode=postalcode.encode("utf-8") if postalcode else None,
                     country=country.encode("utf-8") if country else None,
                 ),
-                params={"TYPE": ("WORK", "PREF", "POSTAL", "PARCEL",), }
+                params=params
             )
         )
 
@@ -308,7 +321,8 @@
     # add members
     # FIXME:  members() is a deferred, so all of vCardFromRecord is deferred.
     for memberRecord in (yield record.members()):
-        vcard.addProperty(Property("X-ADDRESSBOOKSERVER-MEMBER", "urn:uuid:" + memberRecord.fields[FieldName.uid].encode("utf-8")))
+        if memberRecord:
+            vcard.addProperty(Property("X-ADDRESSBOOKSERVER-MEMBER", "urn:uuid:" + memberRecord.fields[FieldName.uid].encode("utf-8")))
 
     #===================================================================
     # vCard 4.0  http://tools.ietf.org/html/rfc6350
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140404/598a9fcb/attachment-0001.html>


More information about the calendarserver-changes mailing list