On 01/30/2013 10:53 PM, Glyph wrote:
> 
> On Jan 30, 2013, at 8:06 PM, Dennison Williams
> <dennison.willi...@gmail.com <mailto:dennison.willi...@gmail.com>> wrote:
> 
>> Tracing this all the way up the stack I see tha the getGroups method
>> receives a guid value of  set([None]), but this is not caught as I think
>> maybe it should be on line 675
>>
>> if guids is None:
>>
>> But because I am not super familar with this application and have
>> limited familiarity with python I am not sure if this indicates an issue
>> with my config, my environment, or the code.
> 
> The LDAP directory is incredibly flexible, and can be coerced to do
> various insane things by setting up mappings incorrectly.  Having a copy
> of your caldavd.plist would be helpful when diagnosing this error.
>  (Actually having a copy of your entire directory along with that would
> be even more useful, but I presume that isn't possible ;-)).

Please see attached my caldavd.plist.  I also included a ldapsearch
result for the following query which shows how I am mapping the schema

ldapsearch -x -h ad.meow.com -D 'auth' -w 'also_not_the_real_pass' -b
'cn=Users,dc=meow,dc=comm' '(&(objectClass=user)(sAMAccountName=Meow))'

# extended LDIF
#
# LDAPv3
# base <cn=Users,dc=meow,dc=com> with scope subtree
# filter: (&(objectClass=user)(sAMAccountName=Meow))
# requesting: ALL
#

# Meow Meow, Users, meow.com
dn: CN=Meow Meow,CN=Users,DC=meow,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Meow Meow
sn: Account
givenName: Nagios
distinguishedName: CN=Meow Meow,CN=Users,DC=meow,DC=com
instanceType: 4
whenCreated: 20111017230846.0Z
whenChanged: 20121023162519.0Z
displayName: Nagios Test Account
uSNCreated: 12446
memberOf: CN=VPN Users,CN=Users,DC=meow,DC=com
uSNChanged: 304005
homeMTA: CN=Microsoft MTA,CN=AD,CN=Servers,CN=First Administrative Group
 ,CN=Administrative Groups,CN=AD,CN=Microsoft Exchange,CN=Services,CN=
 Configuration,DC=meowmeow,DC=com
proxyAddresses: SMTP:nag...@meow.com
proxyAddresses: smtp:m...@meow.com
proxyAddresses: smtp:m...@meow.com
proxyAddresses: X400:c=US;a= ;p=meow;o=Exchange;s=Meow;g=Meow;
homeMDB: CN=Mailbox Store (AD),CN=First Storage Group,CN=InformationStor
 e,CN=AD,CN=Servers,CN=First Administrative Group,CN=Administrative Grou
 ps,CN=meow,CN=Microsoft
Exchange,CN=Services,CN=Configuration,DC=meow,DC=com
mDBUseDefaults: TRUE
mailNickname: meow
name: Meow Meow
objectGUID:: Kyz0aVBh5EGXjCt6tGMacw==
userAccountControl: 512
badPwdCount: 1
codePage: 0
countryCode: 0
badPasswordTime: 129958397349055788
pwdLastSet: 129945378370161242
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAARUxc9755Z7MIG4EGbgQAAA==
accountExpires: 9223372036854775807
sAMAccountName: meow
sAMAccountType: 805306368
showInAddressBook: CN=Default Global Address List,CN=All Global Address
Lists,
 CN=Address Lists Container,CN=meow,CN=Microsoft Exchange,CN=Services,CN
 =Configuration,DC=meow,DC=com
showInAddressBook: CN=All Users,CN=All Address Lists,CN=Address Lists
Containe
 r,CN=meow,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=meow,DC=com
legacyExchangeDN: /o=meow/ou=First Administrative Group/cn=Recipients/cn
 =meow
userPrincipalName: m...@meow.com
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=meow,DC=com
dSCorePropagationData: 16010101000000.0Z
lastLogonTimestamp: 129954831103763747
textEncodedORAddress: c=US;a= ;p=meow;o=Exchange;s=Meow;g=Meow;
mail: nag...@meow.com
msExchHomeServerName: /o=meow/ou=First Administrative Group/cn=Configura
 tion/cn=Servers/cn=AD
msExchALObjectVersion: 49
msExchMailboxSecurityDescriptor::
AQAEgHgAAACUAAAAAAAAABQAAAAEAGQAAQAAAAACFAAD
 AAIAAQEAAAAAAAUKAAAAawBoAGUAYQByAHQALwBjAG4APQBDAG8AbgBmAGkAZwB1AHIAYQB0AGkAb
 wBuAC8AYwBuAD0AUwBlAHIAdgBpAGMAZQBzAAAAAQUAAAAAAAUVAAAARUxc9755Z7MIG4EG9AEAAA
 EFAAAAAAAFFQAAAEVMXPe+eWezCBuBBvQBAAA=
msExchUserAccountControl: 0
msExchMailboxGuid:: vLqtcArWMkGG0dYMJAcWyw==
msExchPoliciesIncluded:
{A83A4004-3729-4AD2-869E-9DBD808B748D},{26491CFC-9E50-
 4857-861B-0CB8DF22B5D7}

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1


> 
> -glyph

<?xml version="1.0" encoding="UTF-8"?>

<!--
    Copyright (c) 2006-2012 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>calendar.meow.com</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>
    <true/>


    <!--
        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>/var/lib/caldavd</string>

    <!-- Database connection -->
    <key>DBType</key>
    <string>postgres</string>
    <key>DSN</key>
    <string>:caldav:caldav:not_the_real_pass::</string>

    <!-- Data root -->
    <key>DataRoot</key>
    <string>/var/lib/caldavd</string>

    <!-- Database root 
    <key>DatabaseRoot</key>
    <string>Database</string>
    -->

    <!-- Document root -->
    <key>DocumentRoot</key>
    <string>Documents</string>

    <!-- Configuration root -->
    <key>ConfigRoot</key>
    <string>/etc/caldavd/</string>

    <!-- Run root -->
    <key>RunRoot</key>
    <string>/var/run/caldavd/</string>

    <!-- Child aliases -->
    <key>Aliases</key>
    <dict>
      <!--
      <key>foo</key>
      <dict>
        <key>path</key>
        <string>/path/to/foo</string>
      </dict>
       -->
    </dict>


    <!--
        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://ad.meow.com:389/</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>cn=auth,cn=Users,dc=meow,dc=com</string>
          <key>password</key>
          <string>also_not_the_real_pass</string>
        </dict>
        <key>rdnSchema</key>
        <dict>
          <key>base</key>
          <string>cn=Users,dc=meow,dc=com</string>
          <key>guidAttr</key>
          <string>sAMAccountName</string>
          <key>users</key>
          <dict>
            <key>filter</key>
            <string>(objectClass=user)</string>
            <key>rdn</key>
            <string></string>
            <key>mapping</key>
            <dict>
                <key>recordName</key>
                <string>sAMAccountName</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></string>
            <key>filter</key>
            <string>(objectClass=group)</string>
            <key>mapping</key>
            <dict>
                <key>recordName</key>
                <string>sAMAccountName</string>
                <key>fullName</key>
                <string>cn</string>
                <key>emailAddresses</key>
                <array>
                    <string>mail</string>
                    <string>mailAlias</string>
                </array>
                <key>firstName</key>
                <string></string>
                <key>lastName</key>
                <string></string>
            </dict>
          </dict>
          <key>locations</key>
          <dict>
            <key>rdn</key>
            <string>ou=locations</string>
            <key>mapping</key>
            <dict>
                <key>recordName</key>
                <string>cn</string>
                <key>fullName</key>
                <string>cn</string>
                <key>emailAddresses</key>
                <array>
                </array>
                <key>firstName</key>
                <string></string>
                <key>lastName</key>
                <string></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>
                <key>emailAddresses</key>
                <array>
                </array>
                <key>firstName</key>
                <string></string>
                <key>lastName</key>
                <string></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>autoAcceptGroupAttr</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>/etc/caldavd/augments-default.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__/admin/</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>
        <true/>
        <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>
        <true/>
        <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>/var/log/caldavd/</string>

    <!-- Apache-style access log -->
    <key>AccessLogFile</key>
    <string>access.log</string>
    <key>RotateAccessLog</key>
    <true/>

    <!-- 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>/var/run/caldavd/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>/etc/ssl/certs/meow.com.crt</string>

    <!-- SSL authority chain (for intermediate certs) -->
    <key>SSLAuthorityChain</key>
    <string></string>

    <!-- Private key -->
    <key>SSLPrivateKey</key>
    <string>/etc/ssl/private/meow.com.key</string>


    <!--
        Process management
      -->

    <key>UserName</key>
    <string>caldavd</string>

    <key>GroupName</key>
    <string>caldavd</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>InternalNotificationHost</key>
      <string>localhost</string>

      <key>InternalNotificationPort</key>
      <integer>62309</integer>

      <key>Services</key>
      <dict>

        <key>AMPNotifier</key>
        <dict>
          <key>Service</key>
          <string>calendarserver.push.amppush.AMPPushNotifierService</string>
          <key>Enabled</key>
          <true/>
          <key>Port</key>
          <integer>62311</integer>
          <key>EnableStaggering</key>
          <false/>
          <key>StaggerSeconds</key>
          <integer>3</integer>
        </dict>

        <key>SimpleLineNotifier</key>
        <dict>
          <!-- Simple line notification service (for testing) -->
          <key>Service</key>
          <string>twistedcaldav.notify.SimpleLineNotifierService</string>
          <key>Enabled</key>
          <false/>
          <key>Port</key>
          <integer>62308</integer>
        </dict>

        <key>XMPPNotifier</key>
        <dict>
          <!-- XMPP notification service -->
          <key>Service</key>
          <string>twistedcaldav.notify.XMPPNotifierService</string>
          <key>Enabled</key>
          <false/>

          <!-- XMPP host and port to contact -->
          <key>Host</key>
          <string>xmpp.host.name</string>
          <key>Port</key>
          <integer>5222</integer>

          <!-- Jabber ID and password for the server -->
          <key>JID</key>
          <string>j...@xmpp.host.name/resource</string>
          <key>Password</key>
          <string>password_goes_here</string>

          <!-- PubSub service address -->
          <key>ServiceAddress</key>
          <string>pubsub.xmpp.host.name</string>

          <!-- Apple-specific config -->
          <key>CalDAV</key>
          <dict>
              <key>APSBundleID</key>
              <string></string>
              <key>SubscriptionURL</key>
              <string></string>
          </dict>
          <key>CardDAV</key>
          <dict>
              <key>APSBundleID</key>
              <string></string>
              <key>SubscriptionURL</key>
              <string></string>
          </dict>

          <key>NodeConfiguration</key>
          <dict>
            <key>pubsub#deliver_payloads</key>
            <string>1</string>
            <key>pubsub#persist_items</key>
            <string>1</string>
          </dict>

          <!-- Sends a presence notification to XMPP server at this interval (prevents disconnect) -->
          <key>KeepAliveSeconds</key>
          <integer>120</integer>

          <!-- Sends a pubsub publish to a particular heartbeat node at this interval -->
          <key>HeartbeatMinutes</key>
          <integer>30</integer>

          <!-- List of glob-like expressions defining which XMPP JIDs can converse with the server (for debugging) -->
          <key>AllowedJIDs</key>
          <array>
            <!--
            <string>*.example.com</string>
             -->
          </array>
        </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>V1Compatibility</key> <!-- Allow /path-based CUAs in scheduling replies -->
        <false/>

		<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>
      </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>
    <true/>

    <!-- Calendar Managed Attachments -->
    <key>EnableManagedAttachments</key>
    <true/>

    <!-- Private Events -->
    <key>EnablePrivateEvents</key>
    <true/>

    <!-- 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>

    <!-- 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 options as specified in RFC2616 Section 3.5 -->
    <key>ResponseCompression</key>
    <false/>
    
    <!-- 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>


  </dict>
</plist>
_______________________________________________
calendarserver-dev mailing list
calendarserver-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/calendarserver-dev

Reply via email to