From c5b99d2f192b2e157e1591c18042f9fdd37996f2 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Thu, 28 Mar 2024 17:04:52 -0700 Subject: [PATCH] Everyone who designed CalDAV deserves torture and ultra-violent death. --- webcit-ng/server/caldav_reports.c | 11 ++++++++--- webcit-ng/server/request.c | 12 ++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/webcit-ng/server/caldav_reports.c b/webcit-ng/server/caldav_reports.c index 49d1fe8d0..95ccb538f 100644 --- a/webcit-ng/server/caldav_reports.c +++ b/webcit-ng/server/caldav_reports.c @@ -463,6 +463,8 @@ void caldav_report(struct http_transaction *h, struct ctdlsession *c) { return; } + syslog(LOG_DEBUG, "\033[31mREPORT QUERY: %s\033[0m", h->request_body); + XML_SetElementHandler(xp, caldav_xml_start, caldav_xml_end); XML_SetCharacterDataHandler(xp, caldav_xml_chardata); XML_SetUserData(xp, &crp); @@ -484,8 +486,8 @@ void caldav_report(struct http_transaction *h, struct ctdlsession *c) { syslog(LOG_DEBUG, "CalDAV REPORT type is: %d", crp.report_type); StrBuf *ReportOut = NewStrBuf(); StrBufAppendPrintf(ReportOut, - "", - CALDAV + "" + "" ); // RFC4791 7.8 "calendar-query" REPORT - Client will send a lot of search criteria. @@ -505,8 +507,11 @@ void caldav_report(struct http_transaction *h, struct ctdlsession *c) { syslog(LOG_DEBUG, "Evaluating message \033[33m%ld\033[0m...", m); if (caldav_apply_filters(cal, crp.filters, 0)) { syslog(LOG_DEBUG, "Message %ld \033[32mQUALIFIES\033[0m", m); + // FIXME need to populate the Href instead of NULL - cal_multiget_out(m, NULL, one_item, ReportOut); + StrBuf *FIXME = NewStrBufPlain(HKEY("https://FIX.ME.COM/WOW/EEK")); + cal_multiget_out(m, FIXME, one_item, ReportOut); + } else { syslog(LOG_DEBUG, "Message %ld \033[31mDOES NOT QUALIFY\033[0m", m); diff --git a/webcit-ng/server/request.c b/webcit-ng/server/request.c index bd1b32538..ee08578dc 100644 --- a/webcit-ng/server/request.c +++ b/webcit-ng/server/request.c @@ -94,6 +94,18 @@ void perform_request(struct http_transaction *h) { return; } + // CalDAV discovery + if (!strncasecmp(h->url, HKEY("/.well-known/caldav"))) { + http_redirect(h, "/ctdl/r/calendar"); + return; + } + + // CardDAV discovery + if (!strncasecmp(h->url, HKEY("/.well-known/carddav"))) { + http_redirect(h, "/ctdl/r/contacts"); + return; + } + // Legacy URL patterns (/readnew?gotoroom=xxx&start_reading_at=yyy) ... // Direct room name (/my%20blog) ... -- 2.30.2