diff --git a/Cargo.lock b/Cargo.lock index d63d0cb..151cd91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -171,14 +171,14 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.8.1" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ + "async-trait", "axum-core", "base64 0.22.1", "bytes", - "form_urlencoded", "futures-util", "http 1.2.0", "http-body 1.0.1", @@ -208,10 +208,11 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.0" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ + "async-trait", "bytes", "futures-util", "http 1.2.0", @@ -308,9 +309,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -318,9 +319,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.3" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -488,9 +489,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.26" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", @@ -498,23 +499,23 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.26" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim", + "strsim 0.10.0", ] [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ - "heck 0.5.0", + "heck 0.4.1", "proc-macro2", "quote", "syn 2.0.96", @@ -522,9 +523,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "cocoa" @@ -800,7 +801,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.11.1", "syn 2.0.96", ] @@ -996,6 +997,16 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", + "regex", +] + [[package]] name = "env_home" version = "0.1.0" @@ -1004,15 +1015,15 @@ checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" [[package]] name = "env_logger" -version = "0.10.2" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" dependencies = [ + "anstream", + "anstyle", + "env_filter", "humantime", - "is-terminal", "log", - "regex", - "termcolor", ] [[package]] @@ -1472,7 +1483,7 @@ name = "gpapi" version = "2.3.10" dependencies = [ "anyhow", - "base64 0.21.7", + "base64 0.22.1", "chacha20poly1305", "clap", "dns-lookup", @@ -1494,7 +1505,7 @@ dependencies = [ "specta-macros", "tauri", "tempfile", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "url", "urlencoding", @@ -1693,12 +1704,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - [[package]] name = "hex" version = "0.4.3" @@ -2181,17 +2186,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "is-terminal" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "is-wsl" version = "0.4.0" @@ -2472,9 +2466,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "matchit" -version = "0.8.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "md5" @@ -3408,12 +3402,9 @@ dependencies = [ [[package]] name = "roxmltree" -version = "0.18.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862340e351ce1b271a378ec53f304a5558f7db87f3769dc655a8f6ecbb68b302" -dependencies = [ - "xmlparser", -] +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rustc-demangle" @@ -3915,6 +3906,12 @@ dependencies = [ "quote", ] +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "strsim" version = "0.11.1" @@ -3974,9 +3971,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.29.11" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd727fc423c2060f6c92d9534cef765c65a6ed3f428a03d7def74a8c4348e666" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" dependencies = [ "cfg-if", "core-foundation-sys", @@ -3984,7 +3981,7 @@ dependencies = [ "ntapi", "once_cell", "rayon", - "winapi", + "windows 0.52.0", ] [[package]] @@ -4471,9 +4468,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.26.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4bf6fecd69fcdede0ec680aaf474cdab988f9de6bc73d3758f0160e3b7025a" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", @@ -4660,9 +4657,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.26.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413083a99c579593656008130e29255e54dcaae495be556cc26888f211648c24" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" dependencies = [ "byteorder", "bytes", @@ -4672,7 +4669,7 @@ dependencies = [ "log", "rand 0.8.5", "sha1", - "thiserror 2.0.11", + "thiserror 1.0.69", "utf-8", ] @@ -4760,18 +4757,18 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744018581f9a3454a9e15beb8a33b017183f1e7c0cd170232a2d1453b23a51c4" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" dependencies = [ "getrandom 0.2.15", ] [[package]] name = "uzers" -version = "0.11.3" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d283dc7e8c901e79e32d077866eaf599156cbf427fffa8289aecc52c5c3f63" +checksum = "4df81ff504e7d82ad53e95ed1ad5b72103c11253f39238bcc0235b90768a97dd" dependencies = [ "libc", "log", @@ -5138,6 +5135,16 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + [[package]] name = "windows-bindgen" version = "0.39.0" @@ -5622,12 +5629,6 @@ dependencies = [ "rustix", ] -[[package]] -name = "xmlparser" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" - [[package]] name = "xz2" version = "0.1.7" diff --git a/Cargo.toml b/Cargo.toml index 16574bb..c4ec2b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ members = [ ] [workspace.package] -rust-version = "1.70" +rust-version = "1.71.1" version = "2.3.10" authors = ["Kevin Yue "] homepage = "https://github.com/yuezk/GlobalProtect-openconnect" @@ -19,34 +19,34 @@ license = "GPL-3.0" [workspace.dependencies] anyhow = "1.0" -base64 = "0.21" -clap = { version = "4.4.2", features = ["derive"] } +base64 = "0.22" +clap = { version = "~4.4.2", features = ["derive"] } ctrlc = "3.4" directories = "5.0" dns-lookup = "2.0.4" -env_logger = "0.10" +env_logger = "0.11" is_executable = "1.0" log = "0.4" regex = "1" reqwest = { version = "0.11", features = ["native-tls-vendored", "json"] } openssl = "0.10" pem = "3" -roxmltree = "0.18" +roxmltree = "0.20" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -sysinfo = "0.29" +sysinfo = "0.30" tempfile = "3.8" tokio = { version = "1" } tokio-util = "0.7" url = "2.4" urlencoding = "2.1.3" -axum = "0.8" +axum = "0.7" futures = "0.3" futures-util = "0.3" -tokio-tungstenite = "0.20.1" -uzers = "0.11" +tokio-tungstenite = "0.26.1" +uzers = "0.12" whoami = "1" -thiserror = "1" +thiserror = "2" redact-engine = "0.1" compile-time = "0.2" serde_urlencoded = "0.7" @@ -55,7 +55,7 @@ sha256 = "1" which = "7" # Tauri dependencies -tauri = { version = "1.5" } +tauri = { version = "1" } specta = "=2.0.0-rc.1" specta-macros = "=2.0.0-rc.1" rspc = { version = "1.0.0-rc.5", features = ["tauri"] } diff --git a/apps/gpclient/src/disconnect.rs b/apps/gpclient/src/disconnect.rs index ebdab3e..a0c6d66 100644 --- a/apps/gpclient/src/disconnect.rs +++ b/apps/gpclient/src/disconnect.rs @@ -3,7 +3,7 @@ use clap::Args; use gpapi::utils::lock_file::gpservice_lock_info; use log::{info, warn}; use std::{fs, str::FromStr, thread, time::Duration}; -use sysinfo::{Pid, ProcessExt, Signal, System, SystemExt}; +use sysinfo::{Pid, Signal, System}; #[derive(Args)] pub struct DisconnectArgs { diff --git a/apps/gpservice/src/cli.rs b/apps/gpservice/src/cli.rs index e392958..47561ce 100644 --- a/apps/gpservice/src/cli.rs +++ b/apps/gpservice/src/cli.rs @@ -145,7 +145,7 @@ mod signals { const DISCONNECTED_PID_FILE: &str = "/tmp/gpservice_disconnected.pid"; - pub async fn handle_signals(vpn_ctx: Arc, ws_ctx: Arc) { + pub(crate) async fn handle_signals(vpn_ctx: Arc, ws_ctx: Arc) { use gpapi::service::event::WsEvent; use tokio::signal::unix::{signal, Signal, SignalKind}; diff --git a/apps/gpservice/src/handlers.rs b/apps/gpservice/src/handlers.rs index 18b70f0..7a7c21c 100644 --- a/apps/gpservice/src/handlers.rs +++ b/apps/gpservice/src/handlers.rs @@ -1,4 +1,5 @@ use std::{ + borrow::Cow, fs::{File, Permissions}, io::BufReader, ops::ControlFlow, @@ -11,7 +12,7 @@ use anyhow::bail; use axum::{ body::Bytes, extract::{ - ws::{self, CloseFrame, Message, Utf8Bytes, WebSocket}, + ws::{self, CloseFrame, Message, WebSocket}, State, WebSocketUpgrade, }, http::StatusCode, @@ -42,7 +43,7 @@ pub(crate) async fn auth_data(State(ctx): State>, body: Str ctx.send_event(WsEvent::AuthData(body)).await; } -pub async fn update_gui(State(ctx): State>, body: Bytes) -> Result<(), StatusCode> { +pub(crate) async fn update_gui(State(ctx): State>, body: Bytes) -> Result<(), StatusCode> { let payload = match ctx.decrypt::(body.to_vec()) { Ok(payload) => payload, Err(err) => { @@ -136,7 +137,7 @@ async fn handle_socket(mut socket: WebSocket, ctx: Arc) { let close_msg = Message::Close(Some(CloseFrame { code: ws::close_code::NORMAL, - reason: Utf8Bytes::from("Goodbye"), + reason: Cow::from("Goodbye"), })); if let Err(err) = sender.send(close_msg).await { diff --git a/apps/gpservice/src/ws_connection.rs b/apps/gpservice/src/ws_connection.rs index e5b3c85..13c7f6c 100644 --- a/apps/gpservice/src/ws_connection.rs +++ b/apps/gpservice/src/ws_connection.rs @@ -20,7 +20,7 @@ impl WsConnection { pub async fn send_event(&self, event: &WsEvent) -> anyhow::Result<()> { let encrypted = self.crypto.encrypt(event)?; - let msg = Message::Binary(encrypted.into()); + let msg = Message::Binary(encrypted); self.tx.send(msg).await?; @@ -29,7 +29,7 @@ impl WsConnection { pub fn recv_msg(&self, msg: Message) -> ControlFlow<(), WsRequest> { match msg { - Message::Binary(data) => match self.crypto.decrypt(data.into()) { + Message::Binary(data) => match self.crypto.decrypt(data) { Ok(ws_req) => ControlFlow::Continue(ws_req), Err(err) => { info!("Failed to decrypt message: {}", err); diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..e6d1df7 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "1.71.1"