Calendar.mail.ru not sync



  • https://calendar.mail.ru not synced, because it is not implement correctly an "OPTIONS" webdav-request. Please, add feature to skip "OPTIONS" and use default options if caldav server not return options correctly.
    See "Em Client" implementation of this feature (captured by fiddler), by example:

    OPTIONS https://calendar.mail.ru/ HTTP/1.1
    User-Agent: eM Client/6.0.21040.0
    Accept-Encoding: gzip, deflate
    Host: calendar.mail.ru
    Content-Length: 0
    Connection: Keep-Alive

    HTTP/1.1 302 FOUND
    Server: nginx/1.5.11
    Date: Thu, 25 Dec 2014 07:20:33 GMT
    Content-Type: text/html; charset=utf-8
    Transfer-Encoding: chunked
    Connection: close
    X-Frame-Options: SAMEORIGIN
    Location: https://calendar.mail.ru/login/?page=/
    Strict-Transport-Security: max-age=31556926
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Security-Policy: default-src *.mail.ru *.imgsmail.ru *.yadro.ru *.facebook.com *.vk.com *.odnoklassniki.ru *.ok.ru *.tns-counter.ru *.youtube.com; script-src 'unsafe-inline' 'unsafe-eval' *.mail.ru *.imgsmail.ru *.yadro.ru *.facebook.com *.vk.com *.odnoklassniki.ru *.ok.ru *.tns-counter.ru *.youtube.com *.twitter.com; style-src 'unsafe-inline' 'unsafe-eval' *.mail.ru *.imgsmail.ru *.youtube.com; img-src data: *; report-uri https://cspreport.mail.ru/calendar/;

    0


    OPTIONS https://calendar.mail.ru/login/?page=/ HTTP/1.1
    User-Agent: eM Client/6.0.21040.0
    Accept-Encoding: gzip, deflate
    Host: calendar.mail.ru
    Content-Length: 0

    HTTP/1.1 200 OK
    Server: nginx/1.5.11
    Date: Thu, 25 Dec 2014 07:20:33 GMT
    Content-Type: text/html; charset=utf-8
    Transfer-Encoding: chunked
    Connection: close
    X-Frame-Options: SAMEORIGIN
    Strict-Transport-Security: max-age=31556926
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Security-Policy: default-src *.mail.ru *.imgsmail.ru *.yadro.ru *.facebook.com *.vk.com *.odnoklassniki.ru *.ok.ru *.tns-counter.ru *.youtube.com; script-src 'unsafe-inline' 'unsafe-eval' *.mail.ru *.imgsmail.ru *.yadro.ru *.facebook.com *.vk.com *.odnoklassniki.ru *.ok.ru *.tns-counter.ru *.youtube.com *.twitter.com; style-src 'unsafe-inline' 'unsafe-eval' *.mail.ru *.imgsmail.ru *.youtube.com; img-src data: *; report-uri https://cspreport.mail.ru/calendar/;
    Content-Encoding: gzip

    5d86
    <...............................................bad html page...................................................>
    0


    PROPFIND https://calendar.mail.ru/ HTTP/1.1
    User-Agent: eM Client/6.0.21040.0
    Accept-Encoding: gzip, deflate
    Content-Type: text/xml; charset=utf-8
    Accept: text/xml
    Brief: t
    Depth: 0
    Host: calendar.mail.ru
    Content-Length: 123

    <?xml version="1.0" encoding="utf-8"?><D:propfind xmlns:D="DAV:"><D:prop><D:current-user-principal /></D:prop></D:propfind>
    HTTP/1.1 301 MOVED PERMANENTLY
    Server: nginx/1.5.11
    Date: Thu, 25 Dec 2014 07:20:33 GMT
    Content-Type: text/html; charset=utf-8
    Transfer-Encoding: chunked
    Connection: close
    X-Frame-Options: SAMEORIGIN
    Location: https://calendar.mail.ru/principals/
    Strict-Transport-Security: max-age=31556926
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Security-Policy: default-src *.mail.ru *.imgsmail.ru *.yadro.ru *.facebook.com *.vk.com *.odnoklassniki.ru *.ok.ru *.tns-counter.ru *.youtube.com; script-src 'unsafe-inline' 'unsafe-eval' *.mail.ru *.imgsmail.ru *.yadro.ru *.facebook.com *.vk.com *.odnoklassniki.ru *.ok.ru *.tns-counter.ru *.youtube.com *.twitter.com; style-src 'unsafe-inline' 'unsafe-eval' *.mail.ru *.imgsmail.ru *.youtube.com; img-src data: *; report-uri https://cspreport.mail.ru/calendar/;

    0


    PROPFIND https://calendar.mail.ru/principals/ HTTP/1.1
    User-Agent: eM Client/6.0.21040.0
    Accept-Encoding: gzip, deflate
    Content-Type: text/xml; charset=utf-8
    Accept: text/xml
    Brief: t
    Depth: 0
    Host: calendar.mail.ru
    Content-Length: 123

    <?xml version="1.0" encoding="utf-8"?><D:propfind xmlns:D="DAV:"><D:prop><D:current-user-principal /></D:prop></D:propfind>
    HTTP/1.1 401 UNAUTHORIZED
    Server: nginx/1.5.11
    Date: Thu, 25 Dec 2014 07:20:33 GMT
    Content-Type: text/plain
    Transfer-Encoding: chunked
    Connection: close
    X-Frame-Options: SAMEORIGIN
    WWW-Authenticate: Basic realm="Calendar.mail.ru"

    1a
    401 Authorization Required
    0


    PROPFIND https://calendar.mail.ru/principals/ HTTP/1.1
    User-Agent: eM Client/6.0.21040.0
    Accept-Encoding: gzip, deflate
    Content-Type: text/xml; charset=utf-8
    Accept: text/xml
    Brief: t
    Depth: 0
    Authorization: Basic pbmUucnU6SGpjY2J6MjAxOA==
    Host: calendar.mail.ru
    Content-Length: 123

    <?xml version="1.0" encoding="utf-8"?><D:propfind xmlns:D="DAV:"><D:prop><D:current-user-principal /></D:prop></D:propfind>
    HTTP/1.1 301 MOVED PERMANENTLY
    Server: nginx/1.5.11
    Date: Thu, 25 Dec 2014 07:20:33 GMT
    Content-Type: text/html; charset=utf-8
    Transfer-Encoding: chunked
    Connection: close
    X-Email: blabla@mail.ru
    X-Frame-Options: SAMEORIGIN
    Location: https://calendar.mail.ru/principals/users/blabla@mail.ru
    Strict-Transport-Security: max-age=31556926
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Security-Policy: default-src *.mail.ru *.imgsmail.ru *.yadro.ru *.facebook.com *.vk.com *.odnoklassniki.ru *.ok.ru *.tns-counter.ru *.youtube.com; script-src 'unsafe-inline' 'unsafe-eval' *.mail.ru *.imgsmail.ru *.yadro.ru *.facebook.com *.vk.com *.odnoklassniki.ru *.ok.ru *.tns-counter.ru *.youtube.com *.twitter.com; style-src 'unsafe-inline' 'unsafe-eval' *.mail.ru *.imgsmail.ru *.youtube.com; img-src data: *; report-uri https://cspreport.mail.ru/calendar/;

    0


  • developer

    Thanks for your report. Did you already contact mail.ru support about this? Apparently, it's a problem of mai.ru



  • Yes, i send this to support of mail.ru , and no report result over one year. EmClient is work with this, and DavDroid may be work.


  • developer

    You may fork DAVdroid and comment the few lines out. However, as the OPTIONS check is required to check for misconfiguration (for instance, proxy servers not allowing DAV methods), we won't disable it in DAVdroid just because a single service isn't going to fix their servers.

    I recommend to use server software or a service whose developers are actually willing to provide a working CalDAV/CardDAV interface. You can find a list of services that are known to work with DAVdroid at https://davdroid.bitfire.at/configuration



  • Hmm, why not simply try the HTTP methods without an OPTIONS check and handle the 405?


  • developer

    405 is handled and will show a sync error.

    Why should DAVdroid be changed for a service that's not even trying to make their services interoperable and apparently doesn't has a market share that allows them to ignore any standards?

    DAVdroid's goal is not to support all services at any cirumstances but to provide a robust CalDAV/CardDAV sync adapter that works with compliant services.

    I can try to contact mail.ru too if you want.

    And, if you really need this, you can - as said above - just comment out the OPTIONS check and re-compile DAVdroid. It's really simple, you just need to run gradle build.



  • OPTIONS is another DAV method is not allowed



  • if OPTIONS is not allowed, try PROPFIND.
    OPTIONS may be not allowed if webpage server and DAV server based on one site, by example, calendar.mail.ru.



  • PROPFIND is feasible for CardDAV, but CalDAV needs things such as limiting the kind of items ("only fetch VEVENTs") and limiting the timerange. Implementing both is quite a bit of work.


  • developer

    WebDAV-compliant servers MUST understand OPTIONS so that clients can see which features are supported. It's the way to see whether a resource is WebDAV-capable and which features are available.


Log in to reply
 

Looks like your connection to Bitfire App Forums was lost, please wait while we try to reconnect.