Go to file
Conrad Hoffmann b266d53b15 Pass capabilites to principal path handler
The capabilities are added automatically by the default principal path
handlers in the `caldav` and `carddav` packages. However, using the
custom handler, they have to be passed in manually.

These being missing before was a violation of the RFC and the cause for
issues when using e.g. DavX5 client. This is now fixed.
2022-12-14 15:19:02 +01:00
auth Switch to a proper logging library 2022-12-01 13:46:25 +01:00
cmd/tokidoki Pass capabilites to principal path handler 2022-12-14 15:19:02 +01:00
storage Switch to a proper logging library 2022-12-01 13:46:25 +01:00
.build.yml Add build manifest with build and lint steps 2022-05-20 09:55:51 +02:00
go.mod Update go-webdav to latest version 2022-12-14 15:18:40 +01:00
go.sum Update go-webdav to latest version 2022-12-14 15:18:40 +01:00
LICENSE Initial commit 2022-02-21 09:52:55 +01:00
README.md auth: add PAM support 2022-09-13 10:04:45 +02:00

tokidoki

Tokidoki is a (WIP) carddav and caldav server.

Architecture

Tokidoki relies on go-webdav for the protocol implementation. It provides the storage backend and authentication, both of which are easily pluggable.

It currently provides:

Authentication:

  • IMAP (working)
  • PAM (working, enabled via the pam build tag)

Storage:

  • Filesystem (working)
  • PostgreSQL (planned)

Building

  • cd cmd/tokidoki && go build

Running

Using the IMAP authentication backend and the filesystem storage backend (directory must exist), listening on port 8080 on all interfaces:

  • ./tokidoki -addr ":8080" -auth.url imaps://imap.example.com:993 -storage.url file:///path/to/storage -debug

Tokidoki does not support HTTPS at this time, use a reverse TLS proxy if needed.

Usage

Only a single address book and calendar per user are supported at the moment, this is currently a limitation in go-webdav.

Tokidoki supports calendar and address book auto-discovery via /.well-known/caldav and /.well-known/carddav respectively, as defined in RFC 6764, section 6. Hence, most clients should be able to discover resources by just pointing them at the server root.