diff --git a/backend/app/__init__.py b/backend/app/__init__.py index b85719d..20d1aeb 100644 --- a/backend/app/__init__.py +++ b/backend/app/__init__.py @@ -97,22 +97,27 @@ def create_app(config_class=Config): # Well-known URLs for CalDAV/CardDAV auto-discovery (iOS, DAVx5, etc.). # 301-Redirect bei PROPFIND ist bei einigen Clients zickig, deshalb # delegieren wir intern direkt an die DAV-Handler, statt zu redirecten. + from flask import request from app.dav.caldav import propfind as dav_propfind, options as dav_options - @app.route('/.well-known/caldav', methods=['GET', 'HEAD']) - @app.route('/.well-known/carddav', methods=['GET', 'HEAD']) - def wellknown_redirect(): + def _wellknown_dav(): + if request.method == 'PROPFIND': + return dav_propfind(subpath='') + if request.method == 'OPTIONS': + return dav_options() return redirect('/dav/', code=301) - @app.route('/.well-known/caldav', methods=['PROPFIND']) - @app.route('/.well-known/carddav', methods=['PROPFIND']) - def wellknown_propfind(): - return dav_propfind(subpath='') - - @app.route('/.well-known/caldav', methods=['OPTIONS']) - @app.route('/.well-known/carddav', methods=['OPTIONS']) - def wellknown_options(): - return dav_options() + app.add_url_rule( + '/.well-known/caldav', view_func=_wellknown_dav, + methods=['GET', 'HEAD', 'PROPFIND', 'OPTIONS'], + provide_automatic_options=False, + ) + app.add_url_rule( + '/.well-known/carddav', view_func=_wellknown_dav, + endpoint='_wellknown_carddav', + methods=['GET', 'HEAD', 'PROPFIND', 'OPTIONS'], + provide_automatic_options=False, + ) # iCal export (public, no auth) @app.route('/ical/')