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