228384530e
Using a separate os.Stat() call may result in a race where another request handler running concurrently creates the file in-between the os.Stat() call and the os.Create() call. Use O_EXCL to avoid this situation. |
||
---|---|---|
auth | ||
cmd/tokidoki | ||
debug | ||
storage | ||
.build.yml | ||
go.mod | ||
go.sum | ||
LICENSE | ||
README.md |
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)
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.