export function instructionBlocks({ isGateway, host, port }) { const httpProxy = `http://${host}:${port}`; const socksProxy = `socks5://${host}:${port}`; return [ { id: 'about', label: 'Основы', title: isGateway ? 'Gateway и прокси' : 'Что такое прокси', summary: isGateway ? 'Два способа направить трафик через это устройство.' : 'Способ направить трафик выбранного приложения через VPN.', paragraphs: isGateway ? [ `Gateway (${host}) заменяет основной шлюз устройства и проводит через VPN весь его интернет-трафик.`, `Gateway Proxy (${host}:${port}) работает точечно: его указывают в браузере, редакторе или другом приложении. Если приложение не умеет работать с прокси, можно использовать ProxyBridge.`, ] : [ `Локальный прокси (${host}:${port}) не перенаправляет приложения автоматически. Каждое приложение должно использовать этот адрес само — напрямую или через ProxyBridge.`, 'HTTP обычно проще для браузеров и редакторов. SOCKS5 подходит приложениям и инструментам, которым нужен более универсальный транспорт.', ], }, { id: 'proxybridge', label: 'Приложения', title: 'ProxyBridge', summary: 'Направляет через прокси отдельные приложения, даже если у них нет своей настройки.', steps: [ { link: ['Установите ProxyBridge', 'https://interceptsuite.com/download/proxybridge'], after: ' с официальной страницы проекта.', }, `Добавьте прокси типа SOCKS5: сервер ${host}, порт ${port}.`, 'Создайте правило, выберите нужное приложение и действие Proxy.', 'Включите ProxyBridge и запустите приложение заново.', ], note: 'Не добавляйте в правило сам ProxyBridge и VPN-клиент: это может создать прокси-цикл.', }, { id: 'switchyomega', label: 'Браузер', title: 'SwitchyOmega', summary: 'Переключает прокси-профили только для браузера.', steps: [ { link: ['Установите расширение', 'https://chromewebstore.google.com/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif'], after: ' и откройте его настройки.', }, 'Создайте профиль Proxy Profile.', `Выберите HTTP, укажите сервер ${host} и порт ${port}.`, 'Создайте профиль Auto Switch, выберите созданный прокси для нужных сайтов, а для остальных оставьте Direct.', 'Если сайт не загрузился, откройте SwitchyOmega: расширение покажет проблемные ресурсы. Добавьте домен текущего сайта в Auto Switch и назначьте ему прокси-профиль.', ], note: 'Проект больше не поддерживается. Используйте его только если расширение уже подходит вашему браузеру.', }, { id: 'vscode', label: 'Редактор', title: 'Visual Studio Code', summary: 'VS Code использует системный прокси или адрес, переданный при запуске.', steps: [ 'Если прокси уже настроен в системе, полностью перезапустите VS Code — обычно он подхватит настройку автоматически.', 'Для отдельного запуска через SOCKS5 используйте команду ниже.', { link: ['Документация VS Code', 'https://code.visualstudio.com/docs/setup/network'], after: ' описывает также системный прокси, HTTP и параметры исключений.', }, ], code: `code --proxy-server="${socksProxy}"`, note: `VS Code не поддерживает логин и пароль для SOCKS5. Здесь прокси ${host}:${port} локальный и без авторизации, поэтому этот вариант подходит. HTTP-адрес ${httpProxy} остаётся альтернативой.`, }, ...(isGateway ? [{ id: 'router', label: 'Вся сеть', title: 'Заменить Gateway в роутере', summary: 'Роутер будет выдавать этот Gateway устройствам как основной шлюз.', steps: [ `Закрепите за Gateway постоянный адрес ${host} в настройках DHCP роутера.`, 'Откройте настройки локальной сети или DHCP. Не меняйте шлюз WAN/интернет-подключения.', `В поле Default Gateway, Router или Основной шлюз укажите ${host}.`, 'Сохраните настройки и переподключите устройства к сети, чтобы они получили новый маршрут.', `Для отката верните в это поле локальный адрес самого роутера вместо ${host}.`, ], note: 'Gateway и устройства должны находиться в одной локальной сети. Сначала проверьте настройку на одном устройстве вручную.', }] : []), ]; }