Skip to content

calternal-plugin-calendar

Calendar Plugin for connected CalDAV providers.

client/ speaks to external providers. cache/ stores encrypted account Security state and rebuildable event data in the Index. No event copy is written to a Home or to a local iCalendar file. Request timing exposes selected operations without User data (#549).

Source: crates/plugins/calendar/src/lib.rs

Module Summary
cache Derived calendar data and Security state stored in the Index.
client CalDAV discovery, collection synchronization, and conditional event writes.
feeds Calendar feed adapters for issue #431 and the public route in DESIGN §33.
view Calendar projections read rebuildable Index rows from their owning Plugins.
pub enum InstanceKeyError

No doc comment.

Variants

  • InvalidEnvironmentValue
  • RandomSource
  • MissingAfterRace
  • Filesystem(calternal_fs::Error)

Implements: Debug, std::fmt::Display, std::error::Error

Source: crates/plugins/calendar/src/lib.rs:88

pub fn configure_instance_secret_key(key: [u8; 32]) -> Result<(), InstanceKeyError>

Install the key before the server constructs the plugin router.

Source: crates/plugins/calendar/src/lib.rs:113

pub fn configure_public_url(public_url: String)

Configure the canonical instance URL used in Event and Note deep links.

The server validates this URL before it builds Plugin routes. Keeping one configured value prevents request Host headers from changing stored links.

Source: crates/plugins/calendar/src/lib.rs:127

pub fn configure_subscription_allowed_networks(networks: Vec<ipnet::IpNet>)

Allow URL subscriptions to reach these operator-listed networks (#431).

Subscriptions accept only globally routable addresses by default. An instance admin can list private networks (for example an internal school calendar server) with CALTERNAL_SERVER__SUBSCRIPTION_ALLOWED_NETWORKS. Only the first call has an effect, like the other instance settings.

Source: crates/plugins/calendar/src/lib.rs:137

pub fn load_instance_secret_key(root: &Root) -> Result<[u8; 32], InstanceKeyError>

Load the instance AEAD key or create it below the reserved system directory.

CALTERNAL_SECRET_KEY uses padded standard Base64 for exactly 32 bytes. The key file stores the same 32 bytes in binary. Key rotation is a separate operation because it must re-encrypt every credential in the Index.

Source: crates/plugins/calendar/src/lib.rs:35