From b0333769c8dd2ac8cbf0e159ccddecac0b85ff60 Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Thu, 29 Oct 2026 18:24:37 +0400 Subject: [PATCH] build: bump Rust crates --- src-tauri/Cargo.lock | 303 +++++++++++----------------- src-tauri/Cargo.toml | 24 +-- src-tauri/src/lib.rs | 3 +- src-tauri/src/platform_browser.rs | 8 +- src-tauri/src/profile/manager.rs | 4 +- src-tauri/src/profile/password.rs | 4 +- src-tauri/src/profile_import/mod.rs | 4 +- src-tauri/src/proxy_manager.rs | 4 +- src-tauri/src/proxy_storage.rs | 11 +- src-tauri/src/ramfs/mod.rs | 6 +- src-tauri/src/synchronizer.rs | 2 +- src-tauri/src/wayfern_manager.rs | 4 +- src/generated/licenses.json | 32 +-- 13 files changed, 171 insertions(+), 238 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index aca4edac..36a1cdb8 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -28,17 +28,6 @@ dependencies = [ "inout 0.2.5", ] -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher 0.4.4", - "cpufeatures 0.2.17", -] - [[package]] name = "aes" version = "0.9.3" @@ -50,20 +39,6 @@ dependencies = [ "cpufeatures 0.3.1", ] -[[package]] -name = "aes-gcm" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" -dependencies = [ - "aead 0.5.2", - "aes 0.8.4", - "cipher 0.4.4", - "ctr 0.9.2", - "ghash 0.5.1", - "subtle", -] - [[package]] name = "aes-gcm" version = "0.11.1" @@ -71,11 +46,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f2b8006a0c83f52b62ba44a97b58bf76fe2f70a329e588f67f89691d93d498f" dependencies = [ "aead 0.6.1", - "aes 0.9.3", + "aes", "cipher 0.5.2", - "ctr 0.10.1", + "ctr", "ctutils", - "ghash 0.6.0", + "ghash", ] [[package]] @@ -522,6 +497,30 @@ dependencies = [ "arrayvec", ] +[[package]] +name = "aws-lc-rs" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "048006790404103c488e6c5616b3e7e702a71292aadda08e8f7698a9e0d2eb53" +dependencies = [ + "aws-lc-sys", + "untrusted 0.7.1", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bfbe32ac36b3c428696ce315464181bc4029d689fd58e3f2a4e58c252242f52" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", + "pkg-config", +] + [[package]] name = "axum" version = "0.8.9" @@ -755,7 +754,7 @@ dependencies = [ "aead 0.5.2", "base64 0.22.1", "blake2 0.10.6", - "chacha20poly1305", + "chacha20poly1305 0.10.1", "hex", "hmac 0.12.1", "ip_network", @@ -767,7 +766,7 @@ dependencies = [ "rand_core 0.6.4", "ring", "tracing", - "untrusted", + "untrusted 0.9.0", "x25519-dalek", ] @@ -1057,6 +1056,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" dependencies = [ "cfg-if", + "cipher 0.5.2", "cpufeatures 0.3.1", "rand_core 0.10.1", ] @@ -1070,10 +1070,22 @@ dependencies = [ "aead 0.5.2", "chacha20 0.9.1", "cipher 0.4.4", - "poly1305", + "poly1305 0.8.0", "zeroize", ] +[[package]] +name = "chacha20poly1305" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" +dependencies = [ + "aead 0.6.1", + "chacha20 0.10.2", + "cipher 0.5.2", + "poly1305 0.9.1", +] + [[package]] name = "chrono" version = "0.4.45" @@ -1180,6 +1192,15 @@ dependencies = [ "error-code", ] +[[package]] +name = "cmake" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" +dependencies = [ + "cc", +] + [[package]] name = "cmov" version = "0.5.4" @@ -1217,12 +1238,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "const-oid" version = "0.10.2" @@ -1454,15 +1469,6 @@ version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "914a755b7c2d4af2bdcff7ce1739e2db9a1b81a9b07123d8015786ae03c0980d" -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher 0.4.4", -] - [[package]] name = "ctr" version = "0.10.1" @@ -1613,16 +1619,6 @@ dependencies = [ "thiserror 2.0.21", ] -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid 0.9.6", - "zeroize", -] - [[package]] name = "deranged" version = "0.5.9" @@ -1671,7 +1667,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer 0.12.1", - "const-oid 0.10.2", + "const-oid", "crypto-common 0.2.2", "ctutils", ] @@ -1789,11 +1785,12 @@ dependencies = [ name = "donutbrowser" version = "0.35.5" dependencies = [ - "aes 0.9.3", - "aes-gcm 0.11.1", + "aes", + "aes-gcm", "argon2", "async-socks5", "async-trait", + "aws-lc-sys", "axum", "base64 0.23.1", "blake3", @@ -1948,16 +1945,6 @@ dependencies = [ "syn 2.0.119", ] -[[package]] -name = "ed25519" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" -dependencies = [ - "pkcs8", - "signature", -] - [[package]] name = "either" version = "1.19.0" @@ -2385,6 +2372,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "futures" version = "0.3.34" @@ -2642,23 +2635,13 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "ghash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" -dependencies = [ - "opaque-debug", - "polyval 0.6.2", -] - [[package]] name = "ghash" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eecf2d5dc9b66b732b97707a0210906b1d30523eb773193ab777c0c84b3e8d5" dependencies = [ - "polyval 0.7.3", + "polyval", ] [[package]] @@ -2956,15 +2939,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hkdf" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" -dependencies = [ - "hmac 0.12.1", -] - [[package]] name = "hkdf" version = "0.13.0" @@ -3829,9 +3803,9 @@ dependencies = [ [[package]] name = "lzma-rust2" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c46f3fcd2e888afdb01a07efc071cb21300e07c68d32c3e8b01b5c8cb1fcaa" +checksum = "490750560fa7851fbbf5d3ab1a8750f09350ed361ed8aed85b1e1e40587812ee" dependencies = [ "sha2 0.11.1", ] @@ -3913,12 +3887,12 @@ dependencies = [ [[package]] name = "md-5" -version = "0.10.6" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98" dependencies = [ "cfg-if", - "digest 0.10.7", + "digest 0.11.3", ] [[package]] @@ -4922,16 +4896,6 @@ dependencies = [ "futures-io", ] -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "pkg-config" version = "0.3.34" @@ -4989,6 +4953,16 @@ dependencies = [ "universal-hash 0.5.1", ] +[[package]] +name = "poly1305" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" +dependencies = [ + "cpufeatures 0.3.1", + "universal-hash 0.6.1", +] + [[package]] name = "polycool" version = "0.4.0" @@ -4998,18 +4972,6 @@ dependencies = [ "arrayvec", ] -[[package]] -name = "polyval" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" -dependencies = [ - "cfg-if", - "cpufeatures 0.2.17", - "opaque-debug", - "universal-hash 0.5.1", -] - [[package]] name = "polyval" version = "0.7.3" @@ -5537,9 +5499,9 @@ dependencies = [ [[package]] name = "resvg" -version = "0.48.1" +version = "0.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e3803f97b999e80cbf7c6ecdd07a8102204d92e1633cf48783720c521196bd" +checksum = "1572844b6727a1bf842190e9947641a68ac44bed83f50afb4bd1407a2564bee8" dependencies = [ "bytemuck", "gif", @@ -5555,9 +5517,9 @@ dependencies = [ [[package]] name = "rfd" -version = "0.16.1" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fe518b6db89699d59862e4d1e3a0226316090f4e4ec09f7dd686be25634c7c" +checksum = "20dafead71c16a34e1ff357ddefc8afc11e7d51d6d2b9fbd07eaa48e3e540220" dependencies = [ "block2", "dispatch2", @@ -5565,16 +5527,18 @@ dependencies = [ "gobject-sys", "gtk-sys", "js-sys", + "libc", "log", "objc2", "objc2-app-kit", "objc2-core-foundation", "objc2-foundation", + "percent-encoding", "raw-window-handle", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -5596,23 +5560,10 @@ dependencies = [ "cfg-if", "getrandom 0.2.17", "libc", - "untrusted", + "untrusted 0.9.0", "windows-sys 0.52.0", ] -[[package]] -name = "ring-compat" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccce7bae150b815f0811db41b8312fcb74bffa4cab9cee5429ee00f356dd5bd4" -dependencies = [ - "aead 0.5.2", - "ed25519", - "generic-array", - "pkcs8", - "ring", -] - [[package]] name = "roxmltree" version = "0.20.0" @@ -5720,7 +5671,7 @@ checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" dependencies = [ "ring", "rustls-pki-types", - "untrusted", + "untrusted 0.9.0", ] [[package]] @@ -5827,13 +5778,13 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sealed" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22f968c5ea23d555e670b449c1c5e7b2fc399fdaec1d304a17cd48e288abc107" +checksum = "9b68e2ea526d9fb32f23ca8894fb5da9e743f34c2f41701f0501dc8a25c4b343" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.9", ] [[package]] @@ -5842,11 +5793,11 @@ version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5107b24b91445dd2aa449a258a1807b63240942157292354dc5bfdbeb8bc6db8" dependencies = [ - "aes 0.9.3", + "aes", "cbc", "futures-util", "getrandom 0.4.3", - "hkdf 0.13.0", + "hkdf", "hybrid-array", "num", "once_cell", @@ -6170,11 +6121,11 @@ dependencies = [ [[package]] name = "shadowsocks" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "482831bf9d55acf3c98e211b6c852c3dfdf1d1b0d23fdf1d887c5a4b2acad4e4" +checksum = "e2065b026dbe4f47048eca384adf07f693bf901050d80abd3adb7b2422709b2d" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "blake3", "byte_string", "bytes", @@ -6203,18 +6154,18 @@ dependencies = [ [[package]] name = "shadowsocks-crypto" -version = "0.6.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d038a3d17586f1c1ab3c1c3b9e4d5ef8fba98fb3890ad740c8487038b2e2ca5" +checksum = "b404a62ebea5003f44b9a2748dee7555c5f9ae39896508e466a2a91ee6fa5df5" dependencies = [ - "aes-gcm 0.10.3", + "aes-gcm", + "aws-lc-rs", "cfg-if", - "chacha20poly1305", - "hkdf 0.12.4", + "chacha20poly1305 0.11.0", + "hkdf", "md-5", - "rand 0.9.5", - "ring-compat", - "sha1 0.10.7", + "rand 0.10.3", + "sha1 0.11.0", ] [[package]] @@ -6249,12 +6200,6 @@ dependencies = [ "libc", ] -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" - [[package]] name = "simd-adler32" version = "0.3.10" @@ -6414,23 +6359,13 @@ dependencies = [ [[package]] name = "spin" -version = "0.10.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" +checksum = "0134f9043ed38b087ac4f7d4af44c79e2c9e5094421fe3164f435ce585953b10" dependencies = [ "lock_api", ] -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "sqlite-wasm-rs" version = "0.6.2" @@ -6588,9 +6523,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.39.6" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2071df9448915b71c4fe6d25deaf1c22f12bd234f01540b77312bb8e41361e6" +checksum = "110e37d98880fd804cd47509b90a8444f7aaaab655ae625e83cd442a8bc2ebf2" dependencies = [ "libc", "memchr", @@ -6866,9 +6801,9 @@ dependencies = [ [[package]] name = "tauri-plugin-deep-link" -version = "2.6.1" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac7a92a46ab5c88f44532ca50906d6e448a948d4ddf8c5376ab125e3260f736" +checksum = "ab551d9bec27bb79d1c7fe5ed38c5cfd1cebb86efa745acc65f5853f345f6e56" dependencies = [ "dunce", "plist", @@ -6887,9 +6822,9 @@ dependencies = [ [[package]] name = "tauri-plugin-dialog" -version = "2.8.3" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7461aaacf1901915ea7b9f5cd74f8224a351ed96af0a62c07fce934003cb34b" +checksum = "ce0fb9c2b6d34a9720627ed930ebc8af26f61e648695aecaeb03d5c33c5896f5" dependencies = [ "log", "raw-window-handle", @@ -6965,13 +6900,13 @@ dependencies = [ [[package]] name = "tauri-plugin-notification" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b939d7b19c8af1381a72ef8474b3aba2b56c1ddac2c23f0c8e96abbcf86b198b" +checksum = "5bc6c194a95a535abdfbe3bc1af9a43935b8b9b29c216b8e71af8b59132703cf" dependencies = [ "log", "notify-rust", - "rand 0.9.5", + "rand 0.10.3", "serde", "serde_json", "serde_repr", @@ -7803,6 +7738,12 @@ dependencies = [ "ctutils", ] +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + [[package]] name = "untrusted" version = "0.9.0" @@ -7842,9 +7783,9 @@ dependencies = [ [[package]] name = "usvg" -version = "0.48.1" +version = "0.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "977d0a4abdef933f424a99fe09f95576e089b90aebc6f016a3bc813762493e91" +checksum = "d09b73ee83641d390ad7ffd9000f347b16eb128e437675b6ff277ea5c7fcf22c" dependencies = [ "base64 0.23.1", "data-url", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 15d179f4..88c82fba 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -26,19 +26,18 @@ path = "src/bin/proxy_server.rs" [build-dependencies] tauri-build = { version = "2", features = [] } -resvg = "0.48" +resvg = "0.49" [dependencies] serde_json = "1" # Runtime as well as build time: the per-profile window badge is rendered at launch. -resvg = "0.48" +resvg = "0.49" serde = { version = "1", features = ["derive"] } tauri = { version = "2", features = ["tray-icon", "image-png"] } tauri-plugin-opener = "2" tauri-plugin-fs = "2" tauri-plugin-shell = "2" -# 2.6.2 does not build on Linux: it omits two fields that rust-ini 0.21.3 requires. -tauri-plugin-deep-link = "=2.6.1" +tauri-plugin-deep-link = "2" tauri-plugin-single-instance = "2" tauri-plugin-dialog = "2" tauri-plugin-macos-permissions = "2" @@ -64,7 +63,7 @@ native-tls = "0.2" tokio-native-tls = "0.3" tokio = { version = "1", features = ["full", "sync"] } tokio-util = "0.7" -sysinfo = "0.39" +sysinfo = "0.40" # 0.23 turns on `simd-unsafe` by default, decoding via hand-written unsafe # AVX2/NEON. This crate decodes attacker-influenced input (proxy CONNECT auth, # extension payloads, os_crypt key blobs), and none of those paths are hot @@ -77,7 +76,7 @@ zip = { version = "9", default-features = false, features = ["deflate-flate2"] } tar = "0" bzip2 = "0" flate2 = "1" -lzma-rust2 = { version = "0.23", default-features = false, features = ["std", "optimization", "xz"] } +lzma-rust2 = { version = "0.24", default-features = false, features = ["std", "optimization", "xz"] } msi-extract = "0" uuid = { version = "1.29", features = ["v4", "serde"] } @@ -101,11 +100,9 @@ cbc = "0.2" ring = "0.17" subtle = "2" sha2 = "0.11" -# Held below 1.25 on purpose. From 1.25 the `aead-cipher` feature hard-enables the -# aws-lc crypto backend (a C/assembly library needing cmake, and NASM on Windows) -# alongside the `ring` this crate already ships through boringtun. Moving up is a -# build-toolchain decision for every platform, not a routine dependency refresh. -shadowsocks = { version = ">=1.24, <1.25", default-features = false, features = ["aead-cipher"] } +# From 1.25 the `aead-cipher` feature builds the aws-lc crypto backend, next to +# the `ring` that boringtun brings. On Windows it needs `prebuilt-nasm`, below. +shadowsocks = { version = "1.25", default-features = false, features = ["aead-cipher"] } hyper = { version = "1.12", features = ["full"] } hyper-util = { version = "0.1", features = ["full"] } http-body-util = "0.1" @@ -188,6 +185,9 @@ windows = { version = "0.62", features = [ "Win32_Security_Authorization", "Win32_System_LibraryLoader", ] } +# aws-lc (through shadowsocks) assembles its Windows code with NASM. The objects +# AWS ships in the crate spare every build machine that tool. +aws-lc-sys = { version = "0.47", features = ["prebuilt-nasm"] } # WinFsp, for the RAM volume of ephemeral profiles. Donut does not ship the # driver; the DLL is delay-loaded and used only when it is installed. winfsp = { version = "0.13", default-features = false } @@ -206,7 +206,7 @@ tower = "0.5" tower-http = { version = "0.7", features = ["fs", "trace"] } futures-util = "0.3" serial_test = "4" -lzma-rust2 = { version = "0.23", features = ["encoder"] } +lzma-rust2 = { version = "0.24", features = ["encoder"] } # Integration test configuration [[test]] diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 13ab7396..962f82ad 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1013,6 +1013,7 @@ fn mcp_key_display_prefix(key: &str) -> String { fn mcp_remote_key_label() -> String { const MAX_LABEL_CHARS: usize = 80; let host = sysinfo::System::host_name() + .ok() .map(|h| h.trim().to_string()) .filter(|h| !h.is_empty()) .unwrap_or_else(|| "this computer".to_string()); @@ -2689,7 +2690,7 @@ pub fn run_with_builder( log::info!( "Donut started version={} os=\"{}\" arch={} pid={} tz={} portable={} data_dir={}", env!("BUILD_VERSION"), - sysinfo::System::long_os_version().unwrap_or_else(|| std::env::consts::OS.to_string()), + sysinfo::System::long_os_version().unwrap_or_else(|_| std::env::consts::OS.to_string()), std::env::consts::ARCH, std::process::id(), chrono::Local::now().format("%:z"), diff --git a/src-tauri/src/platform_browser.rs b/src-tauri/src/platform_browser.rs index f27b163b..ae0d71b9 100644 --- a/src-tauri/src/platform_browser.rs +++ b/src-tauri/src/platform_browser.rs @@ -43,7 +43,7 @@ mod unix_processes { /// Every process with its command line. Parents come with any refresh. pub fn snapshot() -> System { - let mut system = System::new(); + let mut system = crate::proxy_storage::process_table(sysinfo::RefreshKind::nothing()); system.refresh_processes_specifics( ProcessesToUpdate::All, true, @@ -103,7 +103,7 @@ mod unix_processes { /// Which of `pids` are still alive, from one refresh of those processes. pub fn still_alive(pids: &[u32]) -> Vec { let wanted: Vec = pids.iter().map(|pid| Pid::from_u32(*pid)).collect(); - let mut system = System::new(); + let mut system = crate::proxy_storage::process_table(sysinfo::RefreshKind::nothing()); system.refresh_processes_specifics( ProcessesToUpdate::Some(&wanted), true, @@ -488,9 +488,9 @@ pub mod windows { ) -> Result<(), Box> { // First try using sysinfo (cross-platform approach), refreshing only this // process. - use sysinfo::{Pid, ProcessRefreshKind, ProcessesToUpdate, System}; + use sysinfo::{Pid, ProcessRefreshKind, ProcessesToUpdate}; let sysinfo_pid = Pid::from_u32(pid); - let mut system = System::new(); + let mut system = crate::proxy_storage::process_table(sysinfo::RefreshKind::nothing()); system.refresh_processes_specifics( ProcessesToUpdate::Some(&[sysinfo_pid]), true, diff --git a/src-tauri/src/profile/manager.rs b/src-tauri/src/profile/manager.rs index 44330565..de393179 100644 --- a/src-tauri/src/profile/manager.rs +++ b/src-tauri/src/profile/manager.rs @@ -8,7 +8,7 @@ use crate::proxy_manager::PROXY_MANAGER; use crate::wayfern_manager::WayfernConfig; use std::fs::{self, create_dir_all}; use std::path::{Path, PathBuf}; -use sysinfo::{Pid, ProcessRefreshKind, RefreshKind, System, UpdateKind}; +use sysinfo::{Pid, ProcessRefreshKind, RefreshKind, UpdateKind}; use url::Url; static METADATA_WRITES: std::sync::Mutex<()> = std::sync::Mutex::new(()); @@ -2105,7 +2105,7 @@ impl ProfileManager { // For non-wayfern browsers, use the existing PID-based logic let inner_profile = profile.clone(); // Only command lines are read below. - let system = System::new_with_specifics( + let system = crate::proxy_storage::process_table( RefreshKind::nothing().with_processes( ProcessRefreshKind::nothing() .with_cmd(UpdateKind::OnlyIfNotSet) diff --git a/src-tauri/src/profile/password.rs b/src-tauri/src/profile/password.rs index ba63c315..f39e8c81 100644 --- a/src-tauri/src/profile/password.rs +++ b/src-tauri/src/profile/password.rs @@ -686,12 +686,12 @@ fn write_record(dir: &Path, files: Baseline, store: &Path) -> std::io::Result<() /// included: on Windows the network service still holds the cookie database /// for a moment after the browser process has exited. fn processes_using(dir: &Path) -> Vec { - use sysinfo::{ProcessRefreshKind, RefreshKind, System, UpdateKind}; + use sysinfo::{ProcessRefreshKind, RefreshKind, UpdateKind}; let Ok(dir) = dir.canonicalize() else { return Vec::new(); }; - let system = System::new_with_specifics( + let system = crate::proxy_storage::process_table( RefreshKind::nothing() .with_processes(ProcessRefreshKind::nothing().with_cmd(UpdateKind::Always)), ); diff --git a/src-tauri/src/profile_import/mod.rs b/src-tauri/src/profile_import/mod.rs index d2998b84..c0ac4766 100644 --- a/src-tauri/src/profile_import/mod.rs +++ b/src-tauri/src/profile_import/mod.rs @@ -106,9 +106,9 @@ pub fn import_into( /// executable name: the user may well have Chrome open on a *different* /// profile, which is no reason to block the import. fn running_source_browser(shape: &layout::SourceShape) -> Option { - use sysinfo::{ProcessRefreshKind, RefreshKind, System}; + use sysinfo::{ProcessRefreshKind, RefreshKind}; - let system = System::new_with_specifics( + let system = crate::proxy_storage::process_table( RefreshKind::nothing().with_processes(ProcessRefreshKind::everything()), ); diff --git a/src-tauri/src/proxy_manager.rs b/src-tauri/src/proxy_manager.rs index daaf1bcc..ae2c9013 100644 --- a/src-tauri/src/proxy_manager.rs +++ b/src-tauri/src/proxy_manager.rs @@ -369,7 +369,7 @@ pub fn is_launch_placeholder_pid(pid: u32) -> bool { /// read of the process table. A process that exited but is still listed /// (a zombie) is not alive. fn live_process_start_times(pids: &[u32]) -> HashMap { - use sysinfo::{ProcessRefreshKind, ProcessesToUpdate, System}; + use sysinfo::{ProcessRefreshKind, ProcessesToUpdate}; if pids.is_empty() { return HashMap::new(); } @@ -377,7 +377,7 @@ fn live_process_start_times(pids: &[u32]) -> HashMap { .iter() .map(|&pid| sysinfo::Pid::from_u32(pid)) .collect(); - let mut system = System::new(); + let mut system = crate::proxy_storage::process_table(sysinfo::RefreshKind::nothing()); system.refresh_processes_specifics( ProcessesToUpdate::Some(&pids), true, diff --git a/src-tauri/src/proxy_storage.rs b/src-tauri/src/proxy_storage.rs index de4bb718..4b4efc51 100644 --- a/src-tauri/src/proxy_storage.rs +++ b/src-tauri/src/proxy_storage.rs @@ -336,10 +336,17 @@ fn process_has_exited(process: &sysinfo::Process) -> bool { } } +/// A process table refreshed as `refreshes` asks. sysinfo refuses only +/// platforms Donut is not built for, so the error cannot happen here. +pub fn process_table(refreshes: sysinfo::RefreshKind) -> sysinfo::System { + sysinfo::System::new_with_specifics(refreshes) + .expect("sysinfo supports every platform Donut is built for") +} + pub fn process_start_time(pid: u32) -> Option { - use sysinfo::{ProcessRefreshKind, ProcessesToUpdate, System}; + use sysinfo::{ProcessRefreshKind, ProcessesToUpdate, RefreshKind}; let pid = sysinfo::Pid::from_u32(pid); - let mut system = System::new(); + let mut system = process_table(RefreshKind::nothing()); system.refresh_processes_specifics( ProcessesToUpdate::Some(&[pid]), true, diff --git a/src-tauri/src/ramfs/mod.rs b/src-tauri/src/ramfs/mod.rs index c0212098..e457c318 100644 --- a/src-tauri/src/ramfs/mod.rs +++ b/src-tauri/src/ramfs/mod.rs @@ -94,9 +94,9 @@ mod windows_client { } fn host_alive(pid: u32) -> bool { - use sysinfo::{ProcessRefreshKind, ProcessesToUpdate, System}; + use sysinfo::{ProcessRefreshKind, ProcessesToUpdate}; let pid = sysinfo::Pid::from_u32(pid); - let mut system = System::new(); + let mut system = crate::proxy_storage::process_table(sysinfo::RefreshKind::nothing()); system.refresh_processes_specifics( ProcessesToUpdate::Some(&[pid]), true, @@ -160,7 +160,7 @@ mod windows_client { let started = Instant::now(); let mount = mount_dir(); let capacity = { - let mut system = sysinfo::System::new(); + let mut system = crate::proxy_storage::process_table(sysinfo::RefreshKind::nothing()); system.refresh_memory(); volume_capacity(system.total_memory()) }; diff --git a/src-tauri/src/synchronizer.rs b/src-tauri/src/synchronizer.rs index 137fe680..13e1edfa 100644 --- a/src-tauri/src/synchronizer.rs +++ b/src-tauri/src/synchronizer.rs @@ -910,7 +910,7 @@ impl SynchronizerManager { // Check leader is not already running if leader.process_id.is_some() { - let sys = sysinfo::System::new_all(); + let sys = crate::proxy_storage::process_table(sysinfo::RefreshKind::everything()); if let Some(pid) = leader.process_id { if sys.process(sysinfo::Pid::from(pid as usize)).is_some() { return Err( diff --git a/src-tauri/src/wayfern_manager.rs b/src-tauri/src/wayfern_manager.rs index 29a6b8cf..45df487f 100644 --- a/src-tauri/src/wayfern_manager.rs +++ b/src-tauri/src/wayfern_manager.rs @@ -4149,9 +4149,9 @@ impl WayfernManager { fn find_wayfern_process_by_profile( target_path: &std::path::Path, ) -> Option<(u32, String, Option)> { - use sysinfo::{ProcessRefreshKind, RefreshKind, System, UpdateKind}; + use sysinfo::{ProcessRefreshKind, RefreshKind, UpdateKind}; - let system = System::new_with_specifics( + let system = crate::proxy_storage::process_table( RefreshKind::nothing().with_processes( ProcessRefreshKind::nothing() .with_cmd(UpdateKind::OnlyIfNotSet) diff --git a/src/generated/licenses.json b/src/generated/licenses.json index 6473fc5d..f1d35f97 100644 --- a/src/generated/licenses.json +++ b/src/generated/licenses.json @@ -635,6 +635,14 @@ "name": "avif-serialize", "license": "BSD-3-Clause" }, + { + "name": "aws-lc-rs", + "license": "ISC AND (Apache-2.0 OR ISC)" + }, + { + "name": "aws-lc-sys", + "license": "ISC AND (Apache-2.0 OR ISC) AND Apache-2.0 AND MIT AND BSD-3-Clause AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR ISC OR MIT-0)" + }, { "name": "axum", "license": "MIT" @@ -1091,10 +1099,6 @@ "name": "defmt-parser", "license": "Apache-2.0 OR MIT" }, - { - "name": "der", - "license": "Apache-2.0 OR MIT" - }, { "name": "deranged", "license": "Apache-2.0 OR MIT" @@ -1191,10 +1195,6 @@ "name": "dynosaur_derive", "license": "Apache-2.0 OR MIT" }, - { - "name": "ed25519", - "license": "Apache-2.0 OR MIT" - }, { "name": "either", "license": "Apache-2.0 OR MIT" @@ -2283,10 +2283,6 @@ "name": "piper", "license": "Apache-2.0 OR MIT" }, - { - "name": "pkcs8", - "license": "Apache-2.0 OR MIT" - }, { "name": "plist", "license": "MIT" @@ -2539,10 +2535,6 @@ "name": "ring", "license": "Apache-2.0 AND ISC" }, - { - "name": "ring-compat", - "license": "Apache-2.0 OR MIT" - }, { "name": "roxmltree", "license": "Apache-2.0 OR MIT" @@ -2731,10 +2723,6 @@ "name": "signal-hook-registry", "license": "Apache-2.0 OR MIT" }, - { - "name": "signature", - "license": "Apache-2.0 OR MIT" - }, { "name": "simd-adler32", "license": "MIT" @@ -2811,10 +2799,6 @@ "name": "spin", "license": "MIT" }, - { - "name": "spki", - "license": "Apache-2.0 OR MIT" - }, { "name": "stable_deref_trait", "license": "Apache-2.0 OR MIT"