pimutils / pimutils/vdirsyncer

Implement DNS-based DAV service discovery

Open
#748 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

cat: RFCs cat: server compat lv: medium mod: DAV planning
Dominant language
Python
Stars
1.9k
Forks
185
Avg merge
11h 49m
Merged PRs (30d)
1

Description

Currently we do the following in dav/mod.rs (after merging #747):

  • if the URL configured by the user has a path != "/", use it directly as homeset-URL (interpreting it as manual override)
  • otherwise attempt to call GET https://{host}:{port}/.well-known/caldav (in get_well_known_url) and hope we will get redirected to the right URL
  • if we get an error from the server, use the configured URL as base URL again

It would be nice if we got DNS-based discovery into our heuristics as well (see http://sabre.io/dav/service-discovery/). The biggest question is when we should do that. Two ideas come to mind:

Just add it to the chain

  • Attempt to use configured URI directly, if it works, return
  • Attempt well-known-based discovery, if it works, return
  • Attempt DNS-based discovery, if it works, return

URL-less login

Or perhaps only attempt DNS-based discovery if the user didn't specify a URL and their username is an email address?

So this will trigger the current heuristics:

url = https://icloud.com
username = jeanne.doe@icloud.com
password = ...

But this will trigger DNS-based discovery:

username = jeanne.doe@icloud.com
password = ...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in dav/mod.rs, especially get_well_known_url and the discovery flow described after #747. Review the linked service-discovery reference and decide whether DNS lookup belongs in the fallback chain or only in URL-less email login. Done means the chosen discovery behavior and its ordering are implemented and verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.