20260601 sequence triage按host聚合URI

This commit is contained in:
yuyr 2026-06-01 21:51:38 +08:00
parent 938ef53173
commit 902f3ba889
2 changed files with 7 additions and 8 deletions

View File

@ -534,11 +534,11 @@ mod tests {
assert_eq!(output["sandwich"]["heatmap"].as_array().unwrap().len(), 1);
assert_eq!(output["sandwich"]["heatmap"][0]["total"].as_u64(), Some(5));
assert_eq!(
uri_prefix_group_occurrences(&output, "object", "rsync://example.net/pp/"),
uri_prefix_group_occurrences(&output, "object", "rsync://example.net/"),
2
);
assert_eq!(
uri_prefix_group_occurrences(&output, "reject_uri", "rsync://example.net/pp/"),
uri_prefix_group_occurrences(&output, "reject_uri", "rsync://example.net/"),
1
);
assert_eq!(asn_group_occurrences(&output, "vrp_output", "AS64496"), 1);

View File

@ -292,7 +292,7 @@ impl SandwichAnalysis {
) {
match record.set_type {
"object" | "reject_uri" => {
let prefix = uri_directory_prefix(&record.key);
let prefix = uri_host_prefix(&record.key);
let group_key = format!("{}|{}", record.set_type, prefix);
let group =
self.uri_prefix_groups
@ -348,12 +348,11 @@ fn add_to_group(
}
}
fn uri_directory_prefix(uri: &str) -> String {
fn uri_host_prefix(uri: &str) -> String {
let scheme_end = uri.find("://").map(|index| index + 3).unwrap_or(0);
if let Some(slash_index) = uri.rfind('/')
&& slash_index >= scheme_end
{
return uri[..=slash_index].to_string();
if let Some(path_start) = uri[scheme_end..].find('/') {
let end = scheme_end + path_start + 1;
return uri[..end].to_string();
}
uri.to_string()
}