Skip to content

Commit 2f3592f

Browse files
refractoring done
1 parent 1509b4b commit 2f3592f

19 files changed

Lines changed: 973 additions & 391 deletions

File tree

Cargo.lock

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/network-scanner/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ tokio = { version = "1.44", features = ["rt", "sync", "time", "fs"] }
2323
tracing = "0.1"
2424
typed-builder = "0.19"
2525
serde = "1"
26+
derive_more = { version = "2.0.1", features = ["from"] }
2627

2728
[target.'cfg(target_os = "windows")'.dependencies]
2829
ipconfig = "0.3"

crates/network-scanner/examples/mdns.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use network_scanner::task_utils::TaskManager;
88
#[tokio::main]
99
pub async fn main() -> anyhow::Result<()> {
1010
tracing_subscriber::fmt::SubscriberBuilder::default()
11-
.with_max_level(tracing::Level::DEBUG)
11+
.with_max_level(tracing::Level::INFO)
1212
.with_thread_names(true)
1313
.init();
1414

crates/network-scanner/examples/netbios.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use std::net::Ipv4Addr;
44
use std::time::Duration;
55

66
use network_scanner::task_utils::TaskManager;
7+
use tracing::info;
78

89
#[tokio::main]
910
pub async fn main() -> anyhow::Result<()> {
@@ -29,8 +30,8 @@ pub async fn main() -> anyhow::Result<()> {
2930
TaskManager::new(),
3031
)?;
3132

32-
while let Some((ip, name)) = receiver.recv().await {
33-
println!("{}: {:?}", ip, name);
33+
while let Some(event) = receiver.recv().await {
34+
info!(?event)
3435
}
3536

3637
Ok(())

crates/network-scanner/examples/port_discovery.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
use std::time::Duration;
44

5-
use network_scanner::task_utils::TaskManager;
5+
use network_scanner::{
6+
named_port::{MaybeNamedPort, NamedPort},
7+
task_utils::TaskManager,
8+
};
9+
use tracing::info;
610

711
#[tokio::main]
812
pub async fn main() {
@@ -14,14 +18,19 @@ pub async fn main() {
1418
let runtime = network_scanner_net::runtime::Socket2Runtime::new(None).expect("failed to create runtime");
1519

1620
let ip = std::net::Ipv4Addr::new(127, 0, 0, 1);
17-
// let port = 22,80,443,12345,3399,88
18-
let port = vec![22, 80, 443, 12345, 3399, 88];
21+
let ports: Vec<MaybeNamedPort> = vec![
22+
NamedPort::Ssh.into(),
23+
80.into(),
24+
NamedPort::Https.into(),
25+
389.into(),
26+
636.into(),
27+
];
1928
let mut res =
20-
network_scanner::port_discovery::scan_ports(ip, &port, runtime, Duration::from_secs(5), TaskManager::new())
29+
network_scanner::port_discovery::scan_ports(ip, &ports, runtime, Duration::from_secs(5), TaskManager::new())
2130
.await
2231
.expect("failed to scan ports");
2332

24-
while let Some(res) = res.recv().await {
25-
tracing::warn!("Port scan result: {:?}", res);
33+
while let Some(event) = res.recv().await {
34+
info!(?event);
2635
}
2736
}

crates/network-scanner/examples/scan.rs

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,34 @@
33
use std::time::Duration;
44

55
use anyhow::Context;
6-
use network_scanner::scanner::{NetworkScanner, NetworkScannerParams, ScannerConfig, ScannerToggles};
6+
use network_scanner::{
7+
event_bus::{ScannerEvent, TypedReceiver},
8+
named_port::{MaybeNamedPort, NamedPort},
9+
port_discovery::TcpKnockEvent,
10+
scanner::{DnsEvent, NetworkScanner, NetworkScannerParams, ScannerConfig, ScannerToggles},
11+
};
712
use tokio::time::timeout;
813

914
fn main() -> anyhow::Result<()> {
1015
tracing_subscriber::fmt::SubscriberBuilder::default()
1116
.with_max_level(tracing::Level::INFO)
12-
.with_file(true)
13-
.with_line_number(true)
17+
.with_file(false)
1418
.with_thread_names(true)
19+
.with_ansi(false)
1520
.init();
1621

22+
let ports: Vec<MaybeNamedPort> = vec![
23+
NamedPort::Ssh.into(),
24+
80.into(),
25+
NamedPort::Https.into(),
26+
389.into(),
27+
636.into(),
28+
];
29+
1730
let params = NetworkScannerParams {
1831
config: ScannerConfig {
1932
ip_ranges: vec![],
20-
ports: vec![22, 80, 443, 389, 636],
33+
ports,
2134
ping_interval: Duration::from_millis(20),
2235
ping_timeout: Duration::from_millis(1000),
2336
broadcast_timeout: Duration::from_millis(2000),
@@ -29,7 +42,6 @@ fn main() -> anyhow::Result<()> {
2942
},
3043
toggle: ScannerToggles {
3144
enable_broadcast: true,
32-
enable_ping_start: true,
3345
enable_resolve_dns: true,
3446
enable_subnet_scan: true,
3547
enable_zeroconf: true,
@@ -45,11 +57,13 @@ fn main() -> anyhow::Result<()> {
4557
tracing::info!("Ctrl-C received, stopping network scan");
4658
}
4759
});
48-
while let Ok(Some(res)) = timeout(Duration::from_secs(120), stream.recv()).await.with_context(|| {
60+
61+
let mut receiver: TypedReceiver<InterestedEvent> = stream.subscribe().await;
62+
while let Ok(event) = receiver.recv().await.with_context(|| {
4963
tracing::error!("Failed to receive from stream");
5064
"Failed to receive from stream"
5165
}) {
52-
tracing::warn!("Result: {:?}", res);
66+
tracing::info!(?event);
5367
}
5468

5569
stream.stop();
@@ -60,3 +74,21 @@ fn main() -> anyhow::Result<()> {
6074
tracing::info!("Done");
6175
Ok(())
6276
}
77+
78+
#[derive(Debug)]
79+
pub enum InterestedEvent {
80+
Dns(DnsEvent),
81+
TcpKnock(TcpKnockEvent),
82+
}
83+
84+
impl TryFrom<ScannerEvent> for InterestedEvent {
85+
type Error = ();
86+
87+
fn try_from(event: ScannerEvent) -> Result<Self, Self::Error> {
88+
match event {
89+
ScannerEvent::Dns(dns) => Ok(InterestedEvent::Dns(dns)),
90+
ScannerEvent::TcpKnock(tcp_knock) => Ok(InterestedEvent::TcpKnock(tcp_knock)),
91+
_ => Err(()),
92+
}
93+
}
94+
}

0 commit comments

Comments
 (0)