diff --git a/Cargo.lock b/Cargo.lock index cccf36d..80765a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,7 +49,7 @@ checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.43", ] [[package]] @@ -111,29 +111,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "axum-extra" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523ae92256049a3b02d3bb4df80152386cd97ddba0c8c5077619bdc8c4b1859b" -dependencies = [ - "axum", - "axum-core", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "serde", - "tokio", - "tokio-util", - "tower", - "tower-layer", - "tower-service", -] - [[package]] name = "backtrace" version = "0.3.69" @@ -602,9 +579,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.150" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "linux-raw-sys" @@ -657,9 +634,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", @@ -696,9 +673,24 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "orca" +version = "0.1.0" +dependencies = [ + "bytes", + "chrono", + "crc", + "deku", + "env_logger", + "libc", + "log", + "pcap-file", + "thiserror", +] [[package]] name = "parking_lot" @@ -757,7 +749,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.43", ] [[package]] @@ -784,9 +776,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" dependencies = [ "unicode-ident", ] @@ -852,9 +844,9 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.26" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ "bitflags 2.4.1", "errno", @@ -898,7 +890,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.43", ] [[package]] @@ -996,9 +988,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" dependencies = [ "proc-macro2", "quote", @@ -1028,22 +1020,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.43", ] [[package]] @@ -1073,7 +1065,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.43", ] [[package]] @@ -1216,7 +1208,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.43", "wasm-bindgen-shared", ] @@ -1238,7 +1230,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.43", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1254,16 +1246,10 @@ name = "wavehunter" version = "0.1.0" dependencies = [ "axum", - "axum-extra", - "bytes", - "chrono", - "crc", - "deku", "env_logger", "futures-core", - "libc", "log", - "pcap-file", + "orca", "serde", "thiserror", "tokio", @@ -1444,9 +1430,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "97a4882e6b134d6c28953a387571f1acdd3496830d5e36c5e3a1075580ea641c" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 809d8f2..a019f56 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,36 +1,7 @@ -[package] -name = "wavehunter" -version = "0.1.0" -edition = "2021" +[workspace] -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -name = "wavehunter" -path = "src/lib.rs" - -[[bin]] -name = "wavehunter-reader" -path = "src/bin/wavehunter_reader.rs" - -[[bin]] -name = "wavehunter" -path = "src/bin/wavehunter.rs" - -[dependencies] -bytes = "1.5.0" -chrono = "0.4.31" -crc = "3.0.1" -deku = { version = "0.16.0", features = ["logging"] } -env_logger = "0.10.1" -libc = "0.2.150" -log = "0.4.20" -pcap-file = "2.0.0" -thiserror = "1.0.50" -# TODO: split into binary-only dependencies -toml = "0.8.8" -serde = { version = "1.0.193", features = ["derive"] } -tokio = { version = "1.35.1", features = ["full"] } -axum = "0.7.2" -axum-extra = { version = "0.9.0", features = ["async-read-body"] } -futures-core = "0.3.30" +members = [ + "orca", + "wavehunter", +] +resolver = "2" diff --git a/orca/Cargo.toml b/orca/Cargo.toml new file mode 100644 index 0000000..085ee12 --- /dev/null +++ b/orca/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "orca" +version = "0.1.0" +edition = "2021" +description = "Orbic Realtime Cellular Analysis" + +[dependencies] +bytes = "1.5.0" +chrono = "0.4.31" +crc = "3.0.1" +deku = { version = "0.16.0", features = ["logging"] } +env_logger = "0.10.1" +libc = "0.2.150" +log = "0.4.20" +pcap-file = "2.0.0" +thiserror = "1.0.50" diff --git a/src/diag.rs b/orca/src/diag.rs similarity index 100% rename from src/diag.rs rename to orca/src/diag.rs diff --git a/src/diag_device.rs b/orca/src/diag_device.rs similarity index 100% rename from src/diag_device.rs rename to orca/src/diag_device.rs diff --git a/src/diag_reader.rs b/orca/src/diag_reader.rs similarity index 100% rename from src/diag_reader.rs rename to orca/src/diag_reader.rs diff --git a/src/gsmtap.rs b/orca/src/gsmtap.rs similarity index 100% rename from src/gsmtap.rs rename to orca/src/gsmtap.rs diff --git a/src/gsmtap_parser.rs b/orca/src/gsmtap_parser.rs similarity index 100% rename from src/gsmtap_parser.rs rename to orca/src/gsmtap_parser.rs diff --git a/src/hdlc.rs b/orca/src/hdlc.rs similarity index 100% rename from src/hdlc.rs rename to orca/src/hdlc.rs diff --git a/src/lib.rs b/orca/src/lib.rs similarity index 100% rename from src/lib.rs rename to orca/src/lib.rs diff --git a/src/log_codes.rs b/orca/src/log_codes.rs similarity index 100% rename from src/log_codes.rs rename to orca/src/log_codes.rs diff --git a/src/pcap.rs b/orca/src/pcap.rs similarity index 100% rename from src/pcap.rs rename to orca/src/pcap.rs diff --git a/src/qmdl.rs b/orca/src/qmdl.rs similarity index 100% rename from src/qmdl.rs rename to orca/src/qmdl.rs diff --git a/tests/test_lte_parsing.rs b/orca/tests/test_lte_parsing.rs similarity index 100% rename from tests/test_lte_parsing.rs rename to orca/tests/test_lte_parsing.rs diff --git a/src/bin/wavehunter_reader.rs b/src/bin/wavehunter_reader.rs deleted file mode 100644 index 432f36e..0000000 --- a/src/bin/wavehunter_reader.rs +++ /dev/null @@ -1,49 +0,0 @@ -use std::fs::File; - -use wavehunter::qmdl::QmdlReader; -use wavehunter::diag_reader::DiagReader; -use wavehunter::gsmtap_parser::GsmtapParser; -use wavehunter::pcap::GsmtapPcapWriter; - -use log::{debug, error}; - -fn main() { - env_logger::init(); - - let args: Vec = std::env::args().collect(); - if args.len() != 2 { - error!("Usage: {} /path/to/qmdl/file", args[0]); - std::process::exit(1); - } - - let qmdl_file = File::open(&args[1]).unwrap(); - let mut qmdl_reader = QmdlReader::new(qmdl_file, None); - - let mut gsmtap_parser = GsmtapParser::new(); - let pcap_file = std::fs::File::options() - .create(true) - .write(true) - .open("./wavehunter.pcap") - .expect("error opening pcap file"); - let mut pcap_writer = GsmtapPcapWriter::new(pcap_file).unwrap(); - pcap_writer.write_iface_header().unwrap(); - - loop { - for maybe_msg in qmdl_reader.read_response().expect("error reading qmdl file") { - match maybe_msg { - Ok(msg) => { - debug!("msg: {:?}", msg); - let maybe_gsmtap_msg = gsmtap_parser.recv_message(msg).expect("error parsing gsmtap message"); - if let Some((timestamp, gsmtap_msg)) = maybe_gsmtap_msg { - debug!("gsmtap_msg: {:?}", gsmtap_msg); - pcap_writer.write_gsmtap_message(gsmtap_msg, timestamp) - .expect("error writing pcap packet"); - } - }, - Err(e) => { - dbg!("error parsing message: {:?}", e); - }, - } - } - } -} diff --git a/wavehunter/Cargo.toml b/wavehunter/Cargo.toml new file mode 100644 index 0000000..914a8df --- /dev/null +++ b/wavehunter/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "wavehunter" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +orca = { path = "../orca" } +toml = "0.8.8" +serde = { version = "1.0.193", features = ["derive"] } +tokio = { version = "1.35.1", features = ["full"] } +axum = "0.7.2" +futures-core = "0.3.30" +thiserror = "1.0.52" +log = "0.4.20" +env_logger = "0.10.1" diff --git a/src/bin/wavehunter.rs b/wavehunter/src/main.rs similarity index 100% rename from src/bin/wavehunter.rs rename to wavehunter/src/main.rs