[Alts] Server-side search controls, IP counts, adjustable window (#7517)

* [Alts] Server-side search controls, IP counts, adjustable window

Plumbs the match-type chips through to the server: include_email/include_clientid/include_ip skip disabled identifier types in both matching and frontier expansion, so excluded types (e.g. throwaway domains) never enter the graph at any depth. Session lookback becomes adjustable (session_months, clamped 1-24, default 6). Each alt row carries ip_count, the distinct recent session IP count shown in a new IPs column. All proto additions are optional with old defaults, so old clients/servers interoperate.

* Fix remaining review threads on the alts search controls

- Disable keyboard tracking on the depth and window spin boxes so typing a
  two-digit value sends one search, not one per digit.
- Reload the user under investigation on a filter change instead of reading
  the search box, which could switch to a name never submitted.
- Keep a chip's last match count while it is unchecked; the server omits
  unchecked match types, so the label used to drop to "(0)".

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2026-11-08 08:59:51 +01:00 • committed by GitHub
parent 2fba13753b
commit 53f69c9216
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 164 additions and 49 deletions

View file

@ -170,6 +170,10 @@ message Command_GetUserAlts {
}
optional string user_name = 1;
optional uint32 depth = 2 [default = 1]; // BFS depth: 1 = direct matches only, up to 3 for transitive alts-of-alts
optional bool include_email = 3 [default = true]; // match and expand over registration email
optional bool include_clientid = 4 [default = true]; // match and expand over current and historic client ids
optional bool include_ip = 5 [default = true]; // match and expand over recent session IPs
optional uint32 session_months = 6 [default = 6]; // session lookback window in months, 1-24
}
message Command_GetModeratorLastLogins {

View file

@ -17,4 +17,5 @@ message ServerInfo_UserAlt {
optional uint32 depth = 10; // BFS distance from investigated account; 1 = direct, 2+ = alt-of-alt
optional uint32 shared_count =
11; // distinct users sharing the matched identifier; high values suggest VPN/shared network
optional uint32 ip_count = 12; // distinct recent session IPs of this account in the search window
}