diff --git a/Cargo.lock b/Cargo.lock index f7dea1a..5373abc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -41,20 +41,11 @@ dependencies = [ "libc", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -67,33 +58,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.8" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", @@ -108,9 +99,9 @@ checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -130,37 +121,17 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "autotools" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" -dependencies = [ - "cc", -] +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.13.1" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7" +checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" dependencies = [ "aws-lc-sys", "zeroize", @@ -168,9 +139,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" +checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" dependencies = [ "bindgen 0.69.5", "cc", @@ -202,32 +173,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.7.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" - -[[package]] -name = "bindgen" -version = "0.59.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" -dependencies = [ - "bitflags 1.3.2", - "cexpr", - "clang-sys", - "clap 2.34.0", - "env_logger 0.9.3", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "which", -] +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bindgen" @@ -235,7 +183,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.9.1", + "bitflags", "cexpr", "clang-sys", "itertools 0.12.1", @@ -248,17 +196,17 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.101", + "syn 2.0.104", "which", ] [[package]] name = "bindgen" -version = "0.71.1" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +checksum = "4f72209734318d0b619a5e0f5129918b848c416e122a3c4ce054e03cb87b726f" dependencies = [ - "bitflags 2.9.1", + "bitflags", "cexpr", "clang-sys", "itertools 0.13.0", @@ -269,15 +217,9 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "shlex", - "syn 2.0.101", + "syn 2.0.104", ] -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.9.1" @@ -295,9 +237,9 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ "async-channel", "async-task", @@ -308,9 +250,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -366,28 +308,28 @@ dependencies = [ [[package]] name = "cbindgen" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff" +checksum = "975982cdb7ad6a142be15bdf84aea7ec6a9e5d4d797c004d43185b24cfe4e684" dependencies = [ - "clap 4.5.39", - "heck 0.4.1", + "clap", + "heck", "indexmap", "log", "proc-macro2", "quote", "serde", "serde_json", - "syn 2.0.101", + "syn 2.0.104", "tempfile", "toml", ] [[package]] name = "cc" -version = "1.2.25" +version = "1.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" +checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" dependencies = [ "jobserver", "libc", @@ -405,9 +347,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -442,24 +384,9 @@ dependencies = [ [[package]] name = "clap" -version = "2.34.0" +version = "4.5.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "ansi_term", - "atty", - "bitflags 1.3.2", - "strsim 0.8.0", - "textwrap", - "unicode-width", - "vec_map", -] - -[[package]] -name = "clap" -version = "4.5.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" +checksum = "ed87a9d530bb41a67537289bafcac159cb3ee28460e0a4571123d2a778a6a882" dependencies = [ "clap_builder", "clap_derive", @@ -467,33 +394,33 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.39" +version = "4.5.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" +checksum = "64f4f3f3c77c94aff3c7e9aac9a2ca1974a5adf392a8bb751e827d6d127ab966" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.1", + "strsim", ] [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "cmake" @@ -506,9 +433,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "concurrent-queue" @@ -542,9 +469,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -586,7 +513,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -617,7 +544,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -651,19 +578,6 @@ dependencies = [ "regex", ] -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - [[package]] name = "env_logger" version = "0.11.8" @@ -685,12 +599,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -728,9 +642,9 @@ checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe" [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -835,7 +749,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -884,7 +798,18 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ba121d81ab5ea05b0cd5858516266800bf965531a794f7ac58e3eeb804f364f" dependencies = [ - "bitflags 2.9.1", + "bitflags", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "getifaddrs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c016cebf305060d144de015c98191ede05c210af588857bc2d4f8611c04663" +dependencies = [ + "bitflags", "libc", "windows-sys 0.59.0", ] @@ -898,7 +823,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -930,15 +855,9 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" [[package]] name = "heck" @@ -946,15 +865,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "home" version = "0.5.11" @@ -1004,12 +914,6 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" -[[package]] -name = "humantime" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" - [[package]] name = "hyper" version = "1.6.0" @@ -1031,9 +935,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.6" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http", "hyper", @@ -1043,14 +947,14 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.0", + "webpki-roots 1.0.2", ] [[package]] name = "hyper-util" -version = "0.1.13" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ "base64", "bytes", @@ -1064,7 +968,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.0", "tokio", "tower-service", "tracing", @@ -1188,7 +1092,7 @@ dependencies = [ "byteorder", "bytes", "chrono", - "env_logger 0.11.8", + "env_logger", "futures", "indexmap", "json", @@ -1196,7 +1100,7 @@ dependencies = [ "ns-keyed-archive", "obfstr", "plist", - "rand 0.9.1", + "rand 0.9.2", "reqwest", "rsa", "rustls", @@ -1206,7 +1110,7 @@ dependencies = [ "thiserror 2.0.12", "tokio", "tokio-rustls", - "tun-rs 2.1.4", + "tun-rs 2.5.3", "uuid", "x509-cert", ] @@ -1221,7 +1125,7 @@ dependencies = [ "log", "once_cell", "plist", - "plist_plus", + "plist_ffi", "simplelog", "tokio", ] @@ -1230,8 +1134,8 @@ dependencies = [ name = "idevice-tools" version = "0.1.0" dependencies = [ - "clap 4.5.39", - "env_logger 0.11.8", + "clap", + "env_logger", "idevice", "log", "ns-keyed-archive", @@ -1266,15 +1170,26 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", "hashbrown", "serde", ] +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -1323,9 +1238,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a194df1107f33c79f4f93d02c80798520551949d59dfad22b6157048a88cca93" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" dependencies = [ "jiff-static", "log", @@ -1336,13 +1251,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -1388,9 +1303,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.172" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libloading" @@ -1399,7 +1314,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.0", + "windows-targets 0.53.3", ] [[package]] @@ -1460,9 +1375,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memoffset" @@ -1473,12 +1388,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -1487,9 +1396,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] @@ -1501,7 +1410,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.59.0", ] @@ -1527,12 +1436,12 @@ dependencies = [ [[package]] name = "netlink-packet-route" -version = "0.22.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0e7987b28514adf555dc1f9a5c30dfc3e50750bbaffb1aec41ca7b23dcd8e4" +checksum = "56d83370a96813d7c977f8b63054f1162df6e5784f1c598d689236564fb5a6f2" dependencies = [ "anyhow", - "bitflags 2.9.1", + "bitflags", "byteorder", "libc", "log", @@ -1569,7 +1478,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.1", + "bitflags", "cfg-if", "cfg_aliases", "libc", @@ -1582,7 +1491,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.1", + "bitflags", "cfg-if", "cfg_aliases", "libc", @@ -1614,7 +1523,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f237a10fe003123daa55a74b63a0b0a65de1671b2d128711ffe5886891a8f77f" dependencies = [ - "clap 4.5.39", + "clap", "plist", "thiserror 2.0.12", ] @@ -1743,12 +1652,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -1810,9 +1713,9 @@ dependencies = [ [[package]] name = "plist" -version = "1.7.1" +version = "1.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d" +checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" dependencies = [ "base64", "indexmap", @@ -1822,24 +1725,23 @@ dependencies = [ ] [[package]] -name = "plist_plus" -version = "0.2.6" +name = "plist_ffi" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167429a361cacecf5cab907c235e620b3faf5f36b97d7f72c32907ccdca700cf" +checksum = "06fba796e1466c87b971298751de238bb441f6a2a5b4b03b874880225550e4b3" dependencies = [ - "autotools", - "bindgen 0.59.2", + "cbindgen", "cc", "libc", - "log", - "rand 0.8.5", + "plist", + "serde_json", ] [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portable-atomic-util" @@ -1876,12 +1778,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.33" +version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" +checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" dependencies = [ "proc-macro2", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -1895,9 +1797,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.32.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b" dependencies = [ "memchr", ] @@ -1915,7 +1817,7 @@ dependencies = [ "quinn-udp", "rustc-hash 2.1.1", "rustls", - "socket2", + "socket2 0.5.10", "thiserror 2.0.12", "tokio", "tracing", @@ -1931,7 +1833,7 @@ dependencies = [ "bytes", "getrandom 0.3.3", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring", "rustc-hash 2.1.1", "rustls", @@ -1945,14 +1847,14 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.5.10", "tracing", "windows-sys 0.59.0", ] @@ -1968,9 +1870,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" @@ -1978,16 +1880,15 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "libc", "rand_chacha 0.3.1", "rand_core 0.6.4", ] [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -2033,11 +1934,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.1", + "bitflags", ] [[package]] @@ -2071,9 +1972,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.19" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "base64", "bytes", @@ -2084,11 +1985,8 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", @@ -2107,7 +2005,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 1.0.0", + "webpki-roots 1.0.2", ] [[package]] @@ -2126,17 +2024,17 @@ dependencies = [ [[package]] name = "route_manager" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f6f4d3aee0d83fd4da6dc58abc2ae1765504e4b8e70d32f5876376c6c8f3f4c" +checksum = "0f3a4eae9e0cc97729d29d7d0936dd30170c80625cca122a56856fd23d619159" dependencies = [ - "bindgen 0.71.1", + "bindgen 0.72.0", "flume", "libc", "netlink-packet-core", "netlink-packet-route", "netlink-sys", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -2162,9 +2060,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -2184,7 +2082,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags", "errno", "libc", "linux-raw-sys 0.4.15", @@ -2193,22 +2091,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.1", + "bitflags", "errno", "libc", "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.27" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "aws-lc-rs", "log", @@ -2241,9 +2139,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "aws-lc-rs", "ring", @@ -2286,14 +2184,14 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.141" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" dependencies = [ "itoa", "memchr", @@ -2303,9 +2201,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -2382,18 +2280,15 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" @@ -2405,6 +2300,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spin" version = "0.9.8" @@ -2430,12 +2335,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - [[package]] name = "strsim" version = "0.11.1" @@ -2461,9 +2360,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -2487,7 +2386,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -2499,7 +2398,7 @@ dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix 1.0.7", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -2512,15 +2411,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -2547,7 +2437,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -2558,7 +2448,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -2637,25 +2527,27 @@ checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "tokio" -version = "1.45.1" +version = "1.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2666,7 +2558,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -2681,9 +2573,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", @@ -2693,18 +2585,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "serde", @@ -2716,9 +2608,9 @@ dependencies = [ [[package]] name = "toml_write" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" @@ -2737,11 +2629,11 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc2d9e086a412a451384326f521c8123a99a466b329941a9403696bff9b0da2" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.1", + "bitflags", "bytes", "futures-util", "http", @@ -2777,9 +2669,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", ] @@ -2796,14 +2688,14 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53141e64197ff7e758b8152615e50bb4a3b18c970738876e7906d31f242c7d6e" dependencies = [ - "bitflags 2.9.1", + "bitflags", "blocking", "byteorder", "bytes", "c2rust-bitfields 0.19.0", "cfg-if", "encoding_rs", - "getifaddrs", + "getifaddrs 0.1.5", "ipnet", "libc", "libloading", @@ -2820,17 +2712,17 @@ dependencies = [ [[package]] name = "tun-rs" -version = "2.1.4" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89aa659131eb386e5bfe7443d97e2dfb0e0ccef611f2de14fc73549e6db60a7a" +checksum = "36e061d3f14bea7007179e5912e20a6bf4857ab9f3676b2ed55dafccba38410f" dependencies = [ - "bindgen 0.71.1", + "bindgen 0.72.0", "blocking", "byteorder", "bytes", "c2rust-bitfields 0.20.0", "encoding_rs", - "getifaddrs", + "getifaddrs 0.2.0", "ipnet", "libc", "libloading", @@ -2841,7 +2733,7 @@ dependencies = [ "scopeguard", "tokio", "widestring", - "windows-sys 0.59.0", + "windows-sys 0.60.2", "winreg 0.55.0", ] @@ -2857,12 +2749,6 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - [[package]] name = "untrusted" version = "0.9.0" @@ -2871,9 +2757,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.0.11" +version = "3.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a3e9af6113ecd57b8c63d3cd76a385b2e3881365f1f489e54f49801d0c83ea" +checksum = "9f0fde9bc91026e381155f8c67cb354bcd35260b2f4a29bcc84639f762760c39" dependencies = [ "base64", "flate2", @@ -2889,9 +2775,9 @@ dependencies = [ [[package]] name = "ureq-proto" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadf18427d33828c311234884b7ba2afb57143e6e7e69fda7ee883b624661e36" +checksum = "59db78ad1923f2b1be62b6da81fe80b173605ca0d57f85da2e005382adf693f7" dependencies = [ "base64", "http", @@ -2940,12 +2826,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version_check" version = "0.9.5" @@ -2963,9 +2843,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -2998,7 +2878,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -3033,7 +2913,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3073,14 +2953,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.0", + "webpki-roots 1.0.2", ] [[package]] name = "webpki-roots" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] @@ -3155,7 +3035,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3166,14 +3046,14 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-result" @@ -3220,6 +3100,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -3253,10 +3142,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ + "windows-link", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -3407,9 +3297,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] @@ -3436,15 +3326,15 @@ dependencies = [ [[package]] name = "wintun-bindings" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605f50b13e12e1f9f99dc5e93701d779dbe47282fec186cb8a079165368d3124" +checksum = "b88303b411e20a1319b368dcd04db1480003ed46ac35193e139f542720b15fbf" dependencies = [ - "c2rust-bitfields 0.19.0", + "c2rust-bitfields 0.20.0", "libloading", "log", "thiserror 2.0.12", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -3453,7 +3343,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.1", + "bitflags", ] [[package]] @@ -3496,28 +3386,28 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3537,7 +3427,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure", ] @@ -3558,7 +3448,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3591,5 +3481,5 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] diff --git a/ffi/Cargo.toml b/ffi/Cargo.toml index a17fde6..04878d8 100644 --- a/ffi/Cargo.toml +++ b/ffi/Cargo.toml @@ -12,7 +12,7 @@ once_cell = "1.21.1" tokio = { version = "1.44.1", features = ["full"] } libc = "0.2.171" plist = "1.7.1" -plist_plus = { version = "0.2.6", features = ["dynamic"] } +plist_ffi = "0.1.3" [features] afc = ["idevice/afc"] @@ -67,7 +67,7 @@ full = [ default = ["full"] [build-dependencies] -cbindgen = "0.28.0" +cbindgen = "0.29.0" [lib] crate-type = ["staticlib"] diff --git a/ffi/examples/CMakeLists.txt b/ffi/examples/CMakeLists.txt index 3849009..d68866f 100644 --- a/ffi/examples/CMakeLists.txt +++ b/ffi/examples/CMakeLists.txt @@ -32,31 +32,6 @@ foreach(EXAMPLE_FILE ${EXAMPLE_SOURCES}) target_link_libraries(${EXAMPLE_NAME} PRIVATE m) endif() - - # libplist - - if( APPLE ) - # use static linking - find_library( LIBPLIST libplist-2.0.a REQUIRED ) - message( STATUS "(Static linking) LIBPLIST " ${LIBPLIST} ) - target_link_libraries ( ${EXAMPLE_NAME} PRIVATE ${LIBPLIST} ) - elseif( WIN32) - pkg_search_module(PLIST REQUIRED libplist-2.0) - find_library( LIBPLIST ${PLIST_LIBRARIES} PATH ${PLIST_LIBDIR} ) - target_link_libraries ( ${EXAMPLE_NAME} PRIVATE ${LIBPLIST} ) - else () - pkg_search_module(PLIST libplist>=2.0) - if(NOT PLIST_FOUND) - pkg_search_module(PLIST REQUIRED libplist-2.0) - endif() - find_library( LIBPLIST ${PLIST_LIBRARIES} PATH ${PLIST_LIBDIR} ) - target_link_libraries ( ${EXAMPLE_NAME} PUBLIC ${LIBPLIST} ) - endif() - if ( PLIST_FOUND ) - message( STATUS "found libplist-${PLIST_VERSION}" ) - endif() - target_include_directories( ${EXAMPLE_NAME} PRIVATE ${PLIST_INCLUDE_DIRS} ) - # Bulk-link common macOS system frameworks if(APPLE) target_link_libraries(${EXAMPLE_NAME} PRIVATE diff --git a/ffi/src/adapter.rs b/ffi/src/adapter.rs index f960cc1..553162a 100644 --- a/ffi/src/adapter.rs +++ b/ffi/src/adapter.rs @@ -46,7 +46,7 @@ pub unsafe extern "C" fn adapter_connect( null_mut() } Err(e) => { - log::error!("Adapter connect failed: {}", e); + log::error!("Adapter connect failed: {e}"); ffi_err!(e) } } @@ -85,7 +85,7 @@ pub unsafe extern "C" fn adapter_pcap( match res { Ok(_) => null_mut(), Err(e) => { - log::error!("Adapter pcap failed: {}", e); + log::error!("Adapter pcap failed: {e}"); ffi_err!(e) } } @@ -113,7 +113,7 @@ pub unsafe extern "C" fn adapter_close(handle: *mut AdapterStreamHandle) -> *mut match res { Ok(_) => null_mut(), Err(e) => { - log::error!("Adapter close failed: {}", e); + log::error!("Adapter close failed: {e}"); ffi_err!(e) } } @@ -150,7 +150,7 @@ pub unsafe extern "C" fn adapter_send( match res { Ok(_) => null_mut(), Err(e) => { - log::error!("Adapter send failed: {}", e); + log::error!("Adapter send failed: {e}"); ffi_err!(e) } } @@ -200,7 +200,7 @@ pub unsafe extern "C" fn adapter_recv( null_mut() } Err(e) => { - log::error!("Adapter recv failed: {}", e); + log::error!("Adapter recv failed: {e}"); ffi_err!(e) } } diff --git a/ffi/src/installation_proxy.rs b/ffi/src/installation_proxy.rs index e3c4c65..6bdca82 100644 --- a/ffi/src/installation_proxy.rs +++ b/ffi/src/installation_proxy.rs @@ -6,10 +6,9 @@ use idevice::{ IdeviceError, IdeviceService, installation_proxy::InstallationProxyClient, provider::IdeviceProvider, }; +use plist_ffi::{PlistWrapper, plist_t}; -use crate::{ - IdeviceFfiError, IdeviceHandle, RUNTIME, ffi_err, provider::IdeviceProviderHandle, util, -}; +use crate::{IdeviceFfiError, IdeviceHandle, RUNTIME, ffi_err, provider::IdeviceProviderHandle}; pub struct InstallationProxyClientHandle(pub InstallationProxyClient); @@ -132,10 +131,10 @@ pub unsafe extern "C" fn installation_proxy_get_apps( ) }; - let res: Result, IdeviceError> = RUNTIME.block_on(async { + let res: Result, IdeviceError> = RUNTIME.block_on(async { client.0.get_apps(app_type, bundle_ids).await.map(|apps| { apps.into_values() - .map(|v| util::plist_to_libplist(&v)) + .map(|v| PlistWrapper::new_node(v).into_ptr()) .collect() }) }); @@ -192,7 +191,7 @@ pub unsafe extern "C" fn installation_proxy_client_free( pub unsafe extern "C" fn installation_proxy_install( client: *mut InstallationProxyClientHandle, package_path: *const libc::c_char, - options: *mut c_void, + options: plist_t, ) -> *mut IdeviceFfiError { if client.is_null() || package_path.is_null() { return ffi_err!(IdeviceError::FfiInvalidArg); @@ -204,8 +203,9 @@ pub unsafe extern "C" fn installation_proxy_install( let options = if options.is_null() { None } else { - Some(util::libplist_to_plist(options)) - }; + Some(unsafe { &mut *options }) + } + .map(|x| x.borrow_self().clone()); let res = RUNTIME.block_on(async { unsafe { &mut *client } @@ -240,7 +240,7 @@ pub unsafe extern "C" fn installation_proxy_install( pub unsafe extern "C" fn installation_proxy_install_with_callback( client: *mut InstallationProxyClientHandle, package_path: *const libc::c_char, - options: *mut c_void, + options: plist_t, callback: extern "C" fn(progress: u64, context: *mut c_void), context: *mut c_void, ) -> *mut IdeviceFfiError { @@ -254,8 +254,9 @@ pub unsafe extern "C" fn installation_proxy_install_with_callback( let options = if options.is_null() { None } else { - Some(util::libplist_to_plist(options)) - }; + Some(unsafe { &mut *options }) + } + .map(|x| x.borrow_self().clone()); let res = RUNTIME.block_on(async { let callback_wrapper = |(progress, context)| async move { @@ -292,7 +293,7 @@ pub unsafe extern "C" fn installation_proxy_install_with_callback( pub unsafe extern "C" fn installation_proxy_upgrade( client: *mut InstallationProxyClientHandle, package_path: *const libc::c_char, - options: *mut c_void, + options: plist_t, ) -> *mut IdeviceFfiError { if client.is_null() || package_path.is_null() { return ffi_err!(IdeviceError::FfiInvalidArg); @@ -304,8 +305,9 @@ pub unsafe extern "C" fn installation_proxy_upgrade( let options = if options.is_null() { None } else { - Some(util::libplist_to_plist(options)) - }; + Some(unsafe { &mut *options }) + } + .map(|x| x.borrow_self().clone()); let res = RUNTIME.block_on(async { unsafe { &mut *client } @@ -340,7 +342,7 @@ pub unsafe extern "C" fn installation_proxy_upgrade( pub unsafe extern "C" fn installation_proxy_upgrade_with_callback( client: *mut InstallationProxyClientHandle, package_path: *const libc::c_char, - options: *mut c_void, + options: plist_t, callback: extern "C" fn(progress: u64, context: *mut c_void), context: *mut c_void, ) -> *mut IdeviceFfiError { @@ -354,8 +356,9 @@ pub unsafe extern "C" fn installation_proxy_upgrade_with_callback( let options = if options.is_null() { None } else { - Some(util::libplist_to_plist(options)) - }; + Some(unsafe { &mut *options }) + } + .map(|x| x.borrow_self().clone()); let res = RUNTIME.block_on(async { let callback_wrapper = |(progress, context)| async move { @@ -392,7 +395,7 @@ pub unsafe extern "C" fn installation_proxy_upgrade_with_callback( pub unsafe extern "C" fn installation_proxy_uninstall( client: *mut InstallationProxyClientHandle, bundle_id: *const libc::c_char, - options: *mut c_void, + options: plist_t, ) -> *mut IdeviceFfiError { if client.is_null() || bundle_id.is_null() { return ffi_err!(IdeviceError::FfiInvalidArg); @@ -404,8 +407,9 @@ pub unsafe extern "C" fn installation_proxy_uninstall( let options = if options.is_null() { None } else { - Some(util::libplist_to_plist(options)) - }; + Some(unsafe { &mut *options }) + } + .map(|x| x.borrow_self().clone()); let res = RUNTIME.block_on(async { unsafe { &mut *client } @@ -440,7 +444,7 @@ pub unsafe extern "C" fn installation_proxy_uninstall( pub unsafe extern "C" fn installation_proxy_uninstall_with_callback( client: *mut InstallationProxyClientHandle, bundle_id: *const libc::c_char, - options: *mut c_void, + options: plist_t, callback: extern "C" fn(progress: u64, context: *mut c_void), context: *mut c_void, ) -> *mut IdeviceFfiError { @@ -454,8 +458,9 @@ pub unsafe extern "C" fn installation_proxy_uninstall_with_callback( let options = if options.is_null() { None } else { - Some(util::libplist_to_plist(options)) - }; + Some(unsafe { &mut *options }) + } + .map(|x| x.borrow_self().clone()); let res = RUNTIME.block_on(async { let callback_wrapper = |(progress, context)| async move { @@ -494,9 +499,9 @@ pub unsafe extern "C" fn installation_proxy_uninstall_with_callback( #[unsafe(no_mangle)] pub unsafe extern "C" fn installation_proxy_check_capabilities_match( client: *mut InstallationProxyClientHandle, - capabilities: *const *mut c_void, + capabilities: *const plist_t, capabilities_len: libc::size_t, - options: *mut c_void, + options: plist_t, out_result: *mut bool, ) -> *mut IdeviceFfiError { if client.is_null() || out_result.is_null() { @@ -508,15 +513,16 @@ pub unsafe extern "C" fn installation_proxy_check_capabilities_match( } else { unsafe { std::slice::from_raw_parts(capabilities, capabilities_len) } .iter() - .map(|&ptr| util::libplist_to_plist(ptr)) + .map(|ptr| unsafe { &mut **ptr }.borrow_self().clone()) .collect() }; let options = if options.is_null() { None } else { - Some(util::libplist_to_plist(options)) - }; + Some(unsafe { &mut *options }) + } + .map(|x| x.borrow_self().clone()); let res = RUNTIME.block_on(async { unsafe { &mut *client } @@ -553,8 +559,8 @@ pub unsafe extern "C" fn installation_proxy_check_capabilities_match( #[unsafe(no_mangle)] pub unsafe extern "C" fn installation_proxy_browse( client: *mut InstallationProxyClientHandle, - options: *mut c_void, - out_result: *mut *mut c_void, + options: plist_t, + out_result: *mut *mut plist_t, out_result_len: *mut libc::size_t, ) -> *mut IdeviceFfiError { if client.is_null() || out_result.is_null() || out_result_len.is_null() { @@ -564,25 +570,27 @@ pub unsafe extern "C" fn installation_proxy_browse( let options = if options.is_null() { None } else { - Some(util::libplist_to_plist(options)) - }; + Some(unsafe { &mut *options }) + } + .map(|x| x.borrow_self().clone()); - let res: Result, IdeviceError> = RUNTIME.block_on(async { + let res: Result, IdeviceError> = RUNTIME.block_on(async { unsafe { &mut *client }.0.browse(options).await.map(|apps| { apps.into_iter() - .map(|v| util::plist_to_libplist(&v)) + .map(|v| PlistWrapper::new_node(v).into_ptr()) .collect() }) }); match res { - Ok(mut r) => { + Ok(r) => { + let mut r = r.into_boxed_slice(); let ptr = r.as_mut_ptr(); let len = r.len(); std::mem::forget(r); unsafe { - *out_result = ptr as *mut c_void; + *out_result = ptr; *out_result_len = len; } null_mut() diff --git a/ffi/src/lockdown.rs b/ffi/src/lockdown.rs index 02c2cd1..b6470e6 100644 --- a/ffi/src/lockdown.rs +++ b/ffi/src/lockdown.rs @@ -1,8 +1,9 @@ // Jackson Coxson -use std::{ffi::c_void, ptr::null_mut}; +use std::ptr::null_mut; use idevice::{IdeviceError, IdeviceService, lockdown::LockdownClient, provider::IdeviceProvider}; +use plist_ffi::{PlistWrapper, plist_t}; use crate::{ IdeviceFfiError, IdeviceHandle, IdevicePairingFile, RUNTIME, ffi_err, @@ -176,7 +177,7 @@ pub unsafe extern "C" fn lockdownd_get_value( client: *mut LockdowndClientHandle, key: *const libc::c_char, domain: *const libc::c_char, - out_plist: *mut *mut c_void, + out_plist: *mut plist_t, ) -> *mut IdeviceFfiError { if key.is_null() || out_plist.is_null() { return ffi_err!(IdeviceError::FfiInvalidArg); @@ -204,7 +205,7 @@ pub unsafe extern "C" fn lockdownd_get_value( match res { Ok(value) => { unsafe { - *out_plist = crate::util::plist_to_libplist(&value); + *out_plist = plist_ffi::PlistWrapper::new_node(value).into_ptr(); } null_mut() } @@ -228,7 +229,7 @@ pub unsafe extern "C" fn lockdownd_get_value( pub unsafe extern "C" fn lockdownd_get_all_values( client: *mut LockdowndClientHandle, domain: *const libc::c_char, - out_plist: *mut *mut c_void, + out_plist: *mut plist_t, ) -> *mut IdeviceFfiError { if out_plist.is_null() { return ffi_err!(IdeviceError::FfiInvalidArg); @@ -252,7 +253,7 @@ pub unsafe extern "C" fn lockdownd_get_all_values( match res { Ok(dict) => { unsafe { - *out_plist = crate::util::plist_to_libplist(&plist::Value::Dictionary(dict)); + *out_plist = PlistWrapper::new_node(plist::Value::Dictionary(dict)).into_ptr(); } null_mut() } diff --git a/ffi/src/mobile_image_mounter.rs b/ffi/src/mobile_image_mounter.rs index 9a4c797..31ea76e 100644 --- a/ffi/src/mobile_image_mounter.rs +++ b/ffi/src/mobile_image_mounter.rs @@ -6,10 +6,9 @@ use idevice::{ IdeviceError, IdeviceService, mobile_image_mounter::ImageMounter, provider::IdeviceProvider, }; use plist::Value; +use plist_ffi::{PlistWrapper, plist_t}; -use crate::{ - IdeviceFfiError, IdeviceHandle, RUNTIME, ffi_err, provider::IdeviceProviderHandle, util, -}; +use crate::{IdeviceFfiError, IdeviceHandle, RUNTIME, ffi_err, provider::IdeviceProviderHandle}; pub struct ImageMounterHandle(pub ImageMounter); @@ -112,7 +111,7 @@ pub unsafe extern "C" fn image_mounter_free(handle: *mut ImageMounterHandle) { #[unsafe(no_mangle)] pub unsafe extern "C" fn image_mounter_copy_devices( client: *mut ImageMounterHandle, - devices: *mut *mut c_void, + devices: *mut *mut plist_t, devices_len: *mut libc::size_t, ) -> *mut IdeviceFfiError { let res: Result, IdeviceError> = RUNTIME.block_on(async move { @@ -124,14 +123,14 @@ pub unsafe extern "C" fn image_mounter_copy_devices( Ok(devices_list) => { let devices_list = devices_list .into_iter() - .map(|x| util::plist_to_libplist(&x)) - .collect::>(); + .map(|x| plist_ffi::PlistWrapper::new_node(x).into_ptr()) + .collect::>(); let len = devices_list.len(); let boxed_slice = devices_list.into_boxed_slice(); let ptr = Box::leak(boxed_slice).as_mut_ptr(); unsafe { - *devices = ptr as *mut c_void; + *devices = ptr as *mut plist_t; *devices_len = len; } null_mut() @@ -558,7 +557,7 @@ pub unsafe extern "C" fn image_mounter_query_nonce( pub unsafe extern "C" fn image_mounter_query_personalization_identifiers( client: *mut ImageMounterHandle, image_type: *const libc::c_char, - identifiers: *mut *mut c_void, + identifiers: *mut plist_t, ) -> *mut IdeviceFfiError { if identifiers.is_null() { return ffi_err!(IdeviceError::FfiInvalidArg); @@ -583,7 +582,7 @@ pub unsafe extern "C" fn image_mounter_query_personalization_identifiers( match res { Ok(id) => { - let plist = util::plist_to_libplist(&plist::Value::Dictionary(id)); + let plist = PlistWrapper::new_node(Value::Dictionary(id)).into_ptr(); unsafe { *identifiers = plist }; null_mut() } diff --git a/ffi/src/util.rs b/ffi/src/util.rs index 989cf77..5bada5c 100644 --- a/ffi/src/util.rs +++ b/ffi/src/util.rs @@ -3,12 +3,10 @@ use std::{ ffi::c_int, net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}, - os::raw::c_void, }; use idevice::IdeviceError; use libc::{sockaddr_in, sockaddr_in6}; -use plist::Value; pub(crate) fn c_socket_to_rust( addr: *const libc::sockaddr, @@ -76,23 +74,3 @@ pub(crate) fn c_addr_to_rust(addr: *const libc::sockaddr) -> Result *mut libc::c_void { - let buf = Vec::new(); - let mut writer = std::io::BufWriter::new(buf); - plist::to_writer_xml(&mut writer, v).unwrap(); - let buf = String::from_utf8(writer.into_inner().unwrap()).unwrap(); - let p = plist_plus::Plist::from_xml(buf).unwrap(); - let ptr = p.get_pointer(); - p.false_drop(); - ptr -} - -pub(crate) fn libplist_to_plist(v: *mut c_void) -> Value { - let v: plist_plus::Plist = v.into(); - let v_string = v.to_string(); - v.false_drop(); - - let reader = std::io::Cursor::new(v_string.as_bytes()); - plist::from_reader(reader).unwrap() -} diff --git a/justfile b/justfile index 701b743..7502428 100644 --- a/justfile +++ b/justfile @@ -66,150 +66,3 @@ apple-build: # requires a Mac cargo build --release --target aarch64-apple-darwin cargo build --release --target x86_64-apple-darwin -lib_name := "plist" -src_dir := "ffi/libplist" - -ios_out := "build/ios" -sim_out := "build/sim" -x86_64_sim_out := "build/x86_64_sim" -mac_out := "build/mac" -x86_64_mac_out := "build/x86_64_mac" - -plist_xcframework: plist_clean build_plist_ios build_plist_sim build_plist_x86_64_sim build_plist_mac build_plist_x86_64_mac plist_merge_archs - rm -rf {{lib_name}}.xcframework - xcodebuild -create-xcframework \ - -framework {{ios_out}}/plist.framework \ - -framework build/universal-sim/plist.framework \ - -framework build/universal-mac/plist.framework \ - -output swift/{{lib_name}}.xcframework - -plist_clean: - rm -rf build - rm -rf swift/plist.xcframework - -plist_merge_archs: - # Merge simulator dylibs (arm64 + x86_64) - mkdir -p build/universal-sim - lipo -create \ - {{sim_out}}/lib/libplist-2.0.4.dylib \ - {{x86_64_sim_out}}/lib/libplist-2.0.4.dylib \ - -output build/universal-sim/libplist-2.0.4.dylib - - mkdir -p build/universal-sim/plist.framework/Headers - mkdir -p build/universal-sim/plist.framework/Modules - cp build/universal-sim/libplist-2.0.4.dylib build/universal-sim/plist.framework/plist - cp {{sim_out}}/include/plist/*.h build/universal-sim/plist.framework/Headers - cp swift/Info.plist build/universal-sim/plist.framework/Info.plist - cp swift/plistinclude/module.modulemap build/universal-sim/plist.framework/Modules/module.modulemap - - # Merge macOS dylibs (arm64 + x86_64) - mkdir -p build/universal-mac - lipo -create \ - {{mac_out}}/lib/libplist-2.0.4.dylib \ - {{x86_64_mac_out}}/lib/libplist-2.0.4.dylib \ - -output build/universal-mac/libplist-2.0.4.dylib - - mkdir -p build/universal-mac/plist.framework/Headers - mkdir -p build/universal-mac/plist.framework/Modules - cp build/universal-mac/libplist-2.0.4.dylib build/universal-mac/plist.framework/plist - cp {{mac_out}}/include/plist/*.h build/universal-mac/plist.framework/Headers - cp swift/Info.plist build/universal-mac/plist.framework/Info.plist - cp swift/plistinclude/module.modulemap build/universal-mac/plist.framework/Modules/module.modulemap - -build_plist_ios: - rm -rf {{ios_out}} build/build-ios - rm -rf build/ios - mkdir -p {{ios_out}} - mkdir -p build/build-ios && cd build/build-ios && \ - ../../ffi/libplist/autogen.sh \ - --host=arm-apple-darwin \ - --prefix="$(pwd)/../../{{ios_out}}" \ - --without-cython \ - --without-tools \ - CC="$(xcrun --sdk iphoneos --find clang)" \ - CFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -mios-version-min=12.0" \ - CXX="$(xcrun --sdk iphoneos --find clang++)" \ - CXXFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -mios-version-min=12.0" \ - LDFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -mios-version-min=12.0" && \ - make clean && make -j$(sysctl -n hw.ncpu) && make install - - install_name_tool -id @rpath/plist.framework/plist {{ios_out}}/lib/libplist-2.0.4.dylib - - mkdir -p {{ios_out}}/plist.framework/Headers - mkdir -p {{ios_out}}/plist.framework/Modules - cp {{ios_out}}/lib/libplist-2.0.4.dylib {{ios_out}}/plist.framework/plist - cp {{ios_out}}/include/plist/*.h {{ios_out}}/plist.framework/Headers - cp swift/Info.plist {{ios_out}}/plist.framework/Info.plist - cp swift/plistinclude/module.modulemap {{ios_out}}/plist.framework/Modules/module.modulemap - -build_plist_sim: - rm -rf {{sim_out}} build/build-sim - mkdir -p {{sim_out}} - mkdir -p build/build-sim && cd build/build-sim && \ - ../../ffi/libplist/autogen.sh \ - --host=arm-apple-darwin \ - --prefix="$(pwd)/../../{{sim_out}}" \ - --without-cython \ - --without-tools \ - CC="$(xcrun --sdk iphonesimulator --find clang)" \ - CFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" \ - CXX="$(xcrun --sdk iphonesimulator --find clang++)" \ - CXXFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" \ - LDFLAGS="-arch arm64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" && \ - make clean && make -j$(sysctl -n hw.ncpu) && make install - - install_name_tool -id @rpath/plist.framework/plist {{sim_out}}/lib/libplist-2.0.4.dylib - -build_plist_x86_64_sim: - rm -rf {{x86_64_sim_out}} build/build-sim - mkdir -p {{x86_64_sim_out}} - mkdir -p build/build-sim && cd build/build-sim && \ - ../../ffi/libplist/autogen.sh \ - --host=x86_64-apple-darwin \ - --prefix="$(pwd)/../../{{x86_64_sim_out}}" \ - --without-cython \ - --without-tools \ - CC="$(xcrun --sdk iphonesimulator --find clang)" \ - CFLAGS="-arch x86_64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" \ - CXX="$(xcrun --sdk iphonesimulator --find clang++)" \ - CXXFLAGS="-arch x86_64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" \ - LDFLAGS="-arch x86_64 -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) -mios-simulator-version-min=12.0" && \ - make clean && make -j$(sysctl -n hw.ncpu) && make install - - install_name_tool -id @rpath/plist.framework/plist {{x86_64_sim_out}}/lib/libplist-2.0.4.dylib - -build_plist_mac: - rm -rf {{mac_out}} build/build-mac - mkdir -p {{mac_out}} - mkdir -p build/build-mac && cd build/build-mac && \ - ../../ffi/libplist/autogen.sh \ - --host=aarch64-apple-darwin \ - --prefix="$(pwd)/../../{{mac_out}}" \ - --without-cython \ - --without-tools \ - CC="$(xcrun --sdk macosx --find clang)" \ - CFLAGS="-arch arm64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" \ - CXX="$(xcrun --sdk macosx --find clang++)" \ - CXXFLAGS="-arch arm64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" \ - LDFLAGS="-arch arm64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" && \ - make clean && make -j$(sysctl -n hw.ncpu) && make install - - install_name_tool -id @rpath/plist.framework/plist {{mac_out}}/lib/libplist-2.0.4.dylib - -build_plist_x86_64_mac: - rm -rf {{x86_64_mac_out}} build/build-mac - mkdir -p {{x86_64_mac_out}} - mkdir -p build/build-mac && cd build/build-mac && \ - ../../ffi/libplist/autogen.sh \ - --host=x86_64-apple-darwin \ - --prefix="$(pwd)/../../{{x86_64_mac_out}}" \ - --without-cython \ - --without-tools \ - CC="$(xcrun --sdk macosx --find clang)" \ - CFLAGS="-arch x86_64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" \ - CXX="$(xcrun --sdk macosx --find clang++)" \ - CXXFLAGS="-arch x86_64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" \ - LDFLAGS="-arch x86_64 -isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=11.0" && \ - make clean && make -j$(sysctl -n hw.ncpu) && make install - - install_name_tool -id @rpath/plist.framework/plist {{x86_64_mac_out}}/lib/libplist-2.0.4.dylib