feat: добавлены компоненты для управления конфигурацией и логами
Добавлены новые компоненты для отображения и управления конфигурацией, логами и правилами маршрутизации. Реализована логика для работы с API, включая запросы на получение и сохранение данных. Также добавлены шаблоны правил и утилиты для валидации. Refs: None
This commit is contained in:
85
src/web/templates/ruleTemplates.js
Normal file
85
src/web/templates/ruleTemplates.js
Normal 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'],
|
||||
}),
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user