Add CardDav and CalDav servers (#80)
* Add CardDav and CalDav servers This implements the servers, but not the clients (yet). The implementation is essentially a proxy to Radicale (as a container in `docker-compose.yml`), with certain security assurances. If you're upgrading, basically you'll need to create a new `data-radicale` directory, and everything else should just work. This will also release v2.3.0 with those enabled by default. Tested with Thunderbird and Apple Calendar + Contacts. To disable these, simply add the new config details and comment out or don't add the new `radicale` service from `docker-compose.yml`. Related to #56
This commit is contained in:
@@ -7,7 +7,10 @@ export const handler = [
|
||||
async function handleCors(request: Request, context: FreshContext<FreshContextState>) {
|
||||
const path = new URL(request.url).pathname;
|
||||
|
||||
if (request.method == 'OPTIONS' && path !== '/dav' && !path.startsWith('/dav/')) {
|
||||
if (
|
||||
request.method == 'OPTIONS' && path !== '/dav' && !path.startsWith('/dav/') && path !== '/carddav' &&
|
||||
!path.startsWith('/carddav/') && path !== '/caldav' && !path.startsWith('/caldav/')
|
||||
) {
|
||||
const response = new Response(null, {
|
||||
status: 204,
|
||||
});
|
||||
@@ -68,10 +71,14 @@ export const handler = [
|
||||
const response = await context.next();
|
||||
|
||||
console.info(`${new Date().toISOString()} - [${response.status}] ${request.method} ${request.url}`);
|
||||
// NOTE: Uncomment when debugging WebDav stuff
|
||||
// if (request.url.includes('/dav')) {
|
||||
// NOTE: Uncomment when debugging WebDav/CardDav/CalDav stuff
|
||||
// if (request.url.includes('/dav') || request.url.includes('/carddav') || request.url.includes('/caldav')) {
|
||||
// console.info(`Request`, request.headers);
|
||||
// console.info((await request.clone().text()) || '<No Body>');
|
||||
// try {
|
||||
// console.info((await request.clone().text()) || '<No Body>');
|
||||
// } catch (_error) {
|
||||
// console.info('<No Body>');
|
||||
// }
|
||||
// console.info(`Response`, response.headers);
|
||||
// console.info(`Status`, response.status);
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user