More refactor & start_scan fix

main
E. Almqvist 2 years ago
parent 303b9dbe6e
commit 72357e24eb
  1. 25
      src/scanner.rs

@ -1,7 +1,6 @@
use crate::ipv4::{IPv4, IPv4Range}; use crate::ipv4::{IPv4, IPv4Range};
use anyhow::Result;
use log::info; use log::info;
use std::net::{SocketAddr, TcpStream}; use std::net::TcpStream;
use std::thread::JoinHandle; use std::thread::JoinHandle;
use std::{panic, thread}; use std::{panic, thread};
@ -66,9 +65,6 @@ fn get_scan_workers(
// container for all of our threads // container for all of our threads
let mut threads: Vec<JoinHandle<Vec<(u32, bool)>>> = Vec::new(); let mut threads: Vec<JoinHandle<Vec<(u32, bool)>>> = Vec::new();
// container for all of our results
let mut results: Vec<(u32, bool)> = Vec::new();
for thread_id in 0..num_threads { for thread_id in 0..num_threads {
let id_ignorelist = ignorelist.clone().unwrap_or_default(); let id_ignorelist = ignorelist.clone().unwrap_or_default();
@ -82,7 +78,7 @@ fn get_scan_workers(
if ips_left > 0 { if ips_left > 0 {
let id_ignorelist = ignorelist.clone().unwrap_or_default(); let id_ignorelist = ignorelist.clone().unwrap_or_default();
let worker = create_scan_worker( let worker = create_scan_worker(
results.len() as u32 + 1, threads.len() as u32 + 1,
ips_per_thread, ips_per_thread,
target_port, target_port,
id_ignorelist, id_ignorelist,
@ -99,21 +95,22 @@ pub fn start_scan(
target_port: u16, target_port: u16,
num_threads: u32, num_threads: u32,
ignorelist: Option<Vec<u32>>, ignorelist: Option<Vec<u32>>,
) { ) -> Vec<Vec<(u32, bool)>> {
// Get the workers // Get the workers
let scan_workers = get_scan_workers(from, to, target_port, num_threads, ignorelist); let scan_workers = get_scan_workers(from, to, target_port, num_threads, ignorelist);
let results: Vec<Vec<(u32, bool)>> = Vec::new(); let mut results: Vec<Vec<(u32, bool)>> = Vec::new();
// Run everyone // Run all the workers
for worker in scan_workers { for worker in scan_workers {
let mut result = worker.join(); let result = match worker.join() {
Ok(r) => r,
Err(e) => panic!("{:?}", e)
};
match result { results.push(result);
Ok(_) => return result.unwrap(),
Err(e) => panic!(":(")
} }
} results
} }

Loading…
Cancel
Save