diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..5eef958 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,3 @@ +[target.x86_64-pc-windows-gnu] +linker = "x86_64-w64-mingw32-gcc" +rustflags = ["-C", "link-arg=-fuse-ld=lld"] diff --git a/src-tauri/src/commands/nmap.rs b/src-tauri/src/commands/nmap.rs index ae25f04..f669821 100644 --- a/src-tauri/src/commands/nmap.rs +++ b/src-tauri/src/commands/nmap.rs @@ -48,7 +48,12 @@ pub async fn run_nmap(app: AppHandle, config: NmapConfig) -> Result<(), String> } cmd.stdout(Stdio::piped()); cmd.stderr(Stdio::piped()); - + #[cfg(target_os = "windows")] + { + use std::os::windows::process::CommandExt; + const CREATE_NO_WINDOW: u32 = 0x08000000; + cmd.creation_flags(CREATE_NO_WINDOW); + } let mut child = cmd .spawn() .map_err(|e| format!("Failed to start nmap: {}", e))?; diff --git a/src-tauri/src/commands/traceroute.rs b/src-tauri/src/commands/traceroute.rs index b4ddfe6..dd43d7f 100644 --- a/src-tauri/src/commands/traceroute.rs +++ b/src-tauri/src/commands/traceroute.rs @@ -15,18 +15,30 @@ pub async fn run_traceroute(app: AppHandle, ip: String) -> Result<(), String> { .stdout(Stdio::piped()) .stderr(Stdio::piped()) .spawn() - .map_err(|e| format!("Failed to start tracepath: {}. Is iputils-tracepath installed?", e))?; + .map_err(|e| { + format!( + "Failed to start tracepath: {}. Is iputils-tracepath installed?", + e + ) + })?; #[cfg(target_os = "windows")] - let mut child = Command::new("tracert") - .arg("-d") - .arg(&ip) - .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .spawn() - .map_err(|e| format!("Failed to start tracert: {}", e))?; + let mut child = { + use std::os::windows::process::CommandExt; + const CREATE_NO_WINDOW: u32 = 0x08000000; + Command::new("tracert") + .arg("-d") + .arg(&ip) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .creation_flags(CREATE_NO_WINDOW) + .spawn() + .map_err(|e| format!("Failed to start tracert: {}", e))? + }; - let stdout = child.stdout.take() + let stdout = child + .stdout + .take() .ok_or_else(|| "Failed to capture stdout".to_string())?; let mut reader = BufReader::new(stdout).lines(); @@ -35,7 +47,9 @@ pub async fn run_traceroute(app: AppHandle, ip: String) -> Result<(), String> { let _ = app.emit("traceroute:hop", &line); } - let status = child.wait().await + let status = child + .wait() + .await .map_err(|e| format!("tracepath failed: {}", e))?; if status.success() { @@ -45,4 +59,4 @@ pub async fn run_traceroute(app: AppHandle, ip: String) -> Result<(), String> { } Ok(()) -} \ No newline at end of file +} diff --git a/src-tauri/src/scanner/ping.rs b/src-tauri/src/scanner/ping.rs index 337bb23..ab3d3e2 100644 --- a/src-tauri/src/scanner/ping.rs +++ b/src-tauri/src/scanner/ping.rs @@ -76,7 +76,7 @@ pub async fn ping_sweep( while let Some(result) = join_set.join_next().await { done += 1; match result { - Ok(mut host_result) => { + Ok(host_result) => { // Emit immediately so the host shows up in the table let _ = app.emit("scan:host-found", &host_result); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 2d84cc2..294eae2 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -22,6 +22,11 @@ "bundle": { "active": true, "targets": "all", + "windows": { + "webviewInstallMode": { + "type": "embedBootstrapper" + } + }, "icon": [ "icons/32x32.png", "icons/128x128.png", @@ -30,4 +35,4 @@ "icons/icon.ico" ] } -} +} \ No newline at end of file