Improve the CIDR parsing before starting the task

This commit is contained in:
2024-10-08 01:50:53 +02:00
parent dbbbdc4818
commit 1783fe5c93

View File

@ -294,9 +294,20 @@ async fn handle_scan(
return MultiReply::FormError(PlainText("Invalid username".to_string())); return MultiReply::FormError(PlainText("Invalid username".to_string()));
} }
let mut cidrs: Vec<IpCidr> = vec![];
for line in form.ips.lines() {
cidrs.push(match IpCidr::from_str(line.trim()) {
Ok(data) => data,
Err(err) => {
return MultiReply::FormError(PlainText(format!("Invalid value: {line}: {err}")))
}
});
}
let task_group_id: Uuid = Uuid::now_v7(); let task_group_id: Uuid = Uuid::now_v7();
for cidr in form.ips.lines() { for cidr in cidrs {
let scan_task = ScanTask { let scan_task = ScanTask {
task_group_id: task_group_id.to_string(), task_group_id: task_group_id.to_string(),
cidr: cidr.to_string(), cidr: cidr.to_string(),
@ -311,11 +322,10 @@ async fn handle_scan(
match scan_task.save(&mut db).await { match scan_task.save(&mut db).await {
Ok(_) => { Ok(_) => {
info!("Added {}", cidr.to_string()); info!("Added {}", cidr.to_string());
let net = IpCidr::from_str(cidr).unwrap();
let msg = EventBusWriterEvent::BroadcastMessage( let msg = EventBusWriterEvent::BroadcastMessage(
WorkerMessages::DoWorkRequest { WorkerMessages::DoWorkRequest {
neworks: vec![Network(net)], neworks: vec![Network(cidr)],
} }
.into(), .into(),
); );
@ -431,8 +441,7 @@ async fn handle_list_scanners(
path.push(static_data_dir); path.push(static_data_dir);
path.push("scanners"); path.push("scanners");
path.push(match scanner_name { path.push(match scanner_name {
Scanners::Stretchoid | Scanners::Stretchoid | Scanners::Binaryedge => panic!("This should not happen"),
Scanners::Binaryedge => panic!("This should not happen"),
Scanners::Censys => "censys.txt".to_string(), Scanners::Censys => "censys.txt".to_string(),
Scanners::InternetMeasurement => "internet-measurement.com.txt".to_string(), Scanners::InternetMeasurement => "internet-measurement.com.txt".to_string(),
}); });