From fe1580cd83cff83eb26922e370c12108d78f7cda Mon Sep 17 00:00:00 2001 From: Flowseal Date: Sun, 4 Oct 2026 15:12:26 +0300 Subject: [PATCH] remove old docs path support --- docs/CfProxy.md | 32 ------------ docs/CfWorker.md | 125 ----------------------------------------------- docs/Funding.md | 11 ----- 3 files changed, 168 deletions(-) delete mode 100644 docs/CfProxy.md delete mode 100644 docs/CfWorker.md delete mode 100644 docs/Funding.md diff --git a/docs/CfProxy.md b/docs/CfProxy.md deleted file mode 100644 index 59830a1..0000000 --- a/docs/CfProxy.md +++ /dev/null @@ -1,32 +0,0 @@ -# Cloudflare-прокси - -Для недоступных дата-центров можно использовать альтернативный бесплатный способ подключения — проксирование через Cloudflare. **Для работы нужен только домен**. В приложении есть домен по умолчанию, но его можно (и желательно) заменить на свой. - -Прокси возвращает доступ к тому, что раньше не загружалось (реакции, некоторые стикеры). Если на аккаунте без Premium не загружаются фото/видео, оставьте в блоке `DC → IP` только `4:149.154.167.220`. Если CF-прокси работает, медиа снова начнет загружаться. - -## Зачем мне настраивать свой домен? - -Cloudflare имеет лимиты на одновременное количество WS-подключений. Домен по умолчанию может перестать работать в любой момент. - -## Настройка своего домена - -1. Добавьте свой домен в Cloudflare (либо купив его напрямую у Cloudflare, либо изменив NS-серверы: https://developers.cloudflare.com/dns/zone-setups/full-setup/setup/). Домены стоят примерно 150 рублей в год, подойдёт любой. - -2. В `SSL/TLS` → `Overview` выставьте режим **Flexible**. - -3. В `DNS` → `Records` добавьте следующие `A`-записи через `+ Add Record`: -- Name=`kws1` IPv4=`149.154.175.50` -- Name=`kws2` IPv4=`149.154.167.51` -- Name=`kws3` IPv4=`149.154.175.100` -- Name=`kws4` IPv4=`149.154.167.91` -- Name=`kws5` IPv4=`149.154.171.5` -- Name=`kws203` IPv4=`91.105.192.100` - -4. **Добавьте домен в [zapret](https://github.com/Flowseal/zapret-discord-youtube/) или в любое другое ПО, так как подсеть Cloudflare может быть заблокирована (например, в России).** - -5. В настройках `TgWsProxy` замените домен на свой. - -## Благодарности - -- Идея: https://github.com/Nekogram/WSProxy -- Спасибо [@UjuiUjuMandan](https://github.com/UjuiUjuMandan) за информацию. \ No newline at end of file diff --git a/docs/CfWorker.md b/docs/CfWorker.md deleted file mode 100644 index 9ad1d59..0000000 --- a/docs/CfWorker.md +++ /dev/null @@ -1,125 +0,0 @@ -# Cloudflare Worker - -Альтернативный (полностью бесплатный, не нужно покупать домен в отличии от [CfProxy](./CfProxy.md)) способ проксирования. - -Прокси возвращает доступ к тому, что раньше не загружалось (реакции, некоторые стикеры). Если на аккаунте без Premium с данным способом все еще не загружаются фото/видео, оставьте в блоке `DC → IP` только `4:149.154.167.220` - -## - -1. **Добавьте в [zapret](https://github.com/Flowseal/zapret-discord-youtube/) или в любое другое ПО следующие домены:** -``` -cloudflare.com -cloudflare.dev -workers.dev -``` -2. Создайте аккаунт в [Cloudflare](https://dash.cloudflare.com/) (или войдите в существующий) - * **После создания аккаунта подтвердите почту с помощью письма, который вам пришел на email** -3. Слева в панели выберите `Compute` → `Workers & Pages` - image - -4. Нажмите сверху справа кнопку **`Create application`** → `Start with Hello World!` → `Deploy` - image - image - image - -5. Сверху справа нажмите кнопку **`Edit code`**, замените код слева на тот, [что находится внизу этой страницы](./CfWorker.md#код-workerа) - * Если у вас не загружается код, то вы не выполнили первый пункт - image - image - - -6. Нажмите сверху справа кнопку **`Deploy`** - image - -7. Скопируйте домен из поля справа и укажите его в настройках **Cloudflare Worker** (или через аргумент `--cfproxy-worker-domain`) - * Пример домена: `random-symbols-1234.username.workers.dev` - * **Можно указывать несколько доменов через запятую (или повторением аргумента `--cfproxy-worker-domain`)** - image - - -### Код Worker'а -```javascript -import { connect } from "cloudflare:sockets"; - -function toBytes(data) { - if (data instanceof ArrayBuffer) { - return new Uint8Array(data); - } - if (typeof data === "string") { - return new TextEncoder().encode(data); - } - if (data && typeof data.arrayBuffer === "function") { - return data.arrayBuffer().then((ab) => new Uint8Array(ab)); - } - return new Uint8Array(); -} - -export default { - async fetch(request) { - if ((request.headers.get("Upgrade") || "").toLowerCase() !== "websocket") { - return new Response("Expected websocket", { status: 426 }); - } - - const url = new URL(request.url); - if (url.pathname !== "/apiws") { - return new Response("Not found", { status: 404 }); - } - - const dst = url.searchParams.get("dst"); - const pair = new WebSocketPair(); - const client = pair[0]; - const server = pair[1]; - server.accept(); - - const socket = connect({ hostname: dst, port: 443 }); - const tcpReader = socket.readable.getReader(); - const tcpWriter = socket.writable.getWriter(); - - server.addEventListener("message", async (event) => { - try { - await tcpWriter.write(await toBytes(event.data)); - } catch { - try { - server.close(1011, "tcp write failed"); - } catch {} - } - }); - - server.addEventListener("close", async () => { - try { - await tcpWriter.close(); - } catch {} - try { - socket.close(); - } catch {} - }); - - (async () => { - try { - while (true) { - const { value, done } = await tcpReader.read(); - if (done) { - break; - } - if (value) { - server.send(value); - } - } - } catch { - } finally { - try { - server.close(); - } catch {} - try { - tcpReader.releaseLock(); - } catch {} - try { - socket.close(); - } catch {} - } - })(); - - return new Response(null, { status: 101, webSocket: client }); - }, -}; -``` diff --git a/docs/Funding.md b/docs/Funding.md deleted file mode 100644 index d940bec..0000000 --- a/docs/Funding.md +++ /dev/null @@ -1,11 +0,0 @@ -> [!TIP] -> -> ### 🎉 Поддержать меня -> -> **USDT (TRC20)**: `TXPnKs2Ww1RD8JN6nChFUVmi5r2hqrWjuu` -> **BTC**: `bc1qr8vd6jelkyyry3m4mq6z5txdx4pl856fu6ss0w` -> **ETH**: `0x1417878fdc5047E670a77748B34819b9A49C72F1` - -Проект полностью бесплатен для всех. -Однако его развитие и стабильная работа при росте числа пользователей требуют вложений. -Буду благодарен за любую форму поддержки! Спасибо ❤️ \ No newline at end of file