Rename gateway proxy labels and update window title
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
Один компактный VPN-клиент в двух режимах:
|
||||
|
||||
- `gateway` — отдельная Linux-машина принимает трафик устройств как системный Gateway или Local HTTP/SOCKS5 Proxy;
|
||||
- `gateway` — отдельная Linux-машина принимает трафик устройств как системный Gateway или Gateway HTTP/SOCKS5 Proxy;
|
||||
- `client` — локальный proxy-клиент для macOS.
|
||||
|
||||
В обоих режимах пользователь добавляет подписку, выбирает сервер и включает VPN на одном экране.
|
||||
@@ -19,9 +19,9 @@ docker compose -f docker-compose.gateway.yml up -d --build
|
||||
После подключения экран показывает:
|
||||
|
||||
- `Gateway` — адрес, который можно назначить устройству как основной шлюз;
|
||||
- `Local Proxy` — один адрес на порту `8080`, доступный как `HTTP` и `SOCKS5`.
|
||||
- `Gateway Proxy` — один адрес на порту `8080`, доступный как `HTTP` и `SOCKS5`.
|
||||
|
||||
Когда VPN включён, публичный трафик Gateway и Local Proxy идёт через выбранный sing-box outbound. Когда VPN выключен, TProxy-перехват снимается и Gateway продолжает работать напрямую через kernel forwarding/NAT без прохода через sing-box.
|
||||
Когда VPN включён, публичный трафик Gateway и Gateway Proxy идёт через выбранный sing-box outbound. Когда VPN выключен, TProxy-перехват снимается и Gateway продолжает работать напрямую через kernel forwarding/NAT без прохода через sing-box.
|
||||
|
||||
Proxy по умолчанию разрешён только из приватных сетей. Диапазоны задаются через `PROXY_ALLOWED_CIDRS`.
|
||||
|
||||
|
||||
@@ -25,6 +25,10 @@ function App() {
|
||||
return () => clearInterval(timer);
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (state?.mode) document.title = state.mode === 'gateway' ? 'Gateway' : 'Proxy';
|
||||
}, [state?.mode]);
|
||||
|
||||
async function run(action) {
|
||||
setBusy(true);
|
||||
setError('');
|
||||
|
||||
@@ -225,12 +225,12 @@ export function ClientOverviewPage({
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section className={`client-proxies${isGateway ? ' has-tabs' : ''}`} aria-label={isGateway ? 'Gateway и Local Proxy' : 'Локальный прокси'}>
|
||||
<section className={`client-proxies${isGateway ? ' has-tabs' : ''}`} aria-label={isGateway ? 'Gateway и Gateway Proxy' : 'Локальный прокси'}>
|
||||
{isGateway && (
|
||||
<div className="client-access-tabs" role="tablist" aria-label="Способ подключения">
|
||||
{[
|
||||
['gateway', 'Gateway'],
|
||||
['proxy', 'Local Proxy'],
|
||||
['proxy', 'Gateway Proxy'],
|
||||
].map(([tab, label]) => (
|
||||
<button
|
||||
className={`client-access-tab${accessTab === tab ? ' is-active' : ''}`}
|
||||
|
||||
Reference in New Issue
Block a user