fix(singbox): устранение утечки Discord в direct на Sing-box 1.14 и верификация троттлинга DPI

- singbox/generator_routes.uc: восстановлена маршрутизация IP-подсетей сервисов в ip_cidr, добавлены сиды для холодного старта
- nft/apply.uc: наполнение sets.subnets сидами подсетей Discord и Telegram до первой загрузки .lst
- components/updates.uc: автоматический reload ядра Sing-box после фонового list_update при обновлении ruleset
- diagnostics/fuzzer.uc: учет объема скачанных данных, детектирование троттлинга DPI 16KB и вердикты проходимости
- fe-app-tachyon: отображение статусов верификации данных и DPI вердиктов в UI фаззера
This commit is contained in:
Dushnilin
2026-09-06 13:05:00 +03:00
parent 547d4aa6ba
commit db45d5d84d
7 changed files with 605 additions and 15 deletions
@@ -1213,10 +1213,11 @@ function add_protocol_matchers(rule, section) {
function load_community_subnet_cidrs(community) {
let service = as_string(community);
let paths = [
"/tmp/sing-box/rulesets/community-subnets-" + as_string(community) + ".lst",
"/etc/tachyon/rulesets/community-subnets-" + as_string(community) + ".lst",
(ctx.runtime_ruleset_folder || runtime_ruleset_folder || "/tmp/sing-box/rulesets") + "/community-subnets-" + as_string(community) + ".lst"
"/tmp/sing-box/rulesets/community-subnets-" + service + ".lst",
"/etc/tachyon/rulesets/community-subnets-" + service + ".lst",
(ctx.runtime_ruleset_folder || runtime_ruleset_folder || "/tmp/sing-box/rulesets") + "/community-subnets-" + service + ".lst"
];
for (let path in paths) {
let content = fs.readfile(path);
@@ -1231,6 +1232,18 @@ function load_community_subnet_cidrs(community) {
return cidrs;
}
}
// Hardcoded seed fallback for cold boot before list-update downloads .lst
if (service == "discord") {
return [ "162.158.0.0/15", "172.64.0.0/13", "138.128.136.0/21" ];
}
if (service == "telegram") {
return [
"149.154.160.0/20", "91.108.4.0/22", "91.108.8.0/22",
"91.108.12.0/22", "91.108.16.0/22", "91.108.56.0/22",
"5.28.192.0/18", "91.105.192.0/23", "95.161.64.0/20",
"185.76.151.0/24", "194.221.0.0/16"
];
}
return [];
}
@@ -1252,9 +1265,14 @@ function add_combined_route_for_section(config, section) {
for (let community in connections.community_lists(section)) {
let ensured = ensure_community_ruleset(config, section_name, as_string(community));
let service = as_string(community);
let ensured = ensure_community_ruleset(config, section_name, service);
push(rule_set_tags, ensured.tag);
push(dns_rule_set_tags, ensured.tag);
if (service != "cloudflare" && service != "cloudfront" && service != "hetzner" && service != "ovh" && service != "digitalocean") {
for (let cidr in load_community_subnet_cidrs(community))
push(ip_cidr, cidr);
}
}
for (let reference in connections.rule_sets(section)) {
let ensured = ensure_custom_ruleset(config, as_string(reference));