Discussion in this thread brought up this issue, but it’s a little broader of an issue and I think could use its own thread. We have three apps currently in the software center (SOGo, WebTop, and Nextcloud) with the capability of providing Cal/CardDAV services, but part of that involves redirecting /.well-known/something to the respective apps. Obviously we can’t simultaneously redirect /.well-known/caldav to both SOGo and WebTop, so we need a way to control which app will be used for requests.
We currently have a mechanism in place to address a comparable problem for ActiveSync, but I don’t think it’s an optimal solution–it relies on configuration properties for the respective apps (with the potential of conflicting settings, and then the need for rules to determine which takes precedence in the event of a conflict). I believe a better approach would be a single property of the form config set dav configuration caldav {none|nextcloud|sogo|webtop} carddav {none|nextcloud|sogo|webtop}
.
I’m thinking it would be implemented like this:
- We expose the setting in the server manager somewhere (as a drop-down, I’d think), including “none” as an option
- This means the server manager needs to know what handlers are installed. A “brute force” way to achieve this would be to just check whether nethserver-{nextcloud|sogo|webtop5} are installed; a more elegant way would be to implement some sort of registry of handlers. Or just require the system admin to know what’s installed on his system, and expect he won’t choose poorly–though I’m not a fan of that plan.
- No app sets itself as the handler for cal/carddav
- Therefore, the user explicitly chooses among the available apps
- When nethserver-blah is removed, it queries the
dav
property to see if it’s set as the cal/carddav handler. If so, it sets that handler to “none”.
In addition to resolving the conflict, this also would implement the necessary redirects for Nextcloud, which aren’t currently implemented at all. Thoughts?