Refactor lib/binary into separate crates

This commit is contained in:
Will Greenberg
2023-12-27 16:08:37 -08:00
parent 51fc9eba56
commit e20fe92213
17 changed files with 80 additions and 139 deletions

96
Cargo.lock generated
View File

@@ -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",
]

View File

@@ -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"

16
orca/Cargo.toml Normal file
View File

@@ -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"

View File

@@ -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<String> = 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);
},
}
}
}
}

17
wavehunter/Cargo.toml Normal file
View File

@@ -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"