mirror of
https://github.com/lennart-k/rustical.git
synced 2026-01-30 21:18:19 +00:00
Compare commits
4 Commits
v0.12.2
...
8b2bb1b0d6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b2bb1b0d6 | ||
|
|
da72aa26cb | ||
|
|
b89ff1a2b5 | ||
|
|
246a1aa738 |
28
Cargo.lock
generated
28
Cargo.lock
generated
@@ -567,9 +567,9 @@ checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
|
||||
|
||||
[[package]]
|
||||
name = "caldata"
|
||||
version = "0.13.1"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5549ae654c8e80ff922297ad06c49be64668cf947cb6ce45a2069985d21a2135"
|
||||
checksum = "f36de4a8034d98c95e7fe874b828272d823cfbd68e9571fe7bf6c419e852cbe2"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"chrono-tz",
|
||||
@@ -3309,7 +3309,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"argon2",
|
||||
@@ -3356,7 +3356,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_caldav"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"async-std",
|
||||
"async-trait",
|
||||
@@ -3398,7 +3398,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_carddav"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum",
|
||||
@@ -3432,7 +3432,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_dav"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum",
|
||||
@@ -3458,7 +3458,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_dav_push"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum",
|
||||
@@ -3483,7 +3483,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_frontend"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"askama",
|
||||
"askama_web",
|
||||
@@ -3519,7 +3519,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_ical"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"caldata",
|
||||
@@ -3538,7 +3538,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_oidc"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum",
|
||||
@@ -3554,7 +3554,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_store"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -3587,7 +3587,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_store_sqlite"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"caldata",
|
||||
@@ -3612,7 +3612,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustical_xml"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"quick-xml",
|
||||
"thiserror 2.0.18",
|
||||
@@ -5434,7 +5434,7 @@ checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
|
||||
|
||||
[[package]]
|
||||
name = "xml_derive"
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
dependencies = [
|
||||
"darling 0.23.0",
|
||||
"heck",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
members = ["crates/*"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.12.2"
|
||||
version = "0.12.3"
|
||||
rust-version = "1.92"
|
||||
edition = "2024"
|
||||
description = "A CalDAV server"
|
||||
@@ -107,7 +107,7 @@ strum = "0.27"
|
||||
strum_macros = "0.27"
|
||||
serde_json = { version = "1.0", features = ["raw_value"] }
|
||||
sqlx-sqlite = { version = "0.8", features = ["bundled"] }
|
||||
caldata = { version = "0.13.0", features = ["chrono-tz", "vtimezones-rs"] }
|
||||
caldata = { version = "0.14.0", features = ["chrono-tz", "vtimezones-rs"] }
|
||||
toml = "0.9"
|
||||
tower = "0.5"
|
||||
tower-http = { version = "0.6", features = [
|
||||
|
||||
@@ -24,6 +24,7 @@ a CalDAV/CardDAV server
|
||||
- Apple configuration profiles (skip copy-pasting passwords and instead generate the configuration in the frontend)
|
||||
- **OpenID Connect** support (with option to disable password login)
|
||||
- Group-based **sharing**
|
||||
- Partial [RFC 7809](https://datatracker.ietf.org/doc/html/rfc7809) support. RustiCal will accept timezones by reference and handle omitted timezones in objects.
|
||||
|
||||
## Getting Started
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ use axum::{
|
||||
extract::{Path, State},
|
||||
response::{IntoResponse, Response},
|
||||
};
|
||||
use caldata::IcalParser;
|
||||
use caldata::component::{Component, ComponentMut};
|
||||
use caldata::{IcalParser, parser::ParserOptions};
|
||||
use http::StatusCode;
|
||||
use rustical_dav::header::Overwrite;
|
||||
use rustical_ical::CalendarObjectType;
|
||||
@@ -50,7 +50,7 @@ pub async fn route_import<C: CalendarStore, S: SubscriptionStore>(
|
||||
cal.remove_property("X-WR-CALDESC");
|
||||
cal.remove_property("X-WR-CALCOLOR");
|
||||
cal.remove_property("X-WR-TIMEZONE");
|
||||
let cal = cal.build(None).unwrap();
|
||||
let cal = cal.build(&ParserOptions::default(), None).unwrap();
|
||||
|
||||
// Make sure timezone is valid
|
||||
if let Some(timezone_id) = timezone_id.as_ref() {
|
||||
|
||||
@@ -7,7 +7,7 @@ use axum::{
|
||||
use caldata::{
|
||||
VcardParser,
|
||||
component::{Component, ComponentMut},
|
||||
parser::ContentLine,
|
||||
parser::{ContentLine, ParserOptions},
|
||||
};
|
||||
use http::StatusCode;
|
||||
use rustical_store::{Addressbook, AddressbookStore, SubscriptionStore, auth::Principal};
|
||||
@@ -37,7 +37,7 @@ pub async fn route_import<AS: AddressbookStore, S: SubscriptionStore>(
|
||||
value: Some(uuid::Uuid::new_v4().to_string()),
|
||||
params: vec![].into(),
|
||||
});
|
||||
card = card_mut.build(None).unwrap();
|
||||
card = card_mut.build(&ParserOptions::default(), None).unwrap();
|
||||
}
|
||||
// TODO: Make nicer
|
||||
let uid = card.get_uid().unwrap();
|
||||
|
||||
@@ -6,7 +6,7 @@ use caldata::{
|
||||
IcalEventBuilder, VcardContact,
|
||||
},
|
||||
generator::Emitter,
|
||||
parser::ContentLine,
|
||||
parser::{ContentLine, ParserOptions},
|
||||
property::{
|
||||
Calscale, IcalCALSCALEProperty, IcalDTENDProperty, IcalDTSTAMPProperty,
|
||||
IcalDTSTARTProperty, IcalPRODIDProperty, IcalRRULEProperty, IcalSUMMARYProperty,
|
||||
@@ -136,7 +136,7 @@ impl AddressObject {
|
||||
inner: Some(CalendarInnerDataBuilder::Event(vec![event])),
|
||||
vtimezones: BTreeMap::default(),
|
||||
}
|
||||
.build(None)?
|
||||
.build(&ParserOptions::default(), None)?
|
||||
.into(),
|
||||
))
|
||||
}
|
||||
|
||||
@@ -48,3 +48,26 @@ Since the app tokens are random they use the faster `pbkdf2` algorithm.
|
||||
```sh
|
||||
cargo install --locked --git https://github.com/lennart-k/rustical
|
||||
```
|
||||
|
||||
## NixOS (community-maintained by [@PopeRigby](https://github.com/PopeRigby))
|
||||
|
||||
!!! warning
|
||||
The NixOS package is not maintained by myself but since I appreciate [@PopeRigby](https://github.com/PopeRigby)'s work on it I want to mention it.
|
||||
Since rustical's development is still quite active I **strongly** recommend installing from the `nixpkgs-unstable` branch.
|
||||
|
||||
In the `nixpkgs-unstable` you'll find a `rustical` package you can install.
|
||||
|
||||
There's also a service that has not been merged yet. If you know how to add modules from PRs in Nix
|
||||
you can already install it <https://github.com/NixOS/nixpkgs/pull/424188>
|
||||
and then setup rustical as a service:
|
||||
|
||||
```nix title="In your configuration.nix"
|
||||
services.rustical = {
|
||||
enable = true;
|
||||
package = inputs.rustical.legacyPackages.${pkgs.stdenv.hostPlatform.system}.rustical;
|
||||
settings = {
|
||||
# Settings the same as in config.toml but in Nix syntax
|
||||
# http.port = 3002;
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user