[PR #1163] [CLOSED] Add outbound proxy #95

Closed
opened 2026-07-30 21:17:30 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/1163
Author: @efkot-dev
Created: 7/29/2026
Status: ❌ Closed

Base: main ← Head: add-outbound-proxy


📝 Commits (10+)

  • 52e5d88 feat: add outbound SOCKS5/HTTP proxy support (GUI & CLI)
  • 7396ebe Update README.md
  • 40e108b feat(outbound): proxy test button, docs, harden connect timeouts
  • 50c15d9 feat: relay byte-pipe fallback (HTTP long-poll, last in chain; requires outbound proxy on corp net)
  • c6bf5b9 relay: long-poll via --relay-url/--relay-token + --relay-only + chunked decode fix
  • fc7cbf2 Create Dockerfile
  • c86344d Add files via upload
  • 26412eb Add files via upload
  • 84693da Create main.yml
  • 9a11603 Add files via upload

📊 Changes

20 files changed (+1028 additions, -21 deletions)

View changed files

➕ .github/workflows/docker_build.yml (+25 -0)
➕ .github/workflows/main.yml (+1 -0)
➕ RelTg/Dockerfile (+9 -0)
➕ RelTg/go.mod (+3 -0)
➕ RelTg/main.go (+330 -0)
➕ docs/OutboundProxy.md (+63 -0)
📝 docs/README.md (+1 -1)
📝 proxy/bridge.py (+95 -8)
📝 proxy/config.py (+19 -2)
➕ proxy/outbound_test.py (+54 -0)
📝 proxy/raw_websocket.py (+16 -8)
➕ proxy/relay_client.py (+162 -0)
📝 proxy/stats.py (+2 -0)
📝 proxy/tg_ws_proxy.py (+25 -0)
📝 pyproject.toml (+1 -0)
📝 ui/ctk_tray_ui.py (+173 -0)
📝 ui/i18n/en.json (+19 -1)
📝 ui/i18n/ru.json (+19 -1)
📝 utils/default_config.py (+5 -0)
📝 utils/tray_common.py (+6 -0)

📄 Description

Что делает

Добавляет исходящий (outbound) прокси для всех внешних соединений прокси-сервера:
WSS к датацентрам Telegram, TCP-fallback, Cloudflare Worker и Cloudflare Proxy.
Поддержаны socks5 и http (CONNECT), опциональная авторизация логин/пароль.

Relates #861

Скоуп (осознанно)

Реализовано: CLI-флаги --proxy-type/--proxy-host/--proxy-port/--proxy-user/--proxy-pass,
секция настроек в GUI с кнопкой «Тест», применение прокси во всех исходящих путях.
НЕ реализовано в этом PR (предлагаю как follow-up): авто-чтение переменных окружения
http_proxy/https_proxy и поддержка no_proxy из #861.

Как настроено

  • GUI: секция «Исходящий прокси» (Тип/Host/Port/Логин/Пароль) + кнопка «Тест»,
    которая повторяет боевой путь (SOCKS5/HTTP CONNECT к IP датацентра на 443).
  • CLI: флаги выше; при пустом типе/хосте прокси не используется.
  • Документация: docs/OutboundProxy.md + строка в навигации README.

Что проверено

  • С заданным прокси: трафик идёт через него (WS и fallback).
  • Без прокси: обычная маршрутизация и fronting работают без регрессий.
  • Кнопка «Тест»: корректно классифицирует таймаут / ошибку авторизации /
    отказ прокси в CONNECT / недоступность.

Файлы

  • proxy/config.py — get_outbound_proxy(), поля конфига.
  • proxy/raw_websocket.py — прокси в connect() (обе ветки под wait_for).
  • proxy/bridge.py — прокси в _tcp_fallback.
  • proxy/tg_ws_proxy.py — CLI-флаги.
  • proxy/outbound_test.py — логика кнопки «Тест».
  • ui/ctk_tray_ui.py — секция настроек + кнопка «Тест».
  • ui/ru.json, ui/en.json — i18n-ключи.
  • docs/OutboundProxy.md, README.md — документация и навигация.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Flowseal/tg-ws-proxy/pull/1163 **Author:** [@efkot-dev](https://github.com/efkot-dev) **Created:** 7/29/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `add-outbound-proxy` --- ### 📝 Commits (10+) - [`52e5d88`](https://github.com/Flowseal/tg-ws-proxy/commit/52e5d88a9df6daf60f299a5454107a111f629178) feat: add outbound SOCKS5/HTTP proxy support (GUI & CLI) - [`7396ebe`](https://github.com/Flowseal/tg-ws-proxy/commit/7396ebe39169fe3cbec941b309b6063f2c02a756) Update README.md - [`40e108b`](https://github.com/Flowseal/tg-ws-proxy/commit/40e108bc43b1e2d5908d0b5ba0177b94f64e31c7) feat(outbound): proxy test button, docs, harden connect timeouts - [`50c15d9`](https://github.com/Flowseal/tg-ws-proxy/commit/50c15d935ada95c964bd04657c7714f7fd165452) feat: relay byte-pipe fallback (HTTP long-poll, last in chain; requires outbound proxy on corp net) - [`c6bf5b9`](https://github.com/Flowseal/tg-ws-proxy/commit/c6bf5b9fd61851e1a572f0446abbae22c46606f7) relay: long-poll via --relay-url/--relay-token + --relay-only + chunked decode fix - [`fc7cbf2`](https://github.com/Flowseal/tg-ws-proxy/commit/fc7cbf2c7aa375413b69341c3905ec46988cf253) Create Dockerfile - [`c86344d`](https://github.com/Flowseal/tg-ws-proxy/commit/c86344d5b573d4cda5f31d32921d17e61db99c6a) Add files via upload - [`26412eb`](https://github.com/Flowseal/tg-ws-proxy/commit/26412ebff2b83d6accc5d2730a3cb488aa3d49d1) Add files via upload - [`84693da`](https://github.com/Flowseal/tg-ws-proxy/commit/84693da1fc9b849cd743d8951a0849ba550f474e) Create main.yml - [`9a11603`](https://github.com/Flowseal/tg-ws-proxy/commit/9a11603bd62be80a010beedfbb7ac5a1761cea05) Add files via upload ### 📊 Changes **20 files changed** (+1028 additions, -21 deletions) <details> <summary>View changed files</summary> ➕ `.github/workflows/docker_build.yml` (+25 -0) ➕ `.github/workflows/main.yml` (+1 -0) ➕ `RelTg/Dockerfile` (+9 -0) ➕ `RelTg/go.mod` (+3 -0) ➕ `RelTg/main.go` (+330 -0) ➕ `docs/OutboundProxy.md` (+63 -0) 📝 `docs/README.md` (+1 -1) 📝 `proxy/bridge.py` (+95 -8) 📝 `proxy/config.py` (+19 -2) ➕ `proxy/outbound_test.py` (+54 -0) 📝 `proxy/raw_websocket.py` (+16 -8) ➕ `proxy/relay_client.py` (+162 -0) 📝 `proxy/stats.py` (+2 -0) 📝 `proxy/tg_ws_proxy.py` (+25 -0) 📝 `pyproject.toml` (+1 -0) 📝 `ui/ctk_tray_ui.py` (+173 -0) 📝 `ui/i18n/en.json` (+19 -1) 📝 `ui/i18n/ru.json` (+19 -1) 📝 `utils/default_config.py` (+5 -0) 📝 `utils/tray_common.py` (+6 -0) </details> ### 📄 Description ## Что делает Добавляет исходящий (outbound) прокси для всех внешних соединений прокси-сервера: WSS к датацентрам Telegram, TCP-fallback, Cloudflare Worker и Cloudflare Proxy. Поддержаны `socks5` и `http` (CONNECT), опциональная авторизация логин/пароль. Relates #861 ## Скоуп (осознанно) Реализовано: CLI-флаги `--proxy-type/--proxy-host/--proxy-port/--proxy-user/--proxy-pass`, секция настроек в GUI с кнопкой «Тест», применение прокси во всех исходящих путях. НЕ реализовано в этом PR (предлагаю как follow-up): авто-чтение переменных окружения `http_proxy`/`https_proxy` и поддержка `no_proxy` из #861. ## Как настроено - GUI: секция «Исходящий прокси» (Тип/Host/Port/Логин/Пароль) + кнопка «Тест», которая повторяет боевой путь (`SOCKS5`/`HTTP CONNECT` к IP датацентра на 443). - CLI: флаги выше; при пустом типе/хосте прокси не используется. - Документация: `docs/OutboundProxy.md` + строка в навигации README. ## Что проверено - С заданным прокси: трафик идёт через него (WS и fallback). - Без прокси: обычная маршрутизация и fronting работают без регрессий. - Кнопка «Тест»: корректно классифицирует таймаут / ошибку авторизации / отказ прокси в CONNECT / недоступность. ## Файлы - `proxy/config.py` — `get_outbound_proxy()`, поля конфига. - `proxy/raw_websocket.py` — прокси в `connect()` (обе ветки под `wait_for`). - `proxy/bridge.py` — прокси в `_tcp_fallback`. - `proxy/tg_ws_proxy.py` — CLI-флаги. - `proxy/outbound_test.py` — логика кнопки «Тест». - `ui/ctk_tray_ui.py` — секция настроек + кнопка «Тест». - `ui/ru.json`, `ui/en.json` — i18n-ключи. - `docs/OutboundProxy.md`, `README.md` — документация и навигация. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror-bot added the pull-request label 2026-07-30 21:17:30 +03:00
mirror-bot changed title from [PR #1163] Add outbound proxy to [PR #1163] [CLOSED] Add outbound proxy 2026-08-02 15:15:38 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Utilities/tg-ws-proxy#95