Move everything into features

This commit is contained in:
Jackson Coxson
2025-01-26 16:01:13 -07:00
parent 312a95b187
commit ffed5aceb6
26 changed files with 1963 additions and 117 deletions

118
Cargo.lock generated
View File

@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
version = 4 version = 3
[[package]] [[package]]
name = "addr2line" name = "addr2line"
@@ -67,11 +67,12 @@ dependencies = [
[[package]] [[package]]
name = "anstyle-wincon" name = "anstyle-wincon"
version = "3.0.6" version = "3.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
dependencies = [ dependencies = [
"anstyle", "anstyle",
"once_cell",
"windows-sys 0.59.0", "windows-sys 0.59.0",
] ]
@@ -95,7 +96,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]
[[package]] [[package]]
@@ -139,9 +140,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.6.0" version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
[[package]] [[package]]
name = "block-buffer" name = "block-buffer"
@@ -199,9 +200,9 @@ dependencies = [
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.2.5" version = "1.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229"
dependencies = [ dependencies = [
"shlex", "shlex",
] ]
@@ -270,9 +271,9 @@ dependencies = [
[[package]] [[package]]
name = "cpufeatures" name = "cpufeatures"
version = "0.2.16" version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
dependencies = [ dependencies = [
"libc", "libc",
] ]
@@ -329,7 +330,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]
[[package]] [[package]]
@@ -650,12 +651,12 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]
[[package]] [[package]]
name = "idevice" name = "idevice"
version = "0.1.8" version = "0.1.10"
dependencies = [ dependencies = [
"async-recursion", "async-recursion",
"base64", "base64",
@@ -668,14 +669,23 @@ dependencies = [
"plist", "plist",
"serde", "serde",
"serde_json", "serde_json",
"sha2",
"thiserror", "thiserror",
"tokio", "tokio",
"tokio-openssl", "tokio-openssl",
"tokio-tun", "uuid",
]
[[package]]
name = "idevice-tools"
version = "0.1.0"
dependencies = [
"env_logger",
"idevice",
"log",
"sha2",
"tokio",
"tun-rs", "tun-rs",
"ureq", "ureq",
"uuid",
] ]
[[package]] [[package]]
@@ -701,9 +711,9 @@ dependencies = [
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "2.7.0" version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
dependencies = [ dependencies = [
"equivalent", "equivalent",
"hashbrown", "hashbrown",
@@ -774,9 +784,9 @@ dependencies = [
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.22" version = "0.4.25"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
[[package]] [[package]]
name = "mac_address" name = "mac_address"
@@ -805,9 +815,9 @@ dependencies = [
[[package]] [[package]]
name = "miniz_oxide" name = "miniz_oxide"
version = "0.8.2" version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924"
dependencies = [ dependencies = [
"adler2", "adler2",
] ]
@@ -871,9 +881,9 @@ checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]] [[package]]
name = "openssl" name = "openssl"
version = "0.10.68" version = "0.10.69"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" checksum = "f5e534d133a060a3c19daec1eb3e98ec6f4685978834f2dbadfe2ec215bab64e"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"cfg-if", "cfg-if",
@@ -892,7 +902,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]
[[package]] [[package]]
@@ -986,9 +996,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.92" version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
@@ -1004,9 +1014,9 @@ dependencies = [
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.37" version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
] ]
@@ -1125,22 +1135,22 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.216" version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.216" version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]
[[package]] [[package]]
@@ -1228,9 +1238,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.91" version = "2.0.96"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035" checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -1245,27 +1255,27 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "2.0.9" version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
dependencies = [ dependencies = [
"thiserror-impl", "thiserror-impl",
] ]
[[package]] [[package]]
name = "thiserror-impl" name = "thiserror-impl"
version = "2.0.9" version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]
[[package]] [[package]]
@@ -1335,7 +1345,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]
[[package]] [[package]]
@@ -1349,18 +1359,6 @@ dependencies = [
"tokio", "tokio",
] ]
[[package]]
name = "tokio-tun"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "790ebe9efc583335345a64abb56a6f36a0258aefc500990bd89cb8a9393975ba"
dependencies = [
"libc",
"nix 0.29.0",
"thiserror",
"tokio",
]
[[package]] [[package]]
name = "tun-rs" name = "tun-rs"
version = "1.5.0" version = "1.5.0"
@@ -1397,9 +1395,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.14" version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" checksum = "11cd88e12b17c6494200a9c1b683a04fcac9573ed74cd1b62aeb2727c5592243"
[[package]] [[package]]
name = "untrusted" name = "untrusted"
@@ -1738,7 +1736,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
"synstructure", "synstructure",
] ]
@@ -1759,7 +1757,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
"synstructure", "synstructure",
] ]
@@ -1788,5 +1786,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.91", "syn 2.0.96",
] ]

View File

@@ -1,58 +1,4 @@
[package] [workspace]
name = "idevice"
description = "A Rust library to interact with services on iOS devices."
authors = ["Jackson Coxson"]
version = "0.1.9"
edition = "2021"
license = "MIT"
documentation = "https://docs.rs/idevice"
repository = "https://github.com/jkcoxson/idevice"
keywords = ["lockdownd", "ios"]
[[bin]] resolver = "2"
name = "ideviceinfo" members = ["idevice", "tools"]
path = "src/tools/ideviceinfo.rs"
required-features = ["bin"]
[[bin]]
name = "heartbeat_client"
path = "src/tools/heartbeat_client.rs"
[[bin]]
name = "instproxy"
path = "src/tools/instproxy.rs"
[[bin]]
name = "mounter"
path = "src/tools/mounter.rs"
required-features = ["sha2", "ureq"]
[[bin]]
name = "core_device_proxy_tun"
path = "src/tools/core_device_proxy_tun.rs"
[dependencies]
tokio = { version = "1.43", features = ["io-util", "macros", "time", "full"] }
tokio-openssl = { version = "0.6" }
plist = { version = "1.7" }
serde = { version = "1", features = ["derive"] }
thiserror = { version = "2" }
log = { version = "0.4" }
env_logger = { version = "0.11" }
openssl = { version = "0.10" }
json = { version = "0.12" }
indexmap = { version = "2.7", features = ["serde"] }
uuid = { version = "1.12", features = ["serde"] }
async-recursion = { version = "1.1" }
base64 = { version = "0.22" }
byteorder = { version = "1.5" }
serde_json = { version = "1" }
tokio-tun = { version = "0.13" }
tun-rs = { version = "1.5", features = ["async"] }
# Binary dependencies
sha2 = { version = "0.10", optional = true }
ureq = { version = "3", optional = true }
[features]
bin = ["tokio/full", "sha2", "ureq"]

View File

@@ -39,6 +39,17 @@ but the API and feature-set are far from final or even planned.
- [ ] usbmuxd connection - [ ] usbmuxd connection
- [ ] Documentation - [ ] Documentation
## Features
To keep dependency bloat and compile time down, everything is contained in features.
- core_device_proxy
- heartbeat
- installation_proxy
- mounter
- xpc
- full
As this project is done in my free time within my busy schedule, there As this project is done in my free time within my busy schedule, there
is no ETA for any of these. Feel free to contribute or donate! is no ETA for any of these. Feel free to contribute or donate!

1792
idevice/Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

53
idevice/Cargo.toml Normal file
View File

@@ -0,0 +1,53 @@
[package]
name = "idevice"
description = "A Rust library to interact with services on iOS devices."
authors = ["Jackson Coxson"]
version = "0.1.10"
edition = "2021"
license = "MIT"
documentation = "https://docs.rs/idevice"
repository = "https://github.com/jkcoxson/idevice"
keywords = ["lockdownd", "ios"]
[dependencies]
tokio = { version = "1.43", features = ["io-util", "macros", "time"] }
tokio-openssl = { version = "0.6" }
openssl = { version = "0.10" }
plist = { version = "1.7" }
serde = { version = "1", features = ["derive"] }
thiserror = { version = "2" }
log = { version = "0.4" }
env_logger = { version = "0.11" }
indexmap = { version = "2.7", features = ["serde"], optional = true }
uuid = { version = "1.12", features = ["serde"], optional = true }
async-recursion = { version = "1.1", optional = true }
base64 = { version = "0.22", optional = true }
serde_json = { version = "1", optional = true }
json = { version = "0.12", optional = true }
byteorder = { version = "1.5", optional = true }
[features]
core_device_proxy = ["dep:serde_json", "dep:json", "dep:byteorder"]
heartbeat = []
installation_proxy = []
mounter = []
xpc = [
"tokio/full",
"dep:indexmap",
"dep:uuid",
"dep:async-recursion",
"dep:base64",
]
full = [
"core_device_proxy",
"heartbeat",
"installation_proxy",
"mounter",
"xpc",
]

View File

@@ -1,12 +1,18 @@
// Jackson Coxson // Jackson Coxson
#[cfg(feature = "core_device_proxy")]
pub mod core_device_proxy; pub mod core_device_proxy;
#[cfg(feature = "heartbeat")]
pub mod heartbeat; pub mod heartbeat;
#[cfg(feature = "xpc")]
pub mod http2; pub mod http2;
#[cfg(feature = "installation_proxy")]
pub mod installation_proxy; pub mod installation_proxy;
pub mod lockdownd; pub mod lockdownd;
#[cfg(feature = "mounter")]
pub mod mounter; pub mod mounter;
pub mod pairing_file; pub mod pairing_file;
#[cfg(feature = "xpc")]
pub mod xpc; pub mod xpc;
use log::{debug, error}; use log::{debug, error};

40
tools/Cargo.toml Normal file
View File

@@ -0,0 +1,40 @@
[package]
name = "idevice-tools"
description = "Rust binary tools to interact with services on iOS devices."
authors = ["Jackson Coxson"]
version = "0.1.0"
edition = "2021"
license = "MIT"
documentation = "https://docs.rs/idevice"
repository = "https://github.com/jkcoxson/idevice"
keywords = ["lockdownd", "ios"]
[[bin]]
name = "ideviceinfo"
path = "src/ideviceinfo.rs"
[[bin]]
name = "heartbeat_client"
path = "src/heartbeat_client.rs"
[[bin]]
name = "instproxy"
path = "src/instproxy.rs"
[[bin]]
name = "mounter"
path = "src/mounter.rs"
[[bin]]
name = "core_device_proxy_tun"
path = "src/core_device_proxy_tun.rs"
[dependencies]
idevice = { path = "../idevice", features = ["full"] }
tokio = { version = "1.43", features = ["io-util", "macros", "time", "full"] }
log = { version = "0.4" }
env_logger = { version = "0.11" }
tun-rs = { version = "1.5", features = ["async"] }
sha2 = { version = "0.10" }
ureq = { version = "3" }