Menu

#1 Authentication/Rights validation fails when using Apple Contacts App

open
nobody
None
2015-08-10
2015-07-29
Anonymous
No

Originally created by: Proper-Job

I tried a sample project with Apple's Contacts App which comes with OSX.

I added a test user (testuser) in the admin interface, which is active, staff and has all djradical permissions.

Usually the Contact App autocreates an addressbook with radicale without problems. Auth/rights seem to be a problem here. Here is my log output:

[29/Jul/2015 14:52:08] DEBUG [djradicale:34] Authentication type is custom
[29/Jul/2015 14:52:08] INFO [djradicale:247] PROPFIND request at /.well-known/carddav received
[29/Jul/2015 14:52:08] DEBUG [djradicale:249] Request headers:
{'CONTENT_LENGTH': '181',
 'CONTENT_TYPE': 'text/xml',
 'CSRF_COOKIE': 'L4Y9vvB9dBuxzMWVIOVKqAeHFopGI4T6',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
 'HTTP_ACCEPT_LANGUAGE': 'en-us',
 'HTTP_BRIEF': 't',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_DEPTH': '0',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_PREFER': 'return=minimal',
 'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
 'PATH_INFO': '/.well-known/carddav',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'PROPFIND',
 'SCRIPT_NAME': '',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.2',
 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
 'wsgi.input': <_io.BufferedReader name=5>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}
[29/Jul/2015 14:52:08] DEBUG [djradicale:259] Skipped already sanitized path: /.well-known/carddav
[29/Jul/2015 14:52:08] INFO [djradicale:293] Refused /.well-known/ redirection to anonymous user
[29/Jul/2015 14:52:08] DEBUG [djradicale:34] Authentication type is custom
[29/Jul/2015 14:52:08] INFO [djradicale:247] PROPFIND request at /pim/testuser/addressbook.vcf/ received
[29/Jul/2015 14:52:08] DEBUG [djradicale:249] Request headers:
{'CONTENT_LENGTH': '181',
 'CONTENT_TYPE': 'text/xml',
 'CSRF_COOKIE': 'lJmuWEAz44qQrNNVnFa3YZbAADAUm110',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
 'HTTP_ACCEPT_LANGUAGE': 'en-us',
 'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
 'HTTP_BRIEF': 't',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_DEPTH': '0',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_PREFER': 'return=minimal',
 'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
 'PATH_INFO': '/pim/testuser/addressbook.vcf/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'PROPFIND',
 'SCRIPT_NAME': '',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.2',
 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
 'wsgi.input': <_io.BufferedReader name=5>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}
[29/Jul/2015 14:52:08] DEBUG [djradicale:256] Sanitized path: /testuser/addressbook.vcf/
[29/Jul/2015 14:52:08] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:08] DEBUG [djradicale:62] Test if 'testuser:testuser/addressbook.vcf' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:08] DEBUG [djradicale:67] Section 'rw' matches
[29/Jul/2015 14:52:08] DEBUG [djradicale:198] testuser has read access to collection testuser/addressbook.vcf/
[29/Jul/2015 14:52:08] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:08] DEBUG [djradicale:62] Test if 'testuser:testuser/addressbook.vcf' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:08] DEBUG [djradicale:67] Section 'rw' matches
[29/Jul/2015 14:52:08] DEBUG [djradicale:210] testuser has write access to collection testuser/addressbook.vcf/
[29/Jul/2015 14:52:08] DEBUG [djradicale:321] Request content:
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
  <A:prop>
    <A:current-user-principal/>
    <A:principal-URL/>
    <A:resourcetype/>
  </A:prop>
</A:propfind>

[29/Jul/2015 14:52:08] DEBUG [djradicale:349] Response content:
<?xml version="1.0"?>
<multistatus xmlns="DAV:" xmlns:CR="urn:ietf:params:xml:ns:carddav">
  <response>
    <href>/pim/testuser/addressbook.vcf/</href>
    <propstat>
      <prop>
        <current-user-principal>
          <href>/pim/testuser/</href>
        </current-user-principal>
        <principal-URL>
          <href>/pim/testuser/addressbook.vcf/</href>
        </principal-URL>
        <resourcetype>
          <CR:addressbook />
          <collection />
        </resourcetype>
      </prop>
      <status>HTTP/1.1 200 OK</status>
    </propstat>
  </response>
</multistatus>

[29/Jul/2015 14:52:08] DEBUG [djradicale:358] Answer status: 207 Unknown
[29/Jul/2015 14:52:08] DEBUG [djradicale:34] Authentication type is custom
[29/Jul/2015 14:52:08] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
[29/Jul/2015 14:52:08] DEBUG [djradicale:249] Request headers:
{'CONTENT_LENGTH': '0',
 'CONTENT_TYPE': 'text/plain',
 'CSRF_COOKIE': 'tJHe1m6LvZJN6eE5Z4iOHL9YXeCj40GP',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
 'HTTP_ACCEPT_LANGUAGE': 'en-us',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
 'PATH_INFO': '/pim/testuser/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'OPTIONS',
 'SCRIPT_NAME': '',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.2',
 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
 'wsgi.input': <_io.BufferedReader name=5>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}
[29/Jul/2015 14:52:08] DEBUG [djradicale:256] Sanitized path: /testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:08] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:08] DEBUG [djradicale:204] Anonymous has NO read access to collection testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:08] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:08] DEBUG [djradicale:216] Anonymous has NO write access to collection testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:358] Answer status: 200 OK
[29/Jul/2015 14:52:08] DEBUG [djradicale:34] Authentication type is custom
[29/Jul/2015 14:52:08] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
[29/Jul/2015 14:52:08] DEBUG [djradicale:249] Request headers:
{'CONTENT_LENGTH': '439',
 'CONTENT_TYPE': 'text/xml',
 'CSRF_COOKIE': 'tpI0SmU45QZPBKh9rywgCuO8tevIAYyy',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
 'HTTP_ACCEPT_LANGUAGE': 'en-us',
 'HTTP_BRIEF': 't',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_DEPTH': '0',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_PREFER': 'return=minimal',
 'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
 'PATH_INFO': '/pim/testuser/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'PROPFIND',
 'SCRIPT_NAME': '',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.2',
 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
 'wsgi.input': <_io.BufferedReader name=5>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}
[29/Jul/2015 14:52:08] DEBUG [djradicale:256] Sanitized path: /testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:08] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:08] DEBUG [djradicale:204] Anonymous has NO read access to collection testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:08] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:08] DEBUG [djradicale:216] Anonymous has NO write access to collection testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:321] Request content:
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
  <A:prop>
    <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
    <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
    <A:displayname/>
    <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
    <A:principal-collection-set/>
    <A:principal-URL/>
    <A:resource-id/>
    <A:supported-report-set/>
  </A:prop>
</A:propfind>

[29/Jul/2015 14:52:08] INFO [djradicale:339] Anonymous user refused
[29/Jul/2015 14:52:08] DEBUG [djradicale:358] Answer status: 401 Unauthorized
[29/Jul/2015 14:52:08] DEBUG [djradicale:34] Authentication type is custom
[29/Jul/2015 14:52:08] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
[29/Jul/2015 14:52:08] DEBUG [djradicale:249] Request headers:
{'CONTENT_LENGTH': '439',
 'CONTENT_TYPE': 'text/xml',
 'CSRF_COOKIE': 'wJmiXTOVZMTbElCGKEUbY7ZYbbUzNUm4',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
 'HTTP_ACCEPT_LANGUAGE': 'en-us',
 'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
 'HTTP_BRIEF': 't',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_DEPTH': '0',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_PREFER': 'return=minimal',
 'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
 'PATH_INFO': '/pim/testuser/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'PROPFIND',
 'SCRIPT_NAME': '',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.2',
 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
 'wsgi.input': <_io.BufferedReader name=5>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}
[29/Jul/2015 14:52:08] DEBUG [djradicale:256] Sanitized path: /testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:08] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:08] DEBUG [djradicale:71] Section 'rw' does not match
[29/Jul/2015 14:52:08] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:08] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:08] DEBUG [djradicale:71] Section 'rw' does not match
[29/Jul/2015 14:52:08] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
[29/Jul/2015 14:52:08] DEBUG [djradicale:321] Request content:
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
  <A:prop>
    <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
    <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
    <A:displayname/>
    <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
    <A:principal-collection-set/>
    <A:principal-URL/>
    <A:resource-id/>
    <A:supported-report-set/>
  </A:prop>
</A:propfind>

[29/Jul/2015 14:52:08] DEBUG [djradicale:349] Response content:
<?xml version="1.0"?>
<multistatus xmlns="DAV:" />
[29/Jul/2015 14:52:08] DEBUG [djradicale:358] Answer status: 207 Unknown
[29/Jul/2015 14:52:11] DEBUG [djradicale:34] Authentication type is custom
[29/Jul/2015 14:52:11] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
[29/Jul/2015 14:52:11] DEBUG [djradicale:249] Request headers:
{'CONTENT_LENGTH': '0',
 'CONTENT_TYPE': 'text/plain',
 'CSRF_COOKIE': 'u2vb0TEPipyKwxZkkLljm3XBLSMoSDFt',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
 'HTTP_ACCEPT_LANGUAGE': 'en-us',
 'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
 'PATH_INFO': '/pim/testuser/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'OPTIONS',
 'SCRIPT_NAME': '',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.2',
 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
 'wsgi.input': <_io.BufferedReader name=5>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}
[29/Jul/2015 14:52:11] DEBUG [djradicale:256] Sanitized path: /testuser/
[29/Jul/2015 14:52:11] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:11] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:11] DEBUG [djradicale:71] Section 'rw' does not match
[29/Jul/2015 14:52:11] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
[29/Jul/2015 14:52:11] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:11] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:11] DEBUG [djradicale:71] Section 'rw' does not match
[29/Jul/2015 14:52:11] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
[29/Jul/2015 14:52:11] DEBUG [djradicale:358] Answer status: 200 OK
[29/Jul/2015 14:52:11] DEBUG [djradicale:34] Authentication type is custom
[29/Jul/2015 14:52:11] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
[29/Jul/2015 14:52:11] DEBUG [djradicale:249] Request headers:
{'CONTENT_LENGTH': '439',
 'CONTENT_TYPE': 'text/xml',
 'CSRF_COOKIE': 'xtYN4N5qsn25dhk9vibrcWgPLGHOWQx7',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
 'HTTP_ACCEPT_LANGUAGE': 'en-us',
 'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
 'HTTP_BRIEF': 't',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_DEPTH': '0',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_PREFER': 'return=minimal',
 'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
 'PATH_INFO': '/pim/testuser/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'PROPFIND',
 'SCRIPT_NAME': '',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.2',
 'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
 'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
 'wsgi.input': <_io.BufferedReader name=5>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}
[29/Jul/2015 14:52:11] DEBUG [djradicale:256] Sanitized path: /testuser/
[29/Jul/2015 14:52:11] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:11] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:11] DEBUG [djradicale:71] Section 'rw' does not match
[29/Jul/2015 14:52:11] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
[29/Jul/2015 14:52:11] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
[29/Jul/2015 14:52:11] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
[29/Jul/2015 14:52:11] DEBUG [djradicale:71] Section 'rw' does not match
[29/Jul/2015 14:52:11] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
[29/Jul/2015 14:52:11] DEBUG [djradicale:321] Request content:
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
  <A:prop>
    <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
    <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
    <A:displayname/>
    <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
    <A:principal-collection-set/>
    <A:principal-URL/>
    <A:resource-id/>
    <A:supported-report-set/>
  </A:prop>
</A:propfind>

[29/Jul/2015 14:52:11] DEBUG [djradicale:349] Response content:
<?xml version="1.0"?>
<multistatus xmlns="DAV:" />
[29/Jul/2015 14:52:11] DEBUG [djradicale:358] Answer status: 207 Unknown

Discussion

  • Anonymous

    Anonymous - 2015-07-29

    Originally posted by: okami-1

    Did you added this to your global urlpatterns?

        url(r'^\.well-known/(?P<type>(caldav|carddav))$',
            'djradicale.views.wellknown', name='djradicale_well-known'),
    
     
  • Anonymous

    Anonymous - 2015-07-30

    Originally posted by: Proper-Job

    Yes, my urlpatterns:

    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'^' + settings.DJRADICALE_CONFIG['server']['base_prefix'].lstrip('/'),
            include('djradicale.urls', namespace='djradicale')),
        url(r'^\.well-known/(?P<type>(caldav|carddav))$',
            'djradicale.views.wellknown', name='djradicale_well-known'),
    ]
    
     
  • Anonymous

    Anonymous - 2015-07-30

    Originally posted by: okami-1

    Looks like a problem with autodiscovery.
    You can try by adding 'rw' permission to user's directory, something like this:

        "userdir": {
            "user": ".+",
            "collection": "^%(login)s$",
            "permission": "rw",
        },
    
     
  • Anonymous

    Anonymous - 2015-07-30

    Originally posted by: Proper-Job

    Hmm, that seems to help a bit but still no success in autodiscovery. In some request it succeeds now. I have very little knowledge how that works with carddav, so I am a bit lost here.

    [30/Jul/2015 13:22:04] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:04] INFO [djradicale:247] PROPFIND request at /.well-known/carddav received
    [30/Jul/2015 13:22:04] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '181',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'VncKbt7OY3qha6It2Wgyv3HRq7IbFz0P',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/.well-known/carddav',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:04] DEBUG [djradicale:259] Skipped already sanitized path: /.well-known/carddav
    [30/Jul/2015 13:22:04] INFO [djradicale:293] Refused /.well-known/ redirection to anonymous user
    [30/Jul/2015 13:22:04] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:04] INFO [djradicale:247] PROPFIND request at /pim/testuser/addressbook.vcf/ received
    [30/Jul/2015 13:22:04] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '181',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'KGgXUkmDfc9K5huhGty0cFjV56ptI8qf',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/addressbook.vcf/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:04] DEBUG [djradicale:256] Sanitized path: /testuser/addressbook.vcf/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser/addressbook.vcf' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:67] Section 'rw' matches
    [30/Jul/2015 13:22:04] DEBUG [djradicale:198] testuser has read access to collection testuser/addressbook.vcf/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser/addressbook.vcf' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:67] Section 'rw' matches
    [30/Jul/2015 13:22:04] DEBUG [djradicale:210] testuser has write access to collection testuser/addressbook.vcf/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <A:current-user-principal/>
        <A:principal-URL/>
        <A:resourcetype/>
      </A:prop>
    </A:propfind>
    
    [30/Jul/2015 13:22:04] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" xmlns:CR="urn:ietf:params:xml:ns:carddav">
      <response>
        <href>/pim/testuser/addressbook.vcf/</href>
        <propstat>
          <prop>
            <current-user-principal>
              <href>/pim/testuser/</href>
            </current-user-principal>
            <principal-URL>
              <href>/pim/testuser/addressbook.vcf/</href>
            </principal-URL>
            <resourcetype>
              <CR:addressbook />
              <collection />
            </resourcetype>
          </prop>
          <status>HTTP/1.1 200 OK</status>
        </propstat>
      </response>
    </multistatus>
    
    [30/Jul/2015 13:22:04] DEBUG [djradicale:358] Answer status: 207 Unknown
    [30/Jul/2015 13:22:04] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:04] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
    [30/Jul/2015 13:22:04] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '0',
     'CONTENT_TYPE': 'text/plain',
     'CSRF_COOKIE': 'QM0UgcYV1yZ1AitZ4yzlzBt7oPhUbAVS',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'OPTIONS',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:04] DEBUG [djradicale:256] Sanitized path: /testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^$' from section 'userdir'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:204] Anonymous has NO read access to collection testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^$' from section 'userdir'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:216] Anonymous has NO write access to collection testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:358] Answer status: 200 OK
    [30/Jul/2015 13:22:04] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:04] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [30/Jul/2015 13:22:04] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'oSUbYNza4CdscVDm3sNYZniJVXCOnynr',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:04] DEBUG [djradicale:256] Sanitized path: /testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^$' from section 'userdir'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:204] Anonymous has NO read access to collection testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^$' from section 'userdir'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:216] Anonymous has NO write access to collection testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [30/Jul/2015 13:22:04] INFO [djradicale:339] Anonymous user refused
    [30/Jul/2015 13:22:04] DEBUG [djradicale:358] Answer status: 401 Unauthorized
    [30/Jul/2015 13:22:04] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:04] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [30/Jul/2015 13:22:04] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': '99u7wMM2Sv5wtCe1rAZLvzlT8QR9leEv',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:04] DEBUG [djradicale:256] Sanitized path: /testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:04] DEBUG [djradicale:198] testuser has read access to collection testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:04] DEBUG [djradicale:210] testuser has write access to collection testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [30/Jul/2015 13:22:04] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" xmlns:CR="urn:ietf:params:xml:ns:carddav" xmlns:CS="http://calendarserver.org/ns/">
      <response>
        <href>/pim/testuser/</href>
        <propstat>
          <prop>
            <CR:addressbook-home-set>
              <href>/pim/testuser/</href>
            </CR:addressbook-home-set>
            <displayname>testuser</displayname>
            <principal-collection-set>
              <href>/pim/testuser/</href>
            </principal-collection-set>
            <principal-URL>
              <href>/pim/testuser/</href>
            </principal-URL>
            <supported-report-set>
              <supported-report>
                <report>principal-property-search</report>
              </supported-report>
              <supported-report>
                <report>sync-collection</report>
              </supported-report>
              <supported-report>
                <report>expand-property</report>
              </supported-report>
              <supported-report>
                <report>principal-search-property-set</report>
              </supported-report>
            </supported-report-set>
          </prop>
          <status>HTTP/1.1 200 OK</status>
        </propstat>
        <propstat>
          <prop>
            <CR:directory-gateway />
            <CS:email-address-set />
            <resource-id />
          </prop>
          <status>HTTP/1.1 404 Not Found</status>
        </propstat>
      </response>
    </multistatus>
    
    [30/Jul/2015 13:22:04] DEBUG [djradicale:358] Answer status: 207 Unknown
    [30/Jul/2015 13:22:04] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:04] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [30/Jul/2015 13:22:04] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '717',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': '8YDYywAvyJBzF72xTbbruX6JeCkafnq9',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '1',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:04] DEBUG [djradicale:256] Sanitized path: /testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:04] DEBUG [djradicale:198] testuser has read access to collection testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:04] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:04] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:04] DEBUG [djradicale:210] testuser has write access to collection testuser/
    [30/Jul/2015 13:22:04] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <A:add-member/>
        <D:bulk-requests xmlns:D="http://me.com/_namespace/"/>
        <A:current-user-privilege-set/>
        <A:displayname/>
        <B:max-image-size xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:max-resource-size xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <C:me-card xmlns:C="http://calendarserver.org/ns/"/>
        <A:owner/>
        <C:push-transports xmlns:C="http://calendarserver.org/ns/"/>
        <C:pushkey xmlns:C="http://calendarserver.org/ns/"/>
        <A:quota-available-bytes/>
        <A:quota-used-bytes/>
        <A:resource-id/>
        <A:resourcetype/>
        <A:supported-report-set/>
        <A:sync-token/>
      </A:prop>
    </A:propfind>
    
    [30/Jul/2015 13:22:04] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:CR="urn:ietf:params:xml:ns:carddav" xmlns:CS="http://calendarserver.org/ns/" xmlns:ME="http://me.com/_namespace/">
      <response>
        <href>/pim/testuser/</href>
        <propstat>
          <prop>
            <current-user-privilege-set>
              <privilege>
                <all />
                <read />
                <write />
                <write-properties />
                <write-content />
              </privilege>
            </current-user-privilege-set>
            <displayname>testuser</displayname>
            <resourcetype>
              <principal />
              <C:calendar />
              <collection />
            </resourcetype>
            <supported-report-set>
              <supported-report>
                <report>principal-property-search</report>
              </supported-report>
              <supported-report>
                <report>sync-collection</report>
              </supported-report>
              <supported-report>
                <report>expand-property</report>
              </supported-report>
              <supported-report>
                <report>principal-search-property-set</report>
              </supported-report>
            </supported-report-set>
          </prop>
          <status>HTTP/1.1 200 OK</status>
        </propstat>
        <propstat>
          <prop>
            <add-member />
            <ME:bulk-requests />
            <CR:max-image-size />
            <CR:max-resource-size />
            <CS:me-card />
            <owner />
            <CS:push-transports />
            <CS:pushkey />
            <quota-available-bytes />
            <quota-used-bytes />
            <resource-id />
            <sync-token />
          </prop>
          <status>HTTP/1.1 404 Not Found</status>
        </propstat>
      </response>
    </multistatus>
    
    [30/Jul/2015 13:22:04] DEBUG [djradicale:358] Answer status: 207 Unknown
    [30/Jul/2015 13:22:06] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:06] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
    [30/Jul/2015 13:22:06] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '0',
     'CONTENT_TYPE': 'text/plain',
     'CSRF_COOKIE': 'EhpW16lWZoHJ9po21sBvnXTGZzVRJPJl',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'OPTIONS',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:06] DEBUG [djradicale:256] Sanitized path: /testuser/
    [30/Jul/2015 13:22:06] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:06] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:06] DEBUG [djradicale:198] testuser has read access to collection testuser/
    [30/Jul/2015 13:22:06] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:06] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:06] DEBUG [djradicale:210] testuser has write access to collection testuser/
    [30/Jul/2015 13:22:06] DEBUG [djradicale:358] Answer status: 200 OK
    [30/Jul/2015 13:22:06] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:06] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [30/Jul/2015 13:22:06] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': '3cAklMXhGATjwW4GKcP9J8HlMZf3zW12',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:06] DEBUG [djradicale:256] Sanitized path: /testuser/
    [30/Jul/2015 13:22:06] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:06] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:06] DEBUG [djradicale:198] testuser has read access to collection testuser/
    [30/Jul/2015 13:22:06] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:06] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:06] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:06] DEBUG [djradicale:210] testuser has write access to collection testuser/
    [30/Jul/2015 13:22:06] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [30/Jul/2015 13:22:06] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" xmlns:CR="urn:ietf:params:xml:ns:carddav" xmlns:CS="http://calendarserver.org/ns/">
      <response>
        <href>/pim/testuser/</href>
        <propstat>
          <prop>
            <CR:addressbook-home-set>
              <href>/pim/testuser/</href>
            </CR:addressbook-home-set>
            <displayname>testuser</displayname>
            <principal-collection-set>
              <href>/pim/testuser/</href>
            </principal-collection-set>
            <principal-URL>
              <href>/pim/testuser/</href>
            </principal-URL>
            <supported-report-set>
              <supported-report>
                <report>principal-property-search</report>
              </supported-report>
              <supported-report>
                <report>sync-collection</report>
              </supported-report>
              <supported-report>
                <report>expand-property</report>
              </supported-report>
              <supported-report>
                <report>principal-search-property-set</report>
              </supported-report>
            </supported-report-set>
          </prop>
          <status>HTTP/1.1 200 OK</status>
        </propstat>
        <propstat>
          <prop>
            <CR:directory-gateway />
            <CS:email-address-set />
            <resource-id />
          </prop>
          <status>HTTP/1.1 404 Not Found</status>
        </propstat>
      </response>
    </multistatus>
    
    [30/Jul/2015 13:22:06] DEBUG [djradicale:358] Answer status: 207 Unknown
    [30/Jul/2015 13:22:06] DEBUG [djradicale:34] Authentication type is custom
    [30/Jul/2015 13:22:06] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [30/Jul/2015 13:22:07] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '717',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'PYBznyAWhClC2GPGtDTlcKW1jDy5ST43',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '1',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=7>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [30/Jul/2015 13:22:07] DEBUG [djradicale:256] Sanitized path: /testuser/
    [30/Jul/2015 13:22:07] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:07] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:07] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:07] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:07] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:07] DEBUG [djradicale:198] testuser has read access to collection testuser/
    [30/Jul/2015 13:22:07] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [30/Jul/2015 13:22:07] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [30/Jul/2015 13:22:07] DEBUG [djradicale:71] Section 'rw' does not match
    [30/Jul/2015 13:22:07] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser$' from section 'userdir'
    [30/Jul/2015 13:22:07] DEBUG [djradicale:67] Section 'userdir' matches
    [30/Jul/2015 13:22:07] DEBUG [djradicale:210] testuser has write access to collection testuser/
    [30/Jul/2015 13:22:07] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <A:add-member/>
        <D:bulk-requests xmlns:D="http://me.com/_namespace/"/>
        <A:current-user-privilege-set/>
        <A:displayname/>
        <B:max-image-size xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:max-resource-size xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <C:me-card xmlns:C="http://calendarserver.org/ns/"/>
        <A:owner/>
        <C:push-transports xmlns:C="http://calendarserver.org/ns/"/>
        <C:pushkey xmlns:C="http://calendarserver.org/ns/"/>
        <A:quota-available-bytes/>
        <A:quota-used-bytes/>
        <A:resource-id/>
        <A:resourcetype/>
        <A:supported-report-set/>
        <A:sync-token/>
      </A:prop>
    </A:propfind>
    
    [30/Jul/2015 13:22:07] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:CR="urn:ietf:params:xml:ns:carddav" xmlns:CS="http://calendarserver.org/ns/" xmlns:ME="http://me.com/_namespace/">
      <response>
        <href>/pim/testuser/</href>
        <propstat>
          <prop>
            <current-user-privilege-set>
              <privilege>
                <all />
                <read />
                <write />
                <write-properties />
                <write-content />
              </privilege>
            </current-user-privilege-set>
            <displayname>testuser</displayname>
            <resourcetype>
              <principal />
              <C:calendar />
              <collection />
            </resourcetype>
            <supported-report-set>
              <supported-report>
                <report>principal-property-search</report>
              </supported-report>
              <supported-report>
                <report>sync-collection</report>
              </supported-report>
              <supported-report>
                <report>expand-property</report>
              </supported-report>
              <supported-report>
                <report>principal-search-property-set</report>
              </supported-report>
            </supported-report-set>
          </prop>
          <status>HTTP/1.1 200 OK</status>
        </propstat>
        <propstat>
          <prop>
            <add-member />
            <ME:bulk-requests />
            <CR:max-image-size />
            <CR:max-resource-size />
            <CS:me-card />
            <owner />
            <CS:push-transports />
            <CS:pushkey />
            <quota-available-bytes />
            <quota-used-bytes />
            <resource-id />
            <sync-token />
          </prop>
          <status>HTTP/1.1 404 Not Found</status>
        </propstat>
      </response>
    </multistatus>
    
    [30/Jul/2015 13:22:07] DEBUG [djradicale:358] Answer status: 207 Unknown
    
     
  • Anonymous

    Anonymous - 2015-07-31

    Originally posted by: okami-1

    If your default Radicale setup is working (without django at all), then there is a problem with handling "/.well-known/carddav" urls.

    ".well-known" urls was broken in Radicale a long time ago, so I made a workaround. djradicale is handling ".well-known" urls by himself and redirecting client to default hardcoded addressbook or calendar url.

    You can try to replace a line

        url(r'^\.well-known/(?P<type>(caldav|carddav))$',
            'djradicale.views.wellknown', name='djradicale_well-known'),
    

    with a something like

        url(r'^\.well-known/(caldav|carddav)$',
            'djradicale.views.application', name='djradicale_well-known'),
    

    to skip my workaround and pass the ".well-known" urls to Radicale.

    I did not tested it, because I don't have an Apple PC.

     
  • Anonymous

    Anonymous - 2015-07-31

    Ticket changed by: okami-1

    • status: open --> closed
     
  • Anonymous

    Anonymous - 2015-07-31

    Ticket changed by: okami-1

    • status: closed --> open
     
  • Anonymous

    Anonymous - 2015-08-03

    Originally posted by: max-pfeiffer

    Yes, I learned from the radicale site that .well-known urls became fixed in V0.10. With the change the request is forwarded to radicale:

    [03/Aug/2015 07:23:37] DEBUG [djradicale:34] Authentication type is custom
    [03/Aug/2015 07:23:37] INFO [djradicale:247] PROPFIND request at /.well-known/carddav received
    [03/Aug/2015 07:23:37] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '181',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': '0kiWqNSBILcM1NHMfyIgNsO3XliiR0qU',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/.well-known/carddav',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [03/Aug/2015 07:23:37] DEBUG [djradicale:259] Skipped already sanitized path: /.well-known/carddav
    [03/Aug/2015 07:23:37] INFO [djradicale:293] Refused /.well-known/ redirection to anonymous user
    [03/Aug/2015 07:23:37] DEBUG [djradicale:34] Authentication type is custom
    [03/Aug/2015 07:23:37] INFO [djradicale:247] PROPFIND request at /.well-known/carddav received
    [03/Aug/2015 07:23:37] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '181',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'eLvtL6ARFgDPgeoGeV0k0dfzbKHgito3',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/.well-known/carddav',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [03/Aug/2015 07:23:37] DEBUG [djradicale:259] Skipped already sanitized path: /.well-known/carddav
    [03/Aug/2015 07:23:37] INFO [djradicale:296] /.well-known/ redirection to: /testuser/carddav/
    

    In radicales init.py the function "def call(self, environ, start_response):" gets called. it creates a redirect which failes. The result is a 404:

    [03/Aug/2015 07:23:37] INFO [djradicale:247] PROPFIND request at /.well-known/carddav received
    [03/Aug/2015 07:23:37] INFO [djradicale:296] /.well-known/ redirection to: /testuser/carddav/
    [03/Aug/2015 07:23:37]"PROPFIND /.well-known/carddav HTTP/1.1" 303 0
    [03/Aug/2015 07:23:37] WARNING [django.request:170] Not Found: /testuser/carddav/
    [03/Aug/2015 07:23:37] WARNING [django.request:170] Not Found: /testuser/carddav/
    [03/Aug/2015 07:23:37]"PROPFIND /testuser/carddav/ HTTP/1.1" 404 2239
    [03/Aug/2015 07:23:37] WARNING [django.request:170] Not Found: /
    [03/Aug/2015 07:23:37] WARNING [django.request:170] Not Found: /
    [03/Aug/2015 07:23:37]"PROPFIND / HTTP/1.1" 404 2188
    [03/Aug/2015 07:23:37] WARNING [django.request:170] Not Found: /principals/
    [03/Aug/2015 07:23:37] WARNING [django.request:170] Not Found: /principals/
    [03/Aug/2015 07:23:37]"PROPFIND /principals/ HTTP/1.1" 404 2221
    
     
  • Anonymous

    Anonymous - 2015-08-09

    Originally posted by: okami-1

    I has updated an app, so it should be working now. It depends on the configuration of the urls.py. I can't test it because I don't have an Apple PC.

     
  • Anonymous

    Anonymous - 2015-08-10

    Originally posted by: max-pfeiffer

    I just pulled your changes and did another test run. I used the forward for the radicale well-known-urls.

    [10/Aug/2015 07:55:30] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:30] INFO [djradicale:247] PROPFIND request at /.well-known/carddav received
    [10/Aug/2015 07:55:30] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '181',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'zU0d6fg8WpatbM1oM8xOSgro5yKUcNla',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/.well-known/carddav',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:30] DEBUG [djradicale:259] Skipped already sanitized path: /.well-known/carddav
    [10/Aug/2015 07:55:30] INFO [djradicale:293] Refused /.well-known/ redirection to anonymous user
    [10/Aug/2015 07:55:31] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:31] INFO [djradicale:247] PROPFIND request at /pim/testuser/addressbook.vcf/ received
    [10/Aug/2015 07:55:31] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '181',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': '1QYAznoijtJTrlN5540GxXAZTsThPRNW',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/addressbook.vcf/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:31] DEBUG [djradicale:256] Sanitized path: /testuser/addressbook.vcf/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:62] Test if 'testuser:testuser/addressbook.vcf' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:67] Section 'rw' matches
    [10/Aug/2015 07:55:31] DEBUG [djradicale:198] testuser has read access to collection testuser/addressbook.vcf/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:62] Test if 'testuser:testuser/addressbook.vcf' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:67] Section 'rw' matches
    [10/Aug/2015 07:55:31] DEBUG [djradicale:210] testuser has write access to collection testuser/addressbook.vcf/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <A:current-user-principal/>
        <A:principal-URL/>
        <A:resourcetype/>
      </A:prop>
    </A:propfind>
    
    [10/Aug/2015 07:55:31] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" xmlns:CR="urn:ietf:params:xml:ns:carddav">
      <response>
        <href>/pim/testuser/addressbook.vcf/</href>
        <propstat>
          <prop>
            <current-user-principal>
              <href>/pim/testuser/</href>
            </current-user-principal>
            <principal-URL>
              <href>/pim/testuser/addressbook.vcf/</href>
            </principal-URL>
            <resourcetype>
              <CR:addressbook />
              <collection />
            </resourcetype>
          </prop>
          <status>HTTP/1.1 200 OK</status>
        </propstat>
      </response>
    </multistatus>
    
    [10/Aug/2015 07:55:31] DEBUG [djradicale:358] Answer status: 207 Unknown
    [10/Aug/2015 07:55:31] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:31] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
    [10/Aug/2015 07:55:31] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '0',
     'CONTENT_TYPE': 'text/plain',
     'CSRF_COOKIE': 'txXrqtEFRpjL1Pkush8G7OUb3eOs0Pv7',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'OPTIONS',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:31] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:204] Anonymous has NO read access to collection testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:216] Anonymous has NO write access to collection testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:358] Answer status: 200 OK
    [10/Aug/2015 07:55:31] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:31] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [10/Aug/2015 07:55:31] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'x9GqeY6VEWhtJ0bATPfJGFtkn68I3JZp',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:31] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:204] Anonymous has NO read access to collection testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:62] Test if ':testuser' matches against '.+:^/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:216] Anonymous has NO write access to collection testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [10/Aug/2015 07:55:31] INFO [djradicale:339] Anonymous user refused
    [10/Aug/2015 07:55:31] DEBUG [djradicale:358] Answer status: 401 Unauthorized
    [10/Aug/2015 07:55:31] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:31] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [10/Aug/2015 07:55:31] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'N5G8CkYUo5x2GkeM9jS1Ddo8FCSRdnSX',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:31] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:31] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:31] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:31] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:31] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [10/Aug/2015 07:55:31] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" />
    [10/Aug/2015 07:55:31] DEBUG [djradicale:358] Answer status: 207 Unknown
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '0',
     'CONTENT_TYPE': 'text/plain',
     'CSRF_COOKIE': 'PcXTvltsItCcNJJxCcEkQ2VmBJmEChwq',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'OPTIONS',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 200 OK
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'wkZACoWB3iayQCZeehBDK7yGvwUqBD3J',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [10/Aug/2015 07:55:33] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" />
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 207 Unknown
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '0',
     'CONTENT_TYPE': 'text/plain',
     'CSRF_COOKIE': 'ibzzgsvw23AjZ8fKg7Gh5RKFaYCeYK1Z',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'OPTIONS',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 200 OK
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'uA3RmFX6Aytm9Ehgg4X6eUUCIA2wM2So',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [10/Aug/2015 07:55:33] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" />
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 207 Unknown
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '0',
     'CONTENT_TYPE': 'text/plain',
     'CSRF_COOKIE': 'Q3IbIVAJaTMVIDk0fLSgckIkIAJebqE3',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'OPTIONS',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 200 OK
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'CELKj1OTdXevxavDGRK9vulNz2QyjQG3',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [10/Aug/2015 07:55:33] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" />
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 207 Unknown
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '0',
     'CONTENT_TYPE': 'text/plain',
     'CSRF_COOKIE': 'iaZV6t1cO2KIOlRahrHIDJrZU9SosMYV',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'OPTIONS',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 200 OK
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': '38mIkuiXesvUvjvwQDdiHsJY3TBgKwj2',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [10/Aug/2015 07:55:33] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" />
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 207 Unknown
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] OPTIONS request at /pim/testuser/ received
    [10/Aug/2015 07:55:33] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '0',
     'CONTENT_TYPE': 'text/plain',
     'CSRF_COOKIE': 'lLXsSl5trBmSOPS3Y93B9EVlZXgDDYSx',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'OPTIONS',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:33] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:33] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:33] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:33] DEBUG [djradicale:358] Answer status: 200 OK
    [10/Aug/2015 07:55:33] DEBUG [djradicale:34] Authentication type is custom
    [10/Aug/2015 07:55:33] INFO [djradicale:247] PROPFIND request at /pim/testuser/ received
    [10/Aug/2015 07:55:34] DEBUG [djradicale:249] Request headers:
    {'CONTENT_LENGTH': '439',
     'CONTENT_TYPE': 'text/xml',
     'CSRF_COOKIE': 'rPrZvSC4MCXowFOMvMnWghZ5UN6I8zrU',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HTTP_ACCEPT': '*/*',
     'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
     'HTTP_ACCEPT_LANGUAGE': 'en-us',
     'HTTP_AUTHORIZATION': 'Basic dGVzdHVzZXI6dGVzdA==',
     'HTTP_BRIEF': 't',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_DEPTH': '0',
     'HTTP_HOST': '127.0.0.1:8000',
     'HTTP_PREFER': 'return=minimal',
     'HTTP_USER_AGENT': 'Mac OS X/10.10.4 (14E46) AddressBook/1579',
     'PATH_INFO': '/pim/testuser/',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'PROPFIND',
     'SCRIPT_NAME': '',
     'SERVER_NAME': '1.0.0.127.in-addr.arpa',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.2',
     'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
     'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>,
     'wsgi.input': <_io.BufferedReader name=5>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}
    [10/Aug/2015 07:55:34] DEBUG [djradicale:256] Sanitized path: /testuser/
    [10/Aug/2015 07:55:34] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:34] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:34] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:34] DEBUG [djradicale:204] testuser has NO read access to collection testuser/
    [10/Aug/2015 07:55:34] DEBUG [djradicale:55] Rights type 'djradicale.rights.django'
    [10/Aug/2015 07:55:34] DEBUG [djradicale:62] Test if 'testuser:testuser' matches against '.+:^testuser/[a-z0-9\.\-_]+\.(vcf|ics)$' from section 'rw'
    [10/Aug/2015 07:55:34] DEBUG [djradicale:71] Section 'rw' does not match
    [10/Aug/2015 07:55:34] DEBUG [djradicale:216] testuser has NO write access to collection testuser/
    [10/Aug/2015 07:55:34] DEBUG [djradicale:321] Request content:
    <?xml version="1.0" encoding="UTF-8"?>
    <A:propfind xmlns:A="DAV:">
      <A:prop>
        <B:addressbook-home-set xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <B:directory-gateway xmlns:B="urn:ietf:params:xml:ns:carddav"/>
        <A:displayname/>
        <C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
        <A:principal-collection-set/>
        <A:principal-URL/>
        <A:resource-id/>
        <A:supported-report-set/>
      </A:prop>
    </A:propfind>
    
    [10/Aug/2015 07:55:34] DEBUG [djradicale:349] Response content:
    <?xml version="1.0"?>
    <multistatus xmlns="DAV:" />
    [10/Aug/2015 07:55:34] DEBUG [djradicale:358] Answer status: 207 Unknown
    

    I now get 404s on different occasions:

    [10/Aug/2015 07:59:44] INFO [djradicale:247] PROPFIND request at /.well-known/carddav received
    [10/Aug/2015 07:59:44] INFO [djradicale:293] Refused /.well-known/ redirection to anonymous user
    [10/Aug/2015 07:59:44]"PROPFIND /.well-known/carddav HTTP/1.1" 401 0
    [10/Aug/2015 07:59:44] INFO [djradicale:247] PROPFIND request at /.well-known/carddav received
    [10/Aug/2015 07:59:44] INFO [djradicale:296] /.well-known/ redirection to: /testuser/carddav/
    [10/Aug/2015 07:59:44]"PROPFIND /.well-known/carddav HTTP/1.1" 303 0
    [10/Aug/2015 07:59:44] WARNING [django.request:170] Not Found: /testuser/carddav/
    [10/Aug/2015 07:59:44] WARNING [django.request:170] Not Found: /testuser/carddav/
    [10/Aug/2015 07:59:44]"PROPFIND /testuser/carddav/ HTTP/1.1" 404 2255
    [10/Aug/2015 07:59:44] WARNING [django.request:170] Not Found: /
    [10/Aug/2015 07:59:44] WARNING [django.request:170] Not Found: /
    [10/Aug/2015 07:59:44]"PROPFIND / HTTP/1.1" 404 2204
    [10/Aug/2015 07:59:45] WARNING [django.request:170] Not Found: /principals/
    [10/Aug/2015 07:59:45] WARNING [django.request:170] Not Found: /principals/
    [10/Aug/2015 07:59:45]"PROPFIND /principals/ HTTP/1.1" 404 2237
    
     
  • Anonymous

    Anonymous - 2015-08-10

    Originally posted by: okami-1

    testuser has NO write access to collection testuser/
    

    But he should. Check your permissions.
    You will need this regexp '^%(login)s/[a-z0-9.-_]+.(vcf|ics)$' for accessing a collection,
    and this regexp '^%(login)s$' for getting a list of your collections in autodiscovery process.
    So you need both permissions.

    Not Found: /testuser/carddav/
    

    Looks like a wrong redirect path. You need to update your settings. There is a new section has been added in Radicale 0.10 and it does not uses a prefix, so you should change it to something like that:

        'well-known': {
            'carddav': '/pim/%(user)s/addressbook.vcf',
            'caldav': '/pim/%(user)s/calendar.ics',
        },
    

    I has already updated a README.

     

Log in to post a comment.

MongoDB Logo MongoDB