From d31a09e331581823e8eff862ab58552e326bb51b Mon Sep 17 00:00:00 2001 From: Andrew Rioux Date: Wed, 11 Dec 2024 06:54:23 -0500 Subject: [PATCH] WIP: adding more cross compilation support --- Cargo.lock | 29 +++++++++++++++++++ flake.nix | 2 +- sparse-05/sparse-05-client/Cargo.toml | 2 ++ sparse-05/sparse-05-server/Cargo.toml | 2 ++ .../sparse-05-server/src/capabilities.rs | 1 - sparse-05/sparse-05-server/src/interface.rs | 4 ++- sparse-05/sparse-05-server/src/main.rs | 11 +++++-- 7 files changed, 45 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8652435..99e249a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -281,6 +281,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossbeam-utils" version = "0.8.20" @@ -482,6 +491,16 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +[[package]] +name = "flate2" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fs_extra" version = "1.3.0" @@ -750,6 +769,12 @@ dependencies = [ "value-bag", ] +[[package]] +name = "md5" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" + [[package]] name = "memchr" version = "2.7.4" @@ -1322,7 +1347,9 @@ dependencies = [ "anyhow", "ecies-ed25519", "ed25519-dalek", + "flate2", "libc", + "md5", "rand 0.7.3", "raw_tty", "rmp-serde", @@ -1353,8 +1380,10 @@ dependencies = [ "cc", "ecies-ed25519", "ed25519-dalek", + "flate2", "libc", "log", + "md5", "packets", "pcap-sys", "rand 0.7.3", diff --git a/flake.nix b/flake.nix index dea2bc1..d2b24cd 100644 --- a/flake.nix +++ b/flake.nix @@ -101,7 +101,7 @@ commonLinuxArgs = commonArgs // { CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl"; - CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static"; + CARGO_BUILD_RUSTFLAGS = "-Ctarget-feature=+crt-static"; }; commonWindowsArgs = commonArgs // { diff --git a/sparse-05/sparse-05-client/Cargo.toml b/sparse-05/sparse-05-client/Cargo.toml index 0ca3c40..1ba5927 100644 --- a/sparse-05/sparse-05-client/Cargo.toml +++ b/sparse-05/sparse-05-client/Cargo.toml @@ -8,7 +8,9 @@ ansi_term = "0.12.1" anyhow = "1.0.75" ecies-ed25519 = { version = "0.5.1", features = ["serde"] } ed25519-dalek = "1.0.1" +flate2 = "1.0.33" libc = "0.2.147" +md5 = "0.7.0" rand = "0.7" rmp-serde = "1.1.2" serde = { version = "1.0.188", features = ["derive"] } diff --git a/sparse-05/sparse-05-server/Cargo.toml b/sparse-05/sparse-05-server/Cargo.toml index c43f510..6e20393 100644 --- a/sparse-05/sparse-05-server/Cargo.toml +++ b/sparse-05/sparse-05-server/Cargo.toml @@ -18,6 +18,8 @@ ecies-ed25519 = { version = "0.5.1", features = ["serde"] } packets = { path = "../../packets" } pcap-sys = { path = "../../pcap-sys", optional = true } windows-service = { version = "0.6.0", optional = true } +flate2 = "1.0.33" +md5 = "0.7.0" [build-dependencies] cc = "1.0" diff --git a/sparse-05/sparse-05-server/src/capabilities.rs b/sparse-05/sparse-05-server/src/capabilities.rs index 74922fa..23d8b7d 100644 --- a/sparse-05/sparse-05-server/src/capabilities.rs +++ b/sparse-05/sparse-05-server/src/capabilities.rs @@ -2,7 +2,6 @@ use std::ffi::c_int; use std::path::PathBuf; -use anyhow::Context; use sparse_05_common::messages::{Capabilities, OperatingSystem, TransportType}; #[derive(Debug)] diff --git a/sparse-05/sparse-05-server/src/interface.rs b/sparse-05/sparse-05-server/src/interface.rs index f62d3a1..5874efc 100644 --- a/sparse-05/sparse-05-server/src/interface.rs +++ b/sparse-05/sparse-05-server/src/interface.rs @@ -174,7 +174,9 @@ impl InterfaceReceiver { if udp_pkt.dstport() != *port { return Ok(false); } - let _ = (f)(packet.to_owned()); + if let Err(e) = (f)(packet.to_owned()) { + log::warn!("error on handling a new connection: {e:?}"); + } Ok(false) }, false, diff --git a/sparse-05/sparse-05-server/src/main.rs b/sparse-05/sparse-05-server/src/main.rs index c302d89..bc6bbaf 100644 --- a/sparse-05/sparse-05-server/src/main.rs +++ b/sparse-05/sparse-05-server/src/main.rs @@ -20,7 +20,11 @@ mod interface; fn main_to_run() -> anyhow::Result<()> { simple_logger::SimpleLogger::new() - .with_level(log::LevelFilter::Off) + .with_level(if cfg!(debug_assertions) { + log::LevelFilter::Warn + } else { + log::LevelFilter::Off + }) .with_module_level("sparse-05-server", log::LevelFilter::Debug) .init()?; @@ -32,9 +36,9 @@ fn main_to_run() -> anyhow::Result<()> { log::debug!("Capabilities: {:?}", capabilities); - let config_bytes = catconf::read_from_exe(CONFIG_SEPARATOR, 512)?; + let config_bytes = catconf::read_from_exe(CONFIG_SEPARATOR, 128)?; if config_bytes.len() != 66 { - bail!("could not load configuration"); + bail!("could not load configuration: {} bytes", config_bytes.len()); } let (port, conn_pubkey, enc_pubkey) = { @@ -58,6 +62,7 @@ fn main_to_run() -> anyhow::Result<()> { let Ok(packet) = recv_eth_packet.recv() else { continue; }; + log::trace!("Sending packet of length: {}", packet.pkt().data.len()); if let Err(_) = interface_sender.sendpacket(packet.pkt()) {} });