mirror of
https://github.com/lennart-k/rustical.git
synced 2026-01-30 21:18:19 +00:00
Compare commits
3 Commits
v0.12.2
...
da72aa26cb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da72aa26cb | ||
|
|
b89ff1a2b5 | ||
|
|
246a1aa738 |
28
Cargo.lock
generated
28
Cargo.lock
generated
@@ -567,9 +567,9 @@ checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "caldata"
|
name = "caldata"
|
||||||
version = "0.13.1"
|
version = "0.14.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5549ae654c8e80ff922297ad06c49be64668cf947cb6ce45a2069985d21a2135"
|
checksum = "f36de4a8034d98c95e7fe874b828272d823cfbd68e9571fe7bf6c419e852cbe2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"chrono-tz",
|
"chrono-tz",
|
||||||
@@ -3309,7 +3309,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical"
|
name = "rustical"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"argon2",
|
"argon2",
|
||||||
@@ -3356,7 +3356,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_caldav"
|
name = "rustical_caldav"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-std",
|
"async-std",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@@ -3398,7 +3398,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_carddav"
|
name = "rustical_carddav"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"axum",
|
"axum",
|
||||||
@@ -3432,7 +3432,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_dav"
|
name = "rustical_dav"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"axum",
|
"axum",
|
||||||
@@ -3458,7 +3458,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_dav_push"
|
name = "rustical_dav_push"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"axum",
|
"axum",
|
||||||
@@ -3483,7 +3483,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_frontend"
|
name = "rustical_frontend"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"askama",
|
"askama",
|
||||||
"askama_web",
|
"askama_web",
|
||||||
@@ -3519,7 +3519,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_ical"
|
name = "rustical_ical"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
"caldata",
|
"caldata",
|
||||||
@@ -3538,7 +3538,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_oidc"
|
name = "rustical_oidc"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"axum",
|
"axum",
|
||||||
@@ -3554,7 +3554,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_store"
|
name = "rustical_store"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@@ -3587,7 +3587,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_store_sqlite"
|
name = "rustical_store_sqlite"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"caldata",
|
"caldata",
|
||||||
@@ -3612,7 +3612,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustical_xml"
|
name = "rustical_xml"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quick-xml",
|
"quick-xml",
|
||||||
"thiserror 2.0.18",
|
"thiserror 2.0.18",
|
||||||
@@ -5434,7 +5434,7 @@ checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "xml_derive"
|
name = "xml_derive"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling 0.23.0",
|
"darling 0.23.0",
|
||||||
"heck",
|
"heck",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
members = ["crates/*"]
|
members = ["crates/*"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
rust-version = "1.92"
|
rust-version = "1.92"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
description = "A CalDAV server"
|
description = "A CalDAV server"
|
||||||
@@ -107,7 +107,7 @@ strum = "0.27"
|
|||||||
strum_macros = "0.27"
|
strum_macros = "0.27"
|
||||||
serde_json = { version = "1.0", features = ["raw_value"] }
|
serde_json = { version = "1.0", features = ["raw_value"] }
|
||||||
sqlx-sqlite = { version = "0.8", features = ["bundled"] }
|
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"
|
toml = "0.9"
|
||||||
tower = "0.5"
|
tower = "0.5"
|
||||||
tower-http = { version = "0.6", features = [
|
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)
|
- Apple configuration profiles (skip copy-pasting passwords and instead generate the configuration in the frontend)
|
||||||
- **OpenID Connect** support (with option to disable password login)
|
- **OpenID Connect** support (with option to disable password login)
|
||||||
- Group-based **sharing**
|
- 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
|
## Getting Started
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ use axum::{
|
|||||||
extract::{Path, State},
|
extract::{Path, State},
|
||||||
response::{IntoResponse, Response},
|
response::{IntoResponse, Response},
|
||||||
};
|
};
|
||||||
use caldata::IcalParser;
|
|
||||||
use caldata::component::{Component, ComponentMut};
|
use caldata::component::{Component, ComponentMut};
|
||||||
|
use caldata::{IcalParser, parser::ParserOptions};
|
||||||
use http::StatusCode;
|
use http::StatusCode;
|
||||||
use rustical_dav::header::Overwrite;
|
use rustical_dav::header::Overwrite;
|
||||||
use rustical_ical::CalendarObjectType;
|
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-CALDESC");
|
||||||
cal.remove_property("X-WR-CALCOLOR");
|
cal.remove_property("X-WR-CALCOLOR");
|
||||||
cal.remove_property("X-WR-TIMEZONE");
|
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
|
// Make sure timezone is valid
|
||||||
if let Some(timezone_id) = timezone_id.as_ref() {
|
if let Some(timezone_id) = timezone_id.as_ref() {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use axum::{
|
|||||||
use caldata::{
|
use caldata::{
|
||||||
VcardParser,
|
VcardParser,
|
||||||
component::{Component, ComponentMut},
|
component::{Component, ComponentMut},
|
||||||
parser::ContentLine,
|
parser::{ContentLine, ParserOptions},
|
||||||
};
|
};
|
||||||
use http::StatusCode;
|
use http::StatusCode;
|
||||||
use rustical_store::{Addressbook, AddressbookStore, SubscriptionStore, auth::Principal};
|
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()),
|
value: Some(uuid::Uuid::new_v4().to_string()),
|
||||||
params: vec![].into(),
|
params: vec![].into(),
|
||||||
});
|
});
|
||||||
card = card_mut.build(None).unwrap();
|
card = card_mut.build(&ParserOptions::default(), None).unwrap();
|
||||||
}
|
}
|
||||||
// TODO: Make nicer
|
// TODO: Make nicer
|
||||||
let uid = card.get_uid().unwrap();
|
let uid = card.get_uid().unwrap();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use caldata::{
|
|||||||
IcalEventBuilder, VcardContact,
|
IcalEventBuilder, VcardContact,
|
||||||
},
|
},
|
||||||
generator::Emitter,
|
generator::Emitter,
|
||||||
parser::ContentLine,
|
parser::{ContentLine, ParserOptions},
|
||||||
property::{
|
property::{
|
||||||
Calscale, IcalCALSCALEProperty, IcalDTENDProperty, IcalDTSTAMPProperty,
|
Calscale, IcalCALSCALEProperty, IcalDTENDProperty, IcalDTSTAMPProperty,
|
||||||
IcalDTSTARTProperty, IcalPRODIDProperty, IcalRRULEProperty, IcalSUMMARYProperty,
|
IcalDTSTARTProperty, IcalPRODIDProperty, IcalRRULEProperty, IcalSUMMARYProperty,
|
||||||
@@ -136,7 +136,7 @@ impl AddressObject {
|
|||||||
inner: Some(CalendarInnerDataBuilder::Event(vec![event])),
|
inner: Some(CalendarInnerDataBuilder::Event(vec![event])),
|
||||||
vtimezones: BTreeMap::default(),
|
vtimezones: BTreeMap::default(),
|
||||||
}
|
}
|
||||||
.build(None)?
|
.build(&ParserOptions::default(), None)?
|
||||||
.into(),
|
.into(),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user