pimutils / pimutils/vdirsyncer
Implement DNS-based DAV service discovery
Nobody has claimed this yet.
- 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(inget_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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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