feat: добавлены компоненты для управления конфигурацией и логами
Добавлены новые компоненты для отображения и управления конфигурацией, логами и правилами маршрутизации. Реализована логика для работы с API, включая запросы на получение и сохранение данных. Также добавлены шаблоны правил и утилиты для валидации. Refs: None
This commit is contained in:
51
README.md
51
README.md
@@ -1,20 +1,25 @@
|
||||
# VPN Proxy Gateway
|
||||
|
||||
Новая версия проекта начинается с `gateway`-режима: контейнер поднимается в `network_mode: host`, применяет TProxy-правила на хосте и запускает `sing-box` как прозрачный gateway для устройств в локальной сети.
|
||||
Контейнер запускается в `network_mode: host`, применяет TProxy-правила на хосте и
|
||||
запускает `sing-box` как прозрачный gateway для устройств в локальной сети.
|
||||
|
||||
## Что уже заложено
|
||||
## Возможности
|
||||
|
||||
- Web UI на Vite + React.
|
||||
- Один простой Node control-server вместо отдельного backend framework.
|
||||
- Web UI на Vite + React, всё на русском.
|
||||
- Один Node control-server без отдельного backend framework.
|
||||
- Парсинг subscription URL: JSON config, base64 список, plain-text VLESS links.
|
||||
- Routing lists управляются из UI: можно отправлять отдельные домены/CIDR/порты в `direct`, `vpn` или `block`.
|
||||
- Генерация `sing-box` config для gateway:
|
||||
- `tproxy` inbound на `7895`;
|
||||
- `mixed` inbound на `8080`;
|
||||
- private IP ranges напрямую;
|
||||
- RU rule sets напрямую;
|
||||
- остальное через выбранный outbound.
|
||||
- Подписка маскируется в UI после загрузки, кнопка «Забыть подписку» — стирает
|
||||
кэш, останавливает sing-box и удаляет конфиг.
|
||||
- Управление жизненным циклом sing-box из UI: остановить, перезапустить, сбросить
|
||||
конфиг, посмотреть сгенерированный `config.json` (read-only).
|
||||
- Live-логи sing-box через SSE (фильтр по уровню, пауза, очистка).
|
||||
- Routing lists с автосохранением, drag-n-drop порядка (first match wins),
|
||||
валидацией CIDR/портов/доменов и шаблонами (LoL, Discord, Telegram, YouTube,
|
||||
Steam, реклама).
|
||||
- Генерация sing-box config с safety private-direct, кастомными правилами и
|
||||
RU geosite/geoip direct.
|
||||
- Docker entrypoint с idempotent TProxy setup/cleanup.
|
||||
- Healthcheck в compose: `curl http://127.0.0.1:${PORT}/api/state`.
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
@@ -25,10 +30,28 @@ docker compose -f docker-compose.gateway.yml up -d --build
|
||||
|
||||
UI будет доступен на хосте по `http://<gateway-host>:3456`.
|
||||
|
||||
## Важные ограничения v0.1
|
||||
## REST API
|
||||
|
||||
| Метод | Путь | Назначение |
|
||||
| --- | --- | --- |
|
||||
| GET | `/api/state` | состояние, список серверов, кастомные правила, masked subscription |
|
||||
| GET | `/api/config` | текущий sing-box config |
|
||||
| GET | `/api/logs` | последние 200 строк логов |
|
||||
| GET | `/api/logs/stream` | SSE-поток логов sing-box |
|
||||
| GET / PUT | `/api/rules` | список кастомных правил |
|
||||
| POST | `/api/subscription/fetch` | загрузить подписку |
|
||||
| DELETE | `/api/subscription` | удалить подписку, остановить sing-box |
|
||||
| POST | `/api/apply` | применить выбранный сервер |
|
||||
| POST | `/api/singbox/{stop,restart,clear}` | управление процессом |
|
||||
|
||||
## Важные ограничения
|
||||
|
||||
- IPv4 TProxy first. IPv6 routing будет отдельным этапом.
|
||||
- DNS-перехват пока не включен. Для корректного gateway-сценария лучше выдать клиентам DNS через роутер/DHCP.
|
||||
- DNS-перехват пока не включен. Для корректного gateway-сценария лучше выдать
|
||||
клиентам DNS через роутер/DHCP.
|
||||
- Контейнер должен запускаться с `network_mode: host`, `NET_ADMIN`, `NET_RAW`.
|
||||
- Mixed proxy по умолчанию слушает `127.0.0.1` (для дома). Чтобы открыть для LAN,
|
||||
установи `PROXY_BIND_IP=0.0.0.0` в `.env`.
|
||||
- Gateway не видит process name на клиентском ПК, поэтому правила для игр
|
||||
задаются через домены, suffix, IP CIDR и порты.
|
||||
- `_archive/` игнорируется git, потому что там лежит старая реализация и runtime state.
|
||||
- Gateway не видит process name на клиентском ПК, поэтому правила для игр задаются через домены, suffix, IP CIDR и порты.
|
||||
|
||||
Reference in New Issue
Block a user