From 107561297d014e0f8048dcc5978b43cc81e1ce29 Mon Sep 17 00:00:00 2001 From: mdecimus Date: Tue, 21 Oct 2025 10:18:03 +0200 Subject: [PATCH] CalDAV: support for supported-calendar-component-set (closes #1893) --- Cargo.lock | 799 ++++++++++----------- crates/dav-proto/src/responses/error.rs | 3 + crates/dav-proto/src/responses/mod.rs | 2 +- crates/dav-proto/src/responses/property.rs | 41 +- crates/dav-proto/src/schema/property.rs | 1 - crates/dav-proto/src/schema/response.rs | 2 + crates/dav/src/calendar/proppatch.rs | 38 +- crates/dav/src/common/propfind.rs | 27 +- crates/directory/Cargo.toml | 2 +- crates/groupware/src/calendar/mod.rs | 128 +++- crates/services/src/state_manager/ece.rs | 7 +- crates/utils/src/map/bitmap.rs | 4 + tests/src/webdav/mkcol.rs | 57 +- 13 files changed, 655 insertions(+), 456 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a59a5729..b036baaa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,7 +36,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common", - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -87,7 +87,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "serde", "version_check", @@ -228,29 +228,13 @@ dependencies = [ "term", ] -[[package]] -name = "asn1-rs" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" -dependencies = [ - "asn1-rs-derive 0.5.1", - "asn1-rs-impl", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror 1.0.69", - "time", -] - [[package]] name = "asn1-rs" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" dependencies = [ - "asn1-rs-derive 0.6.0", + "asn1-rs-derive", "asn1-rs-impl", "displaydoc", "nom", @@ -260,18 +244,6 @@ dependencies = [ "time", ] -[[package]] -name = "asn1-rs-derive" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", - "synstructure", -] - [[package]] name = "asn1-rs-derive" version = "0.6.0" @@ -280,7 +252,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "synstructure", ] @@ -292,7 +264,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -375,7 +347,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -397,7 +369,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -408,7 +380,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -425,7 +397,7 @@ checksum = "07a9b245ba0739fc90935094c29adbaee3f977218b5fb95e822e261cda7f56a3" dependencies = [ "http 1.3.1", "log", - "rustls 0.23.32", + "rustls 0.23.33", "serde", "serde_json", "url", @@ -483,7 +455,7 @@ dependencies = [ "pin-project", "quick-xml 0.31.0", "rand 0.8.5", - "reqwest 0.12.23", + "reqwest 0.12.24", "rustc_version 0.4.1", "serde", "serde_json", @@ -642,7 +614,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -653,7 +625,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -662,7 +634,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -671,7 +643,7 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "shlex", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -728,11 +700,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -794,7 +766,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -803,7 +775,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -812,7 +784,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -880,7 +852,7 @@ checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -906,9 +878,9 @@ dependencies = [ [[package]] name = "bzip2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea8dcd42434048e4f7a304411d9273a411f647446c1234a65ce0554923f4cff" +checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" dependencies = [ "libbz2-rs-sys", ] @@ -1037,9 +1009,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -1078,7 +1050,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -1105,9 +1077,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.48" +version = "4.5.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "0c2cfd7bf8a6017ddaa4e32ffe7403d547790db06bd171c1c53926faab501623" dependencies = [ "clap_builder", "clap_derive", @@ -1115,9 +1087,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.5.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "0a4c05b9e80c5ccd3a7ef080ad7b6ba7d6fc00a985b8b157197075677c82c7a0" dependencies = [ "anstream", "anstyle", @@ -1127,21 +1099,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmac" @@ -1206,7 +1178,7 @@ dependencies = [ "idna", "imagesize", "imap_proto", - "indexmap 2.11.4", + "indexmap 2.12.0", "infer 0.19.0", "jmap_proto", "libc", @@ -1232,11 +1204,11 @@ dependencies = [ "pwhash", "rcgen 0.12.1", "regex", - "reqwest 0.12.23", + "reqwest 0.12.24", "ring", "rkyv", "rsa", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -1254,7 +1226,7 @@ dependencies = [ "unicode-security", "utils", "whatlang", - "x509-parser 0.18.0", + "x509-parser", "xxhash-rust", "zip 6.0.0", ] @@ -1523,7 +1495,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", "rand_core 0.6.4", "subtle", "zeroize", @@ -1535,7 +1507,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", "rand_core 0.6.4", "typenum", ] @@ -1546,27 +1518,27 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", "subtle", ] [[package]] name = "csv" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" dependencies = [ "csv-core", "itoa", "ryu", - "serde", + "serde_core", ] [[package]] name = "csv-core" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" dependencies = [ "memchr", ] @@ -1604,7 +1576,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -1662,7 +1634,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -1676,7 +1648,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -1698,7 +1670,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -1709,7 +1681,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -1770,7 +1742,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd2735a791158376708f9347fe8faba9667589d82427ef3aed6794a8981de3d9" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -1847,27 +1819,13 @@ dependencies = [ "zeroize", ] -[[package]] -name = "der-parser" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" -dependencies = [ - "asn1-rs 0.6.2", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", -] - [[package]] name = "der-parser" version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" dependencies = [ - "asn1-rs 0.7.1", + "asn1-rs", "displaydoc", "nom", "num-bigint", @@ -1893,7 +1851,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -1911,7 +1869,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -1948,9 +1906,9 @@ dependencies = [ "proc_macros", "pwhash", "regex", - "reqwest 0.12.23", + "reqwest 0.12.24", "rkyv", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "scrypt", "serde", @@ -2017,7 +1975,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -2036,7 +1994,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42788b21a1231c646c46508c406db9bf628342a781c24888bf60e1a29396deb2" dependencies = [ "hickory-client", - "reqwest 0.12.23", + "reqwest 0.12.24", "serde", "serde_json", "serde_urlencoded", @@ -2188,7 +2146,7 @@ dependencies = [ "crypto-bigint", "digest 0.10.7", "ff", - "generic-array 0.14.7", + "generic-array 0.14.9", "group", "hkdf", "pem-rfc7468", @@ -2279,7 +2237,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -2331,7 +2289,7 @@ version = "0.14.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -2381,7 +2339,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18c1ddb9231d8554c2d6bdf4cfaabf0c59251658c68b6c95cd52dd0c513a912a" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libm", "rand 0.9.2", "siphasher", @@ -2430,6 +2388,12 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.1.4" @@ -2466,6 +2430,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2545,7 +2515,7 @@ checksum = "9be610412e5a92d89855fb15b099a57792b7dbdcf8ac74c5a0e24d9b7b1b6f7f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "try_map", ] @@ -2646,7 +2616,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -2681,9 +2651,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -2692,21 +2662,22 @@ dependencies = [ [[package]] name = "generic-array" -version = "1.3.0" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56cf091b3dc50a299896cb5fb7d9d1908500766a5de99a8d515e63cb4251de8f" +checksum = "985a5578ebdb02351d484a77fb27e7cb79272f1ba9bc24692d8243c3cfe40660" dependencies = [ + "rustversion", "typenum", ] [[package]] name = "gethostname" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ "rustix", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -2735,15 +2706,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -2780,7 +2751,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -2833,7 +2804,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -2852,7 +2823,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -2883,7 +2854,7 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", ] [[package]] @@ -2891,6 +2862,11 @@ name = "hashbrown" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] [[package]] name = "hashify" @@ -2900,7 +2876,7 @@ checksum = "149e3ea90eb5a26ad354cfe3cb7f7401b9329032d0235f2687d03a35f30e5d4c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -2994,7 +2970,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a62d7684f766b0f96344be88c023f9b6650039aea09d526b4974cce302eb61b1" dependencies = [ "async-trait", - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "cfg-if", "data-encoding", @@ -3007,7 +2983,7 @@ dependencies = [ "once_cell", "rand 0.9.2", "ring", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "thiserror 2.0.17", "time", @@ -3033,7 +3009,7 @@ dependencies = [ "parking_lot", "rand 0.9.2", "resolv-conf", - "rustls 0.23.32", + "rustls 0.23.33", "smallvec", "thiserror 2.0.17", "tokio", @@ -3143,7 +3119,7 @@ dependencies = [ "trc", "types", "utils", - "x509-parser 0.18.0", + "x509-parser", ] [[package]] @@ -3321,7 +3297,7 @@ dependencies = [ "http 1.3.1", "hyper 1.7.0", "hyper-util", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -3360,7 +3336,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "tokio", "tower-service", "tracing", @@ -3528,14 +3504,14 @@ dependencies = [ "directory", "email", "imap_proto", - "indexmap 2.11.4", + "indexmap 2.12.0", "mail-parser", "mail-send", "md5 0.8.0", "nlp", "parking_lot", "rand 0.9.2", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "store", "tokio", @@ -3583,7 +3559,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "zstd", ] @@ -3610,9 +3586,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", "hashbrown 0.16.0", @@ -3655,7 +3631,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "block-padding", - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -3667,17 +3643,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "libc", -] - [[package]] name = "ipconfig" version = "0.3.2" @@ -3850,7 +3815,7 @@ dependencies = [ "p256", "pkcs8", "rand 0.9.2", - "reqwest 0.12.23", + "reqwest 0.12.24", "rkyv", "rsa", "serde", @@ -3884,8 +3849,8 @@ dependencies = [ "futures-util", "maybe-async", "parking_lot", - "reqwest 0.12.23", - "rustls 0.23.32", + "reqwest 0.12.24", + "rustls 0.23.33", "rustls-pki-types", "serde", "serde_json", @@ -3906,8 +3871,8 @@ dependencies = [ "futures-util", "maybe-async", "parking_lot", - "reqwest 0.12.23", - "rustls 0.23.32", + "reqwest 0.12.24", + "rustls 0.23.33", "rustls-pki-types", "serde", "serde_json", @@ -3975,7 +3940,7 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] @@ -4024,7 +3989,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", ] [[package]] @@ -4058,7 +4023,7 @@ dependencies = [ "ena", "itertools 0.11.0", "lalrpop-util", - "petgraph", + "petgraph 0.6.5", "regex", "regex-syntax", "string_cache", @@ -4110,15 +4075,15 @@ dependencies = [ "log", "nom", "percent-encoding", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.33", + "rustls-native-certs 0.8.2", "thiserror 2.0.17", "tokio", "tokio-rustls 0.26.4", "tokio-stream", "tokio-util", "url", - "x509-parser 0.18.0", + "x509-parser", ] [[package]] @@ -4179,7 +4144,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", "redox_syscall", ] @@ -4371,7 +4336,7 @@ dependencies = [ "base64 0.22.1", "gethostname", "md5 0.8.0", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "smtp-proto", "tokio", @@ -4396,7 +4361,7 @@ dependencies = [ "md5 0.8.0", "parking_lot", "rkyv", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "sieve-rs", "store", @@ -4430,7 +4395,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -4551,13 +4516,13 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4595,7 +4560,7 @@ checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -4611,7 +4576,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "termcolor", "thiserror 2.0.17", ] @@ -4634,7 +4599,7 @@ dependencies = [ "pem", "percent-encoding", "rand 0.9.2", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "serde", "serde_json", @@ -4655,13 +4620,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbb9f371618ce723f095c61fbcdc36e8936956d2b62832f9c7648689b338e052" dependencies = [ "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "btoi", "byteorder", "bytes", "crc32fast", "flate2", - "getrandom 0.3.3", + "getrandom 0.3.4", "mysql-common-derive", "num-bigint", "num-traits", @@ -4705,7 +4670,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", @@ -4874,9 +4839,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -4884,14 +4849,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -4921,22 +4886,13 @@ dependencies = [ "subtle", ] -[[package]] -name = "oid-registry" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" -dependencies = [ - "asn1-rs 0.6.2", -] - [[package]] name = "oid-registry" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" dependencies = [ - "asn1-rs 0.7.1", + "asn1-rs", ] [[package]] @@ -4963,11 +4919,11 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "foreign-types", "libc", @@ -4984,7 +4940,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -4995,9 +4951,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" dependencies = [ "cc", "libc", @@ -5029,7 +4985,7 @@ dependencies = [ "bytes", "http 1.3.1", "opentelemetry", - "reqwest 0.12.23", + "reqwest 0.12.24", "tracing", ] @@ -5046,7 +5002,7 @@ dependencies = [ "opentelemetry-proto", "opentelemetry_sdk", "prost", - "reqwest 0.12.23", + "reqwest 0.12.24", "thiserror 2.0.17", "tokio", "tonic", @@ -5256,7 +5212,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -5275,18 +5231,20 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", - "indexmap 2.11.4", + "fixedbitset 0.4.2", + "indexmap 2.12.0", ] [[package]] -name = "phf" -version = "0.11.3" +name = "petgraph" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ - "phf_macros", - "phf_shared 0.11.3", + "fixedbitset 0.5.7", + "hashbrown 0.15.5", + "indexmap 2.12.0", + "serde", ] [[package]] @@ -5304,6 +5262,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ + "phf_macros", "phf_shared 0.13.1", "serde", ] @@ -5314,20 +5273,10 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" dependencies = [ - "phf_generator 0.13.1", + "phf_generator", "phf_shared 0.13.1", ] -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.5", -] - [[package]] name = "phf_generator" version = "0.13.1" @@ -5340,15 +5289,15 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", + "phf_generator", + "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -5395,7 +5344,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -5491,7 +5440,7 @@ dependencies = [ "imap", "mail-parser", "mail-send", - "rustls 0.23.32", + "rustls 0.23.33", "store", "tokio", "tokio-rustls 0.26.4", @@ -5578,7 +5527,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -5666,7 +5615,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -5684,7 +5633,7 @@ version = "0.14.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -5721,7 +5670,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -5736,9 +5685,9 @@ dependencies = [ [[package]] name = "psl" -version = "2.1.148" +version = "2.1.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53297a72c400b31c5facd8e50894d08d20b74ee74925b28a20d51fe48c863583" +checksum = "6fd2e88c2c28854abe53489ce679f9dad712e2ac01a342dbeccae851cf0654d9" dependencies = [ "psl-types", ] @@ -5766,14 +5715,14 @@ checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] name = "pure-rust-locales" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1190fd18ae6ce9e137184f207593877e70f39b015040156b1e05081cdfe3733a" +checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" [[package]] name = "pwhash" @@ -5821,9 +5770,9 @@ dependencies = [ [[package]] name = "quick_cache" -version = "0.6.17" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba15f5bccfb18c666351668b97bbff66da5093f96757ca15299e4e594fe1316e" +checksum = "7ada44a88ef953a3294f6eb55d2007ba44646015e18613d2f213016379203ef3" dependencies = [ "ahash", "equivalent", @@ -5843,8 +5792,8 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", - "rustls 0.23.32", - "socket2 0.6.0", + "rustls 0.23.33", + "socket2 0.6.1", "thiserror 2.0.17", "tokio", "tracing", @@ -5859,12 +5808,12 @@ checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", "fastbloom", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", "rustc-hash 2.1.1", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "rustls-platform-verifier", "slab", @@ -5883,7 +5832,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.6.1", "tracing", "windows-sys 0.60.2", ] @@ -6037,7 +5986,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] [[package]] @@ -6199,11 +6148,11 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rand 0.9.2", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.33", + "rustls-native-certs 0.8.2", "ryu", "sha1_smol", - "socket2 0.6.0", + "socket2 0.6.1", "tokio", "tokio-rustls 0.26.4", "tokio-util", @@ -6217,7 +6166,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -6259,14 +6208,14 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] name = "regex" -version = "1.12.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a52d8d02cacdb176ef4678de6c052efb4b3da14b78e4db683a4252762be5433" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -6276,9 +6225,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "722166aa0d7438abbaa4d5cc2c649dac844e8c56d82fb3d33e9c34b5cd268fc6" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -6287,9 +6236,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3160422bbd54dd5ecfdca71e5fd59b7b8fe2b1697ab2baf64f6d05dcc66d298" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "rend" @@ -6345,9 +6294,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -6367,7 +6316,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "serde", "serde_json", @@ -6454,7 +6403,7 @@ dependencies = [ "bytecheck", "bytes", "hashbrown 0.15.5", - "indexmap 2.11.4", + "indexmap 2.12.0", "munge", "ptr_meta", "rancor", @@ -6472,7 +6421,7 @@ checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -6503,14 +6452,15 @@ dependencies = [ [[package]] name = "ron" -version = "0.8.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" dependencies = [ - "base64 0.21.7", - "bitflags 2.9.4", + "base64 0.22.1", + "bitflags 2.10.0", "serde", "serde_derive", + "unicode-ident", ] [[package]] @@ -6566,7 +6516,7 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "fallible-iterator 0.3.0", "fallible-streaming-iterator", "hashlink", @@ -6682,7 +6632,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", @@ -6703,9 +6653,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.32" +version = "0.23.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" +checksum = "751e04a496ca00bb97a5e043158d23d66b5aabf2e1d5aa2a0aaebb1aafe6f82c" dependencies = [ "log", "once_cell", @@ -6743,9 +6693,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -6792,8 +6742,8 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.33", + "rustls-native-certs 0.8.2", "rustls-platform-verifier-android", "rustls-webpki 0.103.7", "security-framework 3.5.1", @@ -6949,7 +6899,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -6994,7 +6944,7 @@ checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", - "generic-array 0.14.7", + "generic-array 0.14.9", "pkcs8", "subtle", "zeroize", @@ -7016,7 +6966,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -7029,7 +6979,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -7162,7 +7112,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -7173,7 +7123,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -7182,7 +7132,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "itoa", "memchr", "ryu", @@ -7218,7 +7168,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -7253,7 +7203,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.12.0", "schemars 0.9.0", "schemars 1.0.4", "serde_core", @@ -7283,7 +7233,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -7292,7 +7242,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "itoa", "ryu", "serde", @@ -7321,7 +7271,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -7344,7 +7294,7 @@ dependencies = [ "mail-parser", "memory-stats", "p256", - "reqwest 0.12.23", + "reqwest 0.12.24", "rsa", "serde", "serde_json", @@ -7396,7 +7346,7 @@ checksum = "1f606421e4a6012877e893c399822a4ed4b089164c5969424e1b9d1e66e6964b" dependencies = [ "const-oid", "digest 0.10.7", - "generic-array 1.3.0", + "generic-array 1.3.4", ] [[package]] @@ -7423,6 +7373,12 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + [[package]] name = "sha3" version = "0.10.8" @@ -7561,9 +7517,9 @@ dependencies = [ "rand 0.9.2", "rayon", "regex", - "reqwest 0.12.23", + "reqwest 0.12.24", "rkyv", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -7580,7 +7536,7 @@ dependencies = [ "types", "utils", "webpki-roots 1.0.3", - "x509-parser 0.18.0", + "x509-parser", ] [[package]] @@ -7628,12 +7584,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -7652,7 +7608,7 @@ dependencies = [ "mail-send", "nlp", "psl", - "reqwest 0.12.23", + "reqwest 0.12.24", "sha1", "sha2 0.10.9", "smtp-proto", @@ -7688,6 +7644,41 @@ dependencies = [ "der", ] +[[package]] +name = "stabby" +version = "36.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b7e94eaf470c2e76b5f15fb2fb49714471a36cc512df5ee231e62e82ec79f8" +dependencies = [ + "rustversion", + "stabby-abi", +] + +[[package]] +name = "stabby-abi" +version = "36.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc7a63b8276b54e51bfffe3d85da56e7906b2dcfcb29018a8ab666c06734c1a" +dependencies = [ + "rustc_version 0.4.1", + "rustversion", + "sha2-const-stable", + "stabby-macros", +] + +[[package]] +name = "stabby-macros" +version = "36.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eecb7ec5611ec93ec79d120fbe55f31bea234dc1bed1001d4a071bb688651615" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "rand 0.8.5", + "syn 1.0.109", +] + [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -7738,7 +7729,7 @@ dependencies = [ "prettytable-rs", "pwhash", "rand 0.9.2", - "reqwest 0.12.23", + "reqwest 0.12.24", "rpassword", "serde", "serde_json", @@ -7785,14 +7776,14 @@ dependencies = [ "rdkafka", "redis", "regex", - "reqwest 0.12.23", + "reqwest 0.12.24", "ring", "rkyv", "roaring", "rocksdb", "rusqlite", "rust-s3", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "serde", "serde_json", @@ -7860,9 +7851,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" dependencies = [ "proc-macro2", "quote", @@ -7892,7 +7883,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -7992,10 +7983,10 @@ dependencies = [ "pop3", "quick-xml 0.38.3", "rayon", - "reqwest 0.12.23", + "reqwest 0.12.24", "ring", "rkyv", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -8040,7 +8031,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -8051,7 +8042,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -8153,33 +8144,30 @@ dependencies = [ [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -8202,7 +8190,7 @@ dependencies = [ "postgres-protocol", "postgres-types", "rand 0.9.2", - "socket2 0.6.0", + "socket2 0.6.1", "tokio", "tokio-util", "whoami", @@ -8224,7 +8212,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.32", + "rustls 0.23.33", "tokio", ] @@ -8247,7 +8235,7 @@ checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -8305,7 +8293,7 @@ version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "toml_datetime", "toml_parser", "winnow", @@ -8405,7 +8393,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "futures-util", "http 1.3.1", @@ -8449,7 +8437,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -8515,7 +8503,7 @@ dependencies = [ "mail-auth", "mail-parser", "parking_lot", - "reqwest 0.12.23", + "reqwest 0.12.24", "rkyv", "rtrb", "serde", @@ -8557,7 +8545,7 @@ dependencies = [ "httparse", "log", "rand 0.9.2", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pki-types", "sha1", "thiserror 2.0.17", @@ -8799,10 +8787,10 @@ dependencies = [ "rand 0.9.2", "rcgen 0.14.5", "regex", - "reqwest 0.12.23", + "reqwest 0.12.24", "ring", "rkyv", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -8812,7 +8800,7 @@ dependencies = [ "tokio-rustls 0.26.4", "trc", "webpki-roots 1.0.3", - "x509-parser 0.18.0", + "x509-parser", ] [[package]] @@ -8821,7 +8809,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "serde", "sha1_smol", @@ -8848,7 +8836,7 @@ checksum = "8c44ce98e7227a04eeb4cf9c784109a5c9710e54849ceb4f09f8597247897f1e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "unzip-n", ] @@ -8925,15 +8913,6 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -8972,7 +8951,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "wasm-bindgen-shared", ] @@ -9007,7 +8986,7 @@ checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -9165,7 +9144,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -9176,7 +9155,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -9557,35 +9536,18 @@ dependencies = [ "zeroize", ] -[[package]] -name = "x509-parser" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" -dependencies = [ - "asn1-rs 0.6.2", - "data-encoding", - "der-parser 9.0.0", - "lazy_static", - "nom", - "oid-registry 0.7.1", - "rusticata-macros", - "thiserror 1.0.69", - "time", -] - [[package]] name = "x509-parser" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb3e137310115a65136898d2079f003ce33331a6c4b0d51f1531d1be082b6425" dependencies = [ - "asn1-rs 0.7.1", + "asn1-rs", "data-encoding", - "der-parser 10.0.0", + "der-parser", "lazy_static", "nom", - "oid-registry 0.8.1", + "oid-registry", "rusticata-macros", "thiserror 2.0.17", "time", @@ -9632,31 +9594,32 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "synstructure", ] [[package]] name = "zenoh" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3427f6680d4de3f71bd823e49df91c43d97a90475bed4ace0e6fc60c93a82401" +checksum = "c5df040795169d4b6e4fc8a5f9dce81b5210d1d606399634ec380deda30c347f" dependencies = [ "ahash", "arc-swap", "async-trait", "bytes", + "const_format", "flume", "futures", "git-version", - "itertools 0.13.0", + "itertools 0.14.0", "json5", "lazy_static", "nonempty-collections", "once_cell", "paste", - "petgraph", - "phf 0.11.3", + "petgraph 0.8.3", + "phf 0.13.1", "rand 0.8.5", "ref-cast", "rustc_version 0.4.1", @@ -9689,18 +9652,18 @@ dependencies = [ [[package]] name = "zenoh-buffers" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9acc6037e456d7baf880a7379f7a0cbcf637cc64ec6a2cf9ee26914823e91738" +checksum = "510921897b03793f399b7eaec176355a12293afa1e791c3f844ef12fa08aecc4" dependencies = [ "zenoh-collections", ] [[package]] name = "zenoh-codec" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61054e59ad67c2cc8002de54a1797accc9a52c305bd50ed7a4589a33e698f345" +checksum = "585a77eff7a781726aeeafab52ad175be0dcfc92376a756c23a51f6701a73ba0" dependencies = [ "tracing", "uhlc", @@ -9710,18 +9673,18 @@ dependencies = [ [[package]] name = "zenoh-collections" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "959ea6f76c697adb778eefc358fb77a140add8ad800d08bd92b2ad19eb088017" +checksum = "fa17a7ecf321aba18eabf99a37390b7a6524e826b6f8cb38f9361479ece28887" dependencies = [ "ahash", ] [[package]] name = "zenoh-config" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f41025fbb26212dc2b94815aef1591f4a7fd223e25dc8f63042e6d192752cc7" +checksum = "c02801ef8fd8d0b10437055dac10fd961fdc3a6356439dd52ee627e7f31b9295" dependencies = [ "json5", "nonempty-collections", @@ -9744,9 +9707,9 @@ dependencies = [ [[package]] name = "zenoh-core" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c94383c2eddf191ce04dc792e901487045640ff66614c55ae7fdb9c15bd037" +checksum = "325645d09d0f74f48051b51c2ab73e270c16d9d7d408c41eb47ed8f067451cd9" dependencies = [ "lazy_static", "tokio", @@ -9756,9 +9719,9 @@ dependencies = [ [[package]] name = "zenoh-crypto" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e7a9ab1b9b4d1735a9cd6a92049780f3d846be25c0f76a973e6fb2709db506" +checksum = "5244d615594f1c2149cba6177f15e76cc825e2839230e26693f2b723367b6c2f" dependencies = [ "aes", "hmac 0.12.1", @@ -9770,12 +9733,12 @@ dependencies = [ [[package]] name = "zenoh-keyexpr" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555447f0f7b3414511c829b238402ad08e0b03a9293c3251b0b01a0354b8d9e2" +checksum = "c9495c0ca85331f87442b465760a7fb7334370354742a4201b719cc2533afee7" dependencies = [ "getrandom 0.2.16", - "hashbrown 0.14.5", + "hashbrown 0.16.0", "keyed-set", "rand 0.8.5", "schemars 0.8.22", @@ -9786,9 +9749,9 @@ dependencies = [ [[package]] name = "zenoh-link" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f06ab3c0426b4a37ccf3b198f17f2e2fba6dac8d0946d96b8cbfc1983225ea9" +checksum = "001a7f07522b06ae6364ae787ab83eddf4e43f56f7f138fe3e54ea123ee3523b" dependencies = [ "zenoh-config", "zenoh-link-commons", @@ -9802,16 +9765,16 @@ dependencies = [ [[package]] name = "zenoh-link-commons" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5bc55882893ecdbf0de2effc1487f4d91efb21f2d5a1242cc8cae13f9f97ff" +checksum = "5be05b499b789afb2024de4253e12ccaa3e296f66a0db6147deb9acec491f622" dependencies = [ "async-trait", "base64 0.22.1", "flume", "futures", "quinn", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "rustls-pki-types", "rustls-webpki 0.102.8", @@ -9823,7 +9786,7 @@ dependencies = [ "tokio-util", "tracing", "webpki-roots 0.26.11", - "x509-parser 0.16.0", + "x509-parser", "zenoh-buffers", "zenoh-codec", "zenoh-config", @@ -9836,14 +9799,14 @@ dependencies = [ [[package]] name = "zenoh-link-quic" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d99d4d013a42733c82aefc67bdbb3199835f3c63659a8826baebf86567e1748" +checksum = "4168034bb7005d313ba834d105ede7c7f9fac48684f80a140fccb8302e9ca4aa" dependencies = [ "async-trait", "base64 0.22.1", "quinn", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "rustls-webpki 0.102.8", "secrecy", @@ -9862,9 +9825,9 @@ dependencies = [ [[package]] name = "zenoh-link-tcp" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15685d53a5364611cb22034c1a63d6ceb3be6d89b31f3d94c20e770c10627b1c" +checksum = "3b968d3506682350760fb69c07b3c9aea07f351ac39993c7d948bdc5a19d5645" dependencies = [ "async-trait", "socket2 0.5.10", @@ -9880,13 +9843,13 @@ dependencies = [ [[package]] name = "zenoh-link-tls" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1e59f64bd7c3257c710e05bddc695207f9261d66ad9c699346c8704f0298f3f" +checksum = "a810a4ba44011cc4c75713eadcf1a03fb2e22f0907d62f9b12c04d42ba1d596f" dependencies = [ "async-trait", "base64 0.22.1", - "rustls 0.23.32", + "rustls 0.23.33", "rustls-pemfile 2.2.0", "rustls-pki-types", "rustls-webpki 0.102.8", @@ -9899,7 +9862,7 @@ dependencies = [ "tokio-util", "tracing", "webpki-roots 0.26.11", - "x509-parser 0.16.0", + "x509-parser", "zenoh-config", "zenoh-core", "zenoh-link-commons", @@ -9910,9 +9873,9 @@ dependencies = [ [[package]] name = "zenoh-link-udp" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9542387f1c7846868917c46a49a804931a1b8505113c43b67a7ba1a951f1802" +checksum = "a4178b940cc613b4d0db3f06ceb71377199cacb22087f589bc60d1b4df6a2365" dependencies = [ "async-trait", "libc", @@ -9920,7 +9883,7 @@ dependencies = [ "tokio", "tokio-util", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.61.2", "zenoh-buffers", "zenoh-core", "zenoh-link-commons", @@ -9932,25 +9895,26 @@ dependencies = [ [[package]] name = "zenoh-macros" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f1aab2de6a19e91de22c0dc7e439158c677b1d44198d8a3e242d32b7f06d4b" +checksum = "2bbff17ef687e10ed4f6a956fb78fc97205a4a6242c657638e8e5da726840aca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "zenoh-keyexpr", ] [[package]] name = "zenoh-plugin-trait" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c922e9afe24e8b1722cd3eb1e1ca4d4d548dfe2356a49663a8fa41edd724bc35" +checksum = "968571b0b585c5be1f19c553b368994424a869af46a4785bf5a3248194a97172" dependencies = [ "git-version", "libloading", "serde", + "stabby", "tracing", "zenoh-config", "zenoh-keyexpr", @@ -9961,9 +9925,9 @@ dependencies = [ [[package]] name = "zenoh-protocol" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b44f25959e11eb4f499abd4a771b6d9f1f4e7d5987937c38b8c67d86b01cb814" +checksum = "879a66ef51831f54f5f824bf9005bf73129bc2485053311ffb7a245f907f721c" dependencies = [ "const_format", "rand 0.8.5", @@ -9976,18 +9940,18 @@ dependencies = [ [[package]] name = "zenoh-result" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ff9ee9d66b67134b7127ebbd974a75995a82b749e0eac1a9225f7b19ee5dc5" +checksum = "e0f564d3324e443d0d48a4656d89bab1d0b263660fb7e17ba149c464e62f94bd" dependencies = [ "anyhow", ] [[package]] name = "zenoh-runtime" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a108f59311a215ce4c5e0dc0d172865c8856eb03148ee86933da3e15d05e5d" +checksum = "e3a5cef13fd469aeb146518532751dbecd2b0f99ac56b6df667f954f11348dcf" dependencies = [ "lazy_static", "ron", @@ -10000,9 +9964,9 @@ dependencies = [ [[package]] name = "zenoh-sync" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a8c05fb9228ff3398e0ac8c8d460abbbc5d53e4ee47c97c28ea33bc684e3f2" +checksum = "04a23123511fb7ce5990a778dcdcf41b5129ad8c5ef8d1e7ff719a538c3270e3" dependencies = [ "arc-swap", "event-listener 5.4.1", @@ -10015,9 +9979,9 @@ dependencies = [ [[package]] name = "zenoh-task" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d037689edce4a17f91e0049a2050662419ae3f70678a30a759c92ede62450dc6" +checksum = "8ad997618409140b23a2ef0957f7995afec2667ff3951f580de8a506c7814e41" dependencies = [ "futures", "tokio", @@ -10029,9 +9993,9 @@ dependencies = [ [[package]] name = "zenoh-transport" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "574fd48eb855ec99523700d1411ef4aec5714f4bc19bbbb9aae6b641cd9a38fe" +checksum = "2abd4521cd556093161156fc0799a506743304e1510fc7ed83adff99ca601f34" dependencies = [ "async-trait", "crossbeam-utils", @@ -10064,9 +10028,9 @@ dependencies = [ [[package]] name = "zenoh-util" -version = "1.5.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558ffebb7e7d5249f45e8e3d006da64e44cf11913eec606e501ef2e22736dbc2" +checksum = "42a736159ed0935c9ef258c151067ccce40f95f08d7f9360993e858e268b0a9d" dependencies = [ "async-trait", "const_format", @@ -10077,6 +10041,7 @@ dependencies = [ "libc", "libloading", "pnet_datalink", + "schemars 0.8.22", "serde", "serde_json", "shellexpand", @@ -10105,7 +10070,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -10125,7 +10090,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", "synstructure", ] @@ -10146,7 +10111,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -10179,7 +10144,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.107", ] [[package]] @@ -10195,9 +10160,9 @@ dependencies = [ "crc32fast", "deflate64", "flate2", - "getrandom 0.3.3", + "getrandom 0.3.4", "hmac 0.12.1", - "indexmap 2.11.4", + "indexmap 2.12.0", "lzma-rust2", "memchr", "pbkdf2", @@ -10222,9 +10187,9 @@ dependencies = [ "crc32fast", "deflate64", "flate2", - "getrandom 0.3.3", + "getrandom 0.3.4", "hmac 0.12.1", - "indexmap 2.11.4", + "indexmap 2.12.0", "lzma-rust2", "memchr", "pbkdf2", diff --git a/crates/dav-proto/src/responses/error.rs b/crates/dav-proto/src/responses/error.rs index 08d64203..dbab9c5b 100644 --- a/crates/dav-proto/src/responses/error.rs +++ b/crates/dav-proto/src/responses/error.rs @@ -137,6 +137,9 @@ impl Display for CalCondition { } CalCondition::ValidSchedulingMessage => write!(f, ""), CalCondition::ValidOrganizer => write!(f, ""), + CalCondition::SupportedCalendarComponent => { + write!(f, "") + } } } } diff --git a/crates/dav-proto/src/responses/mod.rs b/crates/dav-proto/src/responses/mod.rs index bbb74688..f4c64d1d 100644 --- a/crates/dav-proto/src/responses/mod.rs +++ b/crates/dav-proto/src/responses/mod.rs @@ -141,7 +141,7 @@ impl Display for SyncToken { impl Display for Comp { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "", self.0.as_str()) + write!(f, "", self.0.as_str()) } } diff --git a/crates/dav-proto/src/responses/property.rs b/crates/dav-proto/src/responses/property.rs index 3f353513..7f03ad2a 100644 --- a/crates/dav-proto/src/responses/property.rs +++ b/crates/dav-proto/src/responses/property.rs @@ -18,6 +18,7 @@ use crate::{ Namespace, Namespaces, }, }; +use calcard::icalendar::ICalendarComponentType; use mail_parser::{ parsers::fields::date::{DOW, MONTH}, DateTime, @@ -119,32 +120,32 @@ impl Display for DavValue { ) ) } - DavValue::SupportedCalendarComponentSet => { - write!( - f, - concat!( - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - ) - ) - } DavValue::Response(v) => v.fmt(f), DavValue::VCard(_) | DavValue::ICalendar(_) | DavValue::Null => Ok(()), } } } +impl DavValue { + pub fn all_calendar_components() -> Self { + DavValue::Components(List(vec![ + Comp(ICalendarComponentType::VEvent), + Comp(ICalendarComponentType::VTodo), + Comp(ICalendarComponentType::VJournal), + Comp(ICalendarComponentType::VFreebusy), + Comp(ICalendarComponentType::VTimezone), + Comp(ICalendarComponentType::VAlarm), + Comp(ICalendarComponentType::Standard), + Comp(ICalendarComponentType::Daylight), + Comp(ICalendarComponentType::VAvailability), + Comp(ICalendarComponentType::Available), + Comp(ICalendarComponentType::Participant), + Comp(ICalendarComponentType::VLocation), + Comp(ICalendarComponentType::VResource), + ])) + } +} + impl DavProperty { fn tag_name(&self) -> (&str, Option<&str>) { ( diff --git a/crates/dav-proto/src/schema/property.rs b/crates/dav-proto/src/schema/property.rs index 5b5f1176..459ebe94 100644 --- a/crates/dav-proto/src/schema/property.rs +++ b/crates/dav-proto/src/schema/property.rs @@ -169,7 +169,6 @@ pub enum DavValue { DeadProperty(DeadProperty), SupportedAddressData, SupportedCalendarData, - SupportedCalendarComponentSet, Null, } diff --git a/crates/dav-proto/src/schema/response.rs b/crates/dav-proto/src/schema/response.rs index 8854cc4b..d4f8cb49 100644 --- a/crates/dav-proto/src/schema/response.rs +++ b/crates/dav-proto/src/schema/response.rs @@ -244,6 +244,7 @@ pub enum CalCondition { Vec, ICalendarProperty, ICalendarParameterName>>, ), SupportedCollation(String), + SupportedCalendarComponent, MinDateTime, MaxDateTime, MaxResourceSize(u32), @@ -366,6 +367,7 @@ impl CalCondition { CalCondition::ValidScheduleDefaultCalendarUrl => "ValidScheduleDefaultCalendarUrl", CalCondition::ValidSchedulingMessage => "ValidSchedulingMessage", CalCondition::ValidOrganizer => "ValidOrganizer", + CalCondition::SupportedCalendarComponent => "SupportedCalendarComponent", } } } diff --git a/crates/dav/src/calendar/proppatch.rs b/crates/dav/src/calendar/proppatch.rs index 71afcc5a..5eca74ad 100644 --- a/crates/dav/src/calendar/proppatch.rs +++ b/crates/dav/src/calendar/proppatch.rs @@ -25,7 +25,7 @@ use dav_proto::{ }; use groupware::{ cache::GroupwareCache, - calendar::{Calendar, CalendarEvent, Timezone}, + calendar::{Calendar, CalendarEvent, SupportedComponent, Timezone}, }; use http_proto::HttpResponse; use hyper::StatusCode; @@ -36,6 +36,7 @@ use types::{ acl::Acl, collection::{Collection, SyncCollection}, }; +use utils::map::bitmap::Bitmap; pub(crate) trait CalendarPropPatchRequestHandler: Sync + Send { fn handle_calendar_proppatch_request( @@ -340,6 +341,39 @@ impl CalendarPropPatchRequestHandler for Server { items.insert_ok(property.property); } } + ( + DavProperty::CalDav(CalDavProperty::SupportedCalendarComponentSet), + DavValue::Components(components), + ) => { + if !is_update { + calendar.supported_components = Bitmap::::from_iter( + components + .0 + .into_iter() + .map(|v| SupportedComponent::from(v.0)), + ) + .into_inner(); + if calendar.supported_components != 0 { + items.insert_ok(property.property); + } else { + items.insert_precondition_failed_with_description( + property.property, + StatusCode::PRECONDITION_FAILED, + CalCondition::SupportedCalendarComponent, + "At least one supported component must be specified", + ); + has_errors = true; + } + } else { + items.insert_precondition_failed_with_description( + property.property, + StatusCode::PRECONDITION_FAILED, + CalCondition::SupportedCalendarComponent, + "Property cannot be modified", + ); + has_errors = true; + } + } (DavProperty::DeadProperty(dead), DavValue::DeadProperty(values)) if self.core.groupware.dead_property_size.is_some() => { @@ -362,7 +396,7 @@ impl CalendarPropPatchRequestHandler for Server { has_errors = true; } } - (_, DavValue::Null | DavValue::Components(_)) => { + (_, DavValue::Null) => { items.insert_ok(property.property); } _ => { diff --git a/crates/dav/src/common/propfind.rs b/crates/dav/src/common/propfind.rs index f95a08d9..15821e14 100644 --- a/crates/dav/src/common/propfind.rs +++ b/crates/dav/src/common/propfind.rs @@ -27,7 +27,7 @@ use crate::{ propfind::{PrincipalPropFind, build_home_set}, }, }; -use calcard::common::timezone::Tz; +use calcard::{common::timezone::Tz, icalendar::ICalendarComponentType}; use common::{DavResourcePath, DavResources, Server, auth::AccessToken}; use dav_proto::{ Depth, RequestHeaders, @@ -36,9 +36,9 @@ use dav_proto::{ schema::{ Collation, Namespace, property::{ - ActiveLock, CalDavProperty, CardDavProperty, DavProperty, DavValue, PrincipalProperty, - Privilege, ReportSet, ResourceType, Rfc1123DateTime, SupportedCollation, SupportedLock, - WebDavProperty, + ActiveLock, CalDavProperty, CardDavProperty, Comp, DavProperty, DavValue, + PrincipalProperty, Privilege, ReportSet, ResourceType, Rfc1123DateTime, + SupportedCollation, SupportedLock, WebDavProperty, }, request::{DavDeadProperty, DavPropertyValue, PropFind}, response::{ @@ -48,7 +48,7 @@ use dav_proto::{ }, }; use directory::{Permission, Type, backend::internal::manage::ManageDirectory}; -use groupware::calendar::SCHEDULE_INBOX_ID; +use groupware::calendar::{SCHEDULE_INBOX_ID, SupportedComponent}; use groupware::{ DavCalendarResource, DavResourceName, cache::GroupwareCache, calendar::ArchivedTimezone, }; @@ -67,6 +67,7 @@ use types::{ collection::{Collection, SyncCollection}, dead_property::DeadProperty, }; +use utils::map::bitmap::Bitmap; pub(crate) trait PropFindRequestHandler: Sync + Send { fn handle_propfind_request( @@ -898,11 +899,23 @@ impl PropFindRequestHandler for Server { } ( CalDavProperty::SupportedCalendarComponentSet, - ArchivedResource::Calendar(_), + ArchivedResource::Calendar(calendar), ) => { + let supported_components = + calendar.inner.supported_components.to_native(); fields.push(DavPropertyValue::new( property.clone(), - DavValue::SupportedCalendarComponentSet, + if supported_components != 0 { + DavValue::Components(List( + Bitmap::::from(supported_components) + .into_iter() + .map(ICalendarComponentType::from) + .map(Comp) + .collect(), + )) + } else { + DavValue::all_calendar_components() + }, )); } (CalDavProperty::SupportedCalendarData, ArchivedResource::Calendar(_)) => { diff --git a/crates/directory/Cargo.toml b/crates/directory/Cargo.toml index 881676f6..27bbbdca 100644 --- a/crates/directory/Cargo.toml +++ b/crates/directory/Cargo.toml @@ -19,7 +19,7 @@ tokio = { version = "1.47", features = ["net"] } tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12"] } rustls = { version = "0.23.5", default-features = false, features = ["std", "ring", "tls12"] } rustls-pki-types = { version = "1" } -ldap3 = { version = "0.12", default-features = false, features = ["tls-rustls"] } +ldap3 = { version = "0.12", default-features = false, features = ["tls-rustls-ring"] } deadpool = { version = "0.10", features = ["managed", "rt_tokio_1"] } async-trait = "0.1.68" ahash = { version = "0.8" } diff --git a/crates/groupware/src/calendar/mod.rs b/crates/groupware/src/calendar/mod.rs index a163a395..f38787dd 100644 --- a/crates/groupware/src/calendar/mod.rs +++ b/crates/groupware/src/calendar/mod.rs @@ -11,9 +11,12 @@ pub mod index; pub mod itip; pub mod storage; -use calcard::icalendar::{ICalendar, ICalendarComponent, ICalendarDuration, ICalendarEntry}; +use calcard::icalendar::{ + ICalendar, ICalendarComponent, ICalendarComponentType, ICalendarDuration, ICalendarEntry, +}; use common::{DavName, auth::AccessToken}; use types::{acl::AclGrant, dead_property::DeadProperty}; +use utils::map::bitmap::BitmapItem; #[derive( rkyv::Archive, rkyv::Deserialize, rkyv::Serialize, Debug, Default, Clone, PartialEq, Eq, @@ -22,11 +25,32 @@ pub struct Calendar { pub name: String, pub preferences: Vec, pub acls: Vec, + pub supported_components: u64, pub dead_properties: DeadProperty, pub created: i64, pub modified: i64, } +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum SupportedComponent { + VCalendar, // [RFC5545, Section 3.4] + VEvent, // [RFC5545, Section 3.6.1] + VTodo, // [RFC5545, Section 3.6.2] + VJournal, // [RFC5545, Section 3.6.3] + VFreebusy, // [RFC5545, Section 3.6.4] + VTimezone, // [RFC5545, Section 3.6.5] + VAlarm, // [RFC5545, Section 3.6.6] + Standard, // [RFC5545, Section 3.6.5] + Daylight, // [RFC5545, Section 3.6.5] + VAvailability, // [RFC7953, Section 3.1] + Available, // [RFC7953, Section 3.1] + Participant, // [RFC9073, Section 7.1] + VLocation, // [RFC9073, Section 7.2] [RFC Errata 7381] + VResource, // [RFC9073, Section 7.3] + VStatus, // draft-ietf-calext-ical-tasks-14 + Other, +} + pub const CALENDAR_SUBSCRIBED: u16 = 1; pub const CALENDAR_INVISIBLE: u16 = 1 << 1; pub const CALENDAR_AVAILABILITY_NONE: u16 = 1 << 2; @@ -319,3 +343,105 @@ impl Default for ChangedBy { ChangedBy::CalendarAddress("".into()) } } + +impl From for SupportedComponent { + fn from(value: u64) -> Self { + match value { + 0 => SupportedComponent::VCalendar, + 1 => SupportedComponent::VEvent, + 2 => SupportedComponent::VTodo, + 3 => SupportedComponent::VJournal, + 4 => SupportedComponent::VFreebusy, + 5 => SupportedComponent::VTimezone, + 6 => SupportedComponent::VAlarm, + 7 => SupportedComponent::Standard, + 8 => SupportedComponent::Daylight, + 9 => SupportedComponent::VAvailability, + 10 => SupportedComponent::Available, + 11 => SupportedComponent::Participant, + 12 => SupportedComponent::VLocation, + 13 => SupportedComponent::VResource, + 14 => SupportedComponent::VStatus, + _ => SupportedComponent::Other, + } + } +} + +impl From for u64 { + fn from(value: SupportedComponent) -> Self { + match value { + SupportedComponent::VCalendar => 0, + SupportedComponent::VEvent => 1, + SupportedComponent::VTodo => 2, + SupportedComponent::VJournal => 3, + SupportedComponent::VFreebusy => 4, + SupportedComponent::VTimezone => 5, + SupportedComponent::VAlarm => 6, + SupportedComponent::Standard => 7, + SupportedComponent::Daylight => 8, + SupportedComponent::VAvailability => 9, + SupportedComponent::Available => 10, + SupportedComponent::Participant => 11, + SupportedComponent::VLocation => 12, + SupportedComponent::VResource => 13, + SupportedComponent::VStatus => 14, + SupportedComponent::Other => 15, + } + } +} + +impl BitmapItem for SupportedComponent { + fn max() -> u64 { + u64::from(SupportedComponent::Other) + } + + fn is_valid(&self) -> bool { + !matches!(self, SupportedComponent::Other) + } +} + +impl From for SupportedComponent { + fn from(value: ICalendarComponentType) -> Self { + match value { + ICalendarComponentType::VCalendar => SupportedComponent::VCalendar, + ICalendarComponentType::VEvent => SupportedComponent::VEvent, + ICalendarComponentType::VTodo => SupportedComponent::VTodo, + ICalendarComponentType::VJournal => SupportedComponent::VJournal, + ICalendarComponentType::VFreebusy => SupportedComponent::VFreebusy, + ICalendarComponentType::VTimezone => SupportedComponent::VTimezone, + ICalendarComponentType::VAlarm => SupportedComponent::VAlarm, + ICalendarComponentType::Standard => SupportedComponent::Standard, + ICalendarComponentType::Daylight => SupportedComponent::Daylight, + ICalendarComponentType::VAvailability => SupportedComponent::VAvailability, + ICalendarComponentType::Available => SupportedComponent::Available, + ICalendarComponentType::Participant => SupportedComponent::Participant, + ICalendarComponentType::VLocation => SupportedComponent::VLocation, + ICalendarComponentType::VResource => SupportedComponent::VResource, + ICalendarComponentType::VStatus => SupportedComponent::VStatus, + _ => SupportedComponent::Other, + } + } +} + +impl From for ICalendarComponentType { + fn from(value: SupportedComponent) -> Self { + match value { + SupportedComponent::VCalendar => ICalendarComponentType::VCalendar, + SupportedComponent::VEvent => ICalendarComponentType::VEvent, + SupportedComponent::VTodo => ICalendarComponentType::VTodo, + SupportedComponent::VJournal => ICalendarComponentType::VJournal, + SupportedComponent::VFreebusy => ICalendarComponentType::VFreebusy, + SupportedComponent::VTimezone => ICalendarComponentType::VTimezone, + SupportedComponent::VAlarm => ICalendarComponentType::VAlarm, + SupportedComponent::Standard => ICalendarComponentType::Standard, + SupportedComponent::Daylight => ICalendarComponentType::Daylight, + SupportedComponent::VAvailability => ICalendarComponentType::VAvailability, + SupportedComponent::Available => ICalendarComponentType::Available, + SupportedComponent::Participant => ICalendarComponentType::Participant, + SupportedComponent::VLocation => ICalendarComponentType::VLocation, + SupportedComponent::VResource => ICalendarComponentType::VResource, + SupportedComponent::VStatus => ICalendarComponentType::VStatus, + SupportedComponent::Other => ICalendarComponentType::Other(Default::default()), + } + } +} diff --git a/crates/services/src/state_manager/ece.rs b/crates/services/src/state_manager/ece.rs index 155d986e..ebe92012 100644 --- a/crates/services/src/state_manager/ece.rs +++ b/crates/services/src/state_manager/ece.rs @@ -4,17 +4,14 @@ * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL */ -use aes_gcm::{ - Aes128Gcm, Nonce, - aead::{Aead, generic_array::GenericArray}, -}; +use aes_gcm::{Aes128Gcm, Nonce, aead::Aead}; use hkdf::Hkdf; use p256::{ PublicKey, ecdh::EphemeralSecret, elliptic_curve::{rand_core::OsRng, sec1::ToEncodedPoint}, }; -use sha2::Sha256; +use sha2::{Sha256, digest::generic_array::GenericArray}; use store::rand::Rng; /* diff --git a/crates/utils/src/map/bitmap.rs b/crates/utils/src/map/bitmap.rs index 22336381..dc21a82f 100644 --- a/crates/utils/src/map/bitmap.rs +++ b/crates/utils/src/map/bitmap.rs @@ -141,6 +141,10 @@ impl Bitmap { _state: std::marker::PhantomData, } } + + pub fn into_inner(self) -> u64 { + self.bitmap + } } impl From> for Bitmap { diff --git a/tests/src/webdav/mkcol.rs b/tests/src/webdav/mkcol.rs index 0a3dfd20..8c871f10 100644 --- a/tests/src/webdav/mkcol.rs +++ b/tests/src/webdav/mkcol.rs @@ -171,7 +171,6 @@ pub async fn test(test: &WebDavTest) { [ ("D:displayname", "Named Events 2"), ("A:calendar-description", ""), - ("A:supported-calendar-component-set", ""), ], ) .await @@ -181,6 +180,61 @@ pub async fn test(test: &WebDavTest) { "A:mkcalendar-response.D:propstat.D:status", ["HTTP/1.1 200 OK"], ); + client + .mkcol( + "MKCALENDAR", + "/dav/cal/john/my-named-events3", + [], + [ + ("D:displayname", "Named Events 3"), + ( + "A:supported-calendar-component-set", + "", + ), + ], + ) + .await + .with_status(StatusCode::CREATED) + .with_value("A:mkcalendar-response.D:propstat.D:prop.D:displayname", "") + .with_values( + "A:mkcalendar-response.D:propstat.D:status", + ["HTTP/1.1 200 OK"], + ); + // Check the properties of the created calendars + client + .propfind( + "/dav/cal/john/my-named-events2/", + ["A:supported-calendar-component-set"], + ) + .await + .properties("/dav/cal/john/my-named-events2/") + .get("A:supported-calendar-component-set") + .with_status(StatusCode::OK) + .with_values([ + "A:comp.[name]:VJOURNAL", + "A:comp.[name]:VTIMEZONE", + "A:comp.[name]:VAVAILABILITY", + "A:comp.[name]:VALARM", + "A:comp.[name]:VRESOURCE", + "A:comp.[name]:AVAILABLE", + "A:comp.[name]:VTODO", + "A:comp.[name]:VFREEBUSY", + "A:comp.[name]:VEVENT", + "A:comp.[name]:STANDARD", + "A:comp.[name]:DAYLIGHT", + "A:comp.[name]:VLOCATION", + "A:comp.[name]:PARTICIPANT", + ]); + client + .propfind( + "/dav/cal/john/my-named-events3/", + ["A:supported-calendar-component-set"], + ) + .await + .properties("/dav/cal/john/my-named-events3/") + .get("A:supported-calendar-component-set") + .with_status(StatusCode::OK) + .with_values(["A:comp.[name]:VEVENT", "A:comp.[name]:VTODO"]); // Delete everything for path in [ @@ -191,6 +245,7 @@ pub async fn test(test: &WebDavTest) { "/dav/card/john/my-named-cards", "/dav/cal/john/my-named-events", "/dav/cal/john/my-named-events2", + "/dav/cal/john/my-named-events3", ] { client .request("DELETE", path, "")