feat: добавлены компоненты для управления конфигурацией и логами

Добавлены новые компоненты для отображения и управления конфигурацией, логами и правилами маршрутизации. Реализована логика для работы с API, включая запросы на получение и сохранение данных. Также добавлены шаблоны правил и утилиты для валидации.

Refs: None
This commit is contained in:
2026-05-08 18:23:29 +03:00
parent 7d41dd86e7
commit 8789496ae6
24 changed files with 2987 additions and 364 deletions

View File

@@ -0,0 +1,85 @@
// Готовые шаблоны правил роутинга. domains/suffixes/cidr/ports собраны из публичных
// reference-конфигов sing-box. Это пресеты «на старт», а не исчерпывающие списки.
let counter = 0;
function id(prefix) {
counter += 1;
return `${prefix}-${Date.now()}-${counter}`;
}
function template(name, outbound, fields) {
return {
id: id('tpl'),
name,
enabled: true,
outbound,
domains: [],
domainSuffixes: [],
domainKeywords: [],
ipCidrs: [],
ports: [],
networks: [],
...fields,
};
}
export const ruleTemplates = [
{
key: 'lol-direct',
label: 'League of Legends → direct',
description: 'Riot/LoL домены и порты — играть напрямую без VPN.',
build: () =>
template('League of Legends', 'direct', {
domainSuffixes: ['leagueoflegends.com', 'riotgames.com', 'riotcdn.net', 'dyn.riotcdn.net'],
ports: ['5000', '5223', '5222', '8088'],
}),
},
{
key: 'discord-direct',
label: 'Discord/Vesktop → direct',
description: 'Discord voice/video и WebSocket напрямую.',
build: () =>
template('Discord', 'direct', {
domainSuffixes: ['discord.com', 'discord.gg', 'discord.media', 'discordapp.com', 'discordapp.net'],
ports: ['50000-65535'],
networks: ['udp'],
}),
},
{
key: 'telegram-vpn',
label: 'Telegram → VPN',
description: 'Telegram через выбранный VPN outbound.',
build: () =>
template('Telegram', 'vpn', {
domainSuffixes: ['telegram.org', 't.me', 'telegram.me', 'telegra.ph', 'tdesktop.com'],
ipCidrs: ['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'],
}),
},
{
key: 'youtube-vpn',
label: 'YouTube → VPN',
description: 'YouTube/Google Video через VPN.',
build: () =>
template('YouTube', 'vpn', {
domainSuffixes: ['youtube.com', 'youtu.be', 'ytimg.com', 'googlevideo.com', 'youtube-nocookie.com'],
}),
},
{
key: 'steam-direct',
label: 'Steam → direct',
description: 'Загрузка/обновления Steam напрямую.',
build: () =>
template('Steam', 'direct', {
domainSuffixes: ['steampowered.com', 'steamcontent.com', 'steamcommunity.com', 'steamserver.net', 'cm.steampowered.com'],
}),
},
{
key: 'ads-block',
label: 'Реклама → block',
description: 'Базовый набор рекламных доменов — заблокировать.',
build: () =>
template('Реклама (block)', 'block', {
domainSuffixes: ['doubleclick.net', 'googlesyndication.com', 'googleadservices.com', 'adservice.google.com', 'adnxs.com'],
}),
},
];