Add: verbose flag to show logs in detail

This commit is contained in:
DaZuo0122
2026-01-17 00:15:46 +08:00
parent 7746511fc4
commit 7e87edb411
11 changed files with 146 additions and 2 deletions

View File

@@ -14,3 +14,4 @@ wtfnet-geoip = { path = "../wtfnet-geoip" }
libc = "0.2"
tokio-socks = "0.5"
url = "2"
tracing = "0.1"

View File

@@ -21,6 +21,7 @@ use thiserror::Error;
use tokio::net::{TcpStream, lookup_host};
use tokio::time::timeout;
use tokio_socks::tcp::Socks5Stream;
use tracing::debug;
use url::Url;
use wtfnet_geoip::GeoIpRecord;
@@ -114,7 +115,15 @@ pub async fn ping(
timeout_ms: u64,
interval_ms: u64,
) -> Result<PingReport, ProbeError> {
debug!(
target,
count,
timeout_ms,
interval_ms,
"probe ping start"
);
let addr = resolve_one(target).await?;
debug!(ip = %addr, "probe ping resolved");
let mut results = Vec::new();
let mut received = 0u32;
let mut min = None;
@@ -193,6 +202,15 @@ pub async fn tcp_ping(
proxy: Option<&str>,
prefer_ipv4: bool,
) -> Result<TcpPingReport, ProbeError> {
debug!(
target,
port,
count,
timeout_ms,
proxy = ?proxy,
prefer_ipv4,
"probe tcp ping start"
);
let (report_ip, target_host, proxy_addr) = if let Some(proxy) = proxy {
let proxy = parse_socks5_proxy(proxy)?;
if proxy.remote_dns {
@@ -214,6 +232,12 @@ pub async fn tcp_ping(
(Some(addr), addr.to_string(), String::new())
};
let socket_addr = report_ip.map(|addr| SocketAddr::new(addr, port));
debug!(
report_ip = ?report_ip,
target_host = %target_host,
proxy_addr = %proxy_addr,
"probe tcp ping resolved"
);
let timeout_dur = Duration::from_millis(timeout_ms);
let mut results = Vec::new();
let mut received = 0u32;
@@ -285,7 +309,15 @@ pub async fn tcp_trace(
max_hops: u8,
timeout_ms: u64,
) -> Result<TraceReport, ProbeError> {
debug!(
target,
port,
max_hops,
timeout_ms,
"probe tcp trace start"
);
let addr = resolve_one(target).await?;
debug!(ip = %addr, "probe tcp trace resolved");
let socket_addr = SocketAddr::new(addr, port);
let timeout_dur = Duration::from_millis(timeout_ms);
let mut hops = Vec::new();
@@ -341,7 +373,15 @@ pub async fn udp_trace(
max_hops: u8,
timeout_ms: u64,
) -> Result<TraceReport, ProbeError> {
debug!(
target,
port,
max_hops,
timeout_ms,
"probe udp trace start"
);
let addr = resolve_one(target).await?;
debug!(ip = %addr, "probe udp trace resolved");
let timeout_dur = Duration::from_millis(timeout_ms);
let mut hops = Vec::new();