mirror of
https://github.com/Flowseal/tg-ws-proxy.git
synced 2026-11-01 07:56:58 +03:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50d539c718 | ||
|
|
694077ef7d | ||
|
|
87a9320e61 | ||
|
|
86191badf4 | ||
|
|
19cdbd9d6f | ||
|
|
dc2c4c03f6 |
No files matched your search
@@ -0,0 +1,23 @@
|
||||
### Проверьте две вещи:
|
||||
- вы на последней версии: [Releases](https://github.com/Flowseal/tg-ws-proxy/releases)
|
||||
- запускали по инструкции для своей ОС: [Быстрый старт](https://github.com/Flowseal/tg-ws-proxy#навигация)
|
||||
|
||||
## Решение частых проблем:
|
||||
|
||||
**Q**: Не запускается, падает с ошибкой, не работает как раньше после обновления?
|
||||
**A**:
|
||||
1. Удалите всё в папке Temp (или хотя бы всё, что начинается с _MEI)
|
||||
2. Запускайте от имени админа
|
||||
3. Попробуйте Win7 версию (если вы пользователь Windows)
|
||||
4. Попробуйте отключить антивирус (если помогло, то добавьте exe в исключения). Не забудьте включить антивирус обратно.
|
||||
|
||||
###
|
||||
|
||||
**Q**: Не грузит медиа? (фото/видео/стикеры)
|
||||
**A**: Удалите в настройках прокси в поле **DC → IP** всё, кроме `4:149.154.167.220`. Если это не помогло, полностью очистите это поле.
|
||||
|
||||
|
||||
#### Если проблема решена, то закройте Issue
|
||||
|
||||
### Если проблема осталась, пожалуйста, приложите по возможности логи.
|
||||
Сделать это можно через иконку в трее -> Пкм -> Открыть логи. Сохраните логи в файл и приложите его сюда.
|
||||
@@ -0,0 +1,10 @@
|
||||
## У вас не включен CF-прокси, включите его в настройках.
|
||||
|
||||
Если в логах будет **TimeoutError**, то:
|
||||
|
||||
Timeout error при CF-прокси - проблема с вашей стороны. РКН/сторонние впны/прокси и т.п.
|
||||
|
||||
1. Попробуйте поставить галочку "Выключить TLS для CF-прокси и CF-worker" в настройках. Если не поможет, уберите.
|
||||
2. Если используете запрет, попробуйте его выключить и проверьте работу. Если работает, то добавьте в файл `list-exclude-user`: **`co.uk`**
|
||||
3. Если не помогло, то уберите запись из прошлого пункта и добавьте в файл `list-general-user`: **`co.uk`**
|
||||
4. Попробуйте настроить https://github.com/Flowseal/tg-ws-proxy/blob/main/docs/RU/CfWorker.md
|
||||
@@ -0,0 +1,4 @@
|
||||
Проверьте включенли WARP/VPN, если выключены то:
|
||||
|
||||
1. Если используете запрет, добавьте в файл `list-general-user`: **`co.uk`**
|
||||
2. Попробуйте настроить https://github.com/Flowseal/tg-ws-proxy/blob/main/docs/RU/CfWorker.md
|
||||
@@ -0,0 +1,5 @@
|
||||
Timeout error при CF-прокси - проблема с вашей стороны. РКН/сторонние впны/прокси и т.п.
|
||||
|
||||
1. Попробуйте поставить галочку "Выключить TLS для CF-прокси и CF-worker" в настройках. Если не поможет, уберите.
|
||||
2. Если используете запрет, попробуйте его выключить и проверьте работу. Если работает, то добавьте в файл `list-exclude-user`: **`co.uk`**
|
||||
3. Если не помогло, то уберите запись из прошлого пункта и добавьте в файл `list-general-user`: **`co.uk`**
|
||||
@@ -0,0 +1,6 @@
|
||||
Timeout error при CF-прокси - проблема с вашей стороны. РКН/сторонние впны/прокси и т.п.
|
||||
|
||||
1. Попробуйте поставить галочку "Выключить TLS для CF-прокси и CF-worker" в настройках. Если не поможет, уберите.
|
||||
2. Если используете запрет, попробуйте его выключить и проверьте работу. Если работает, то добавьте в файл `list-exclude-user`: **`co.uk`**
|
||||
3. Если не помогло, то уберите запись из прошлого пункта и добавьте в файл `list-general-user`: **`co.uk`**
|
||||
4. Попробуйте настроить https://github.com/Flowseal/tg-ws-proxy/blob/main/docs/RU/CfWorker.md
|
||||
@@ -0,0 +1,3 @@
|
||||
Указан **неверный секрет** в настройках прокси в телеграме
|
||||
|
||||
`Лкм` по иконке в трее -> **Открыть в Telegram**
|
||||
@@ -0,0 +1,65 @@
|
||||
import os
|
||||
from time import sleep
|
||||
import urllib.request as request
|
||||
|
||||
url = os.environ["LOG_URL"]
|
||||
path_answer = ".github/scripts/answers"
|
||||
|
||||
for _ in range(0,3):
|
||||
try:
|
||||
with request.urlopen(url,timeout=30.0) as r:
|
||||
log_bytes = r.read()
|
||||
break
|
||||
except Exception:
|
||||
sleep(5.0)
|
||||
else:
|
||||
print(str(path_answer + "/default.md"))
|
||||
exit()
|
||||
|
||||
log_old = log_bytes.decode("utf-8",errors="replace").splitlines()
|
||||
|
||||
worker_end = False
|
||||
cfproxy_end = False
|
||||
|
||||
log = []
|
||||
for line in reversed(log_old):
|
||||
line = line[20:]
|
||||
log.append(line)
|
||||
if "CF proxy: enabled" in line:
|
||||
cfproxy_end = True
|
||||
elif "CF worker: enabled" in line:
|
||||
worker_end = True
|
||||
elif "INFO tg-ws-tray Starting proxy" in line:
|
||||
break
|
||||
|
||||
secret_false = 0
|
||||
timeouterror = 0
|
||||
reset_error = 0
|
||||
|
||||
for line in log :
|
||||
if "(wrong secret or proto)" in line:
|
||||
secret_false += 1
|
||||
if secret_false >= 10:
|
||||
print(str(path_answer + "/wrong_secret.md"))
|
||||
break
|
||||
elif "TimeoutError" in line:
|
||||
timeouterror += 1
|
||||
if timeouterror >= 20:
|
||||
if cfproxy_end is False:
|
||||
print(str(path_answer + "/no_cfproxy.md"))
|
||||
break
|
||||
if worker_end is False:
|
||||
print(str(path_answer + "/timeout_no_worker.md"))
|
||||
else:
|
||||
print(str(path_answer + "/timeout.md"))
|
||||
break
|
||||
elif "ConnectionResetError" in line:
|
||||
reset_error += 1
|
||||
if reset_error >= 20:
|
||||
print(str(path_answer + "/reset_error.md"))
|
||||
break
|
||||
else:
|
||||
if cfproxy_end is True:
|
||||
print(str(path_answer + "/default.md"))
|
||||
else:
|
||||
print(str(path_answer + "/no_cfproxy.md"))
|
||||
@@ -664,7 +664,7 @@ jobs:
|
||||
|
||||
> [!TIP]
|
||||
> Не можете скачать?
|
||||
> Добавьте `185.199.109.133 release-assets.githubusercontent.com` в hosts или воспользуйтесь зеркалом: https://sourceforge.net/projects/tg-ws-proxy.mirror/files/
|
||||
> Воспользуйтесь зеркалом: https://sourceforge.net/projects/tg-ws-proxy.mirror/files/
|
||||
files: |
|
||||
dist/TgWsProxy_windows.exe
|
||||
dist/TgWsProxy_windows_arm64.exe
|
||||
|
||||
@@ -6,37 +6,54 @@ on:
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
comment:
|
||||
if: contains(github.event.issue.labels.*.name, 'bug')
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check for availability log file
|
||||
id: log
|
||||
env:
|
||||
ISSUE_BODY: ${{ github.event.issue.body }}
|
||||
run: |
|
||||
if [[ "$ISSUE_BODY" =~ (https://github\.com/user-attachments/files/[^[:space:]]+\.log) ]]; then
|
||||
echo "found=true" >> "$GITHUB_OUTPUT"
|
||||
echo "url=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT"
|
||||
echo "Log file found"
|
||||
else
|
||||
echo "found=false" >> "$GITHUB_OUTPUT"
|
||||
echo "Log file not found"
|
||||
fi
|
||||
|
||||
- name: Install python
|
||||
if: steps.log.outputs.found == 'true'
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.14"
|
||||
|
||||
- name: Clone folder
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/scripts/*
|
||||
sparse-checkout-cone-mode: false
|
||||
|
||||
- name: Start check log
|
||||
if: steps.log.outputs.found == 'true'
|
||||
id: comment
|
||||
env:
|
||||
LOG_URL: ${{ steps.log.outputs.url }}
|
||||
run: |
|
||||
{
|
||||
echo "com<<EOF"
|
||||
python .github/scripts/check_log.py
|
||||
echo "EOF"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Comment on new issue
|
||||
uses: peter-evans/create-or-update-comment@v5
|
||||
with:
|
||||
issue-number: ${{ github.event.issue.number }}
|
||||
body: |
|
||||
### Проверьте две вещи:
|
||||
- вы на последней версии: [Releases](https://github.com/Flowseal/tg-ws-proxy/releases)
|
||||
- запускали по инструкции для своей ОС: [Быстрый старт](https://github.com/Flowseal/tg-ws-proxy#навигация)
|
||||
|
||||
## Решение частых проблем:
|
||||
|
||||
**Q**: Не запускается, падает с ошибкой, не работает как раньше после обновления?
|
||||
**A**:
|
||||
1. Удалите всё в папке Temp (или хотя бы всё, что начинается с _MEI)
|
||||
2. Запускайте от имени админа
|
||||
3. Попробуйте Win7 версию (если вы пользователь Windows)
|
||||
4. Попробуйте отключить антивирус (если помогло, то добавьте exe в исключения). Не забудьте включить антивирус обратно.
|
||||
|
||||
###
|
||||
|
||||
**Q**: Не грузит медиа? (фото/видео/стикеры)
|
||||
**A**: Удалите в настройках прокси в поле **DC → IP** всё, кроме `4:149.154.167.220`. Если это не помогло, полностью очистите это поле.
|
||||
|
||||
|
||||
#### Если проблема решена, то закройте Issue
|
||||
|
||||
### Если проблема осталась, пожалуйста, приложите по возможности логи.
|
||||
Сделать это можно через иконку в трее -> Пкм -> Открыть логи. Сохраните логи в файл и приложите его сюда.
|
||||
body-path: ${{ steps.log.outputs.found == 'true' && steps.comment.outputs.com || '.github/scripts/answers/default.md' }}
|
||||
+13
-1
@@ -45,5 +45,17 @@ USER app
|
||||
|
||||
EXPOSE 1443/tcp
|
||||
|
||||
ENTRYPOINT ["/usr/bin/tini", "--", "/bin/sh", "-lc", "set -eu; args=\"--host ${TG_WS_PROXY_HOST} --port ${TG_WS_PROXY_PORT}\"; for dc in ${TG_WS_PROXY_DC_IPS}; do args=\"$args --dc-ip $dc\"; done; if [ -n \"${TG_WS_PROXY_SECRET}\" ]; then args=\"$args --secret ${TG_WS_PROXY_SECRET}\"; fi; if [ -n \"${TG_WS_PROXY_CF_WORKER}\" ]; then args=\"$args --cfproxy-worker-domain ${TG_WS_PROXY_CF_WORKER}\"; fi; if [ \"${TG_WS_PROXY_NO_SECURE}\" = \"True\" ]; then args=\"$args --no-secure \"; fi; exec /opt/venv/bin/python -u proxy/tg_ws_proxy.py $args \"$@\"", "--"]
|
||||
ENTRYPOINT ["/usr/bin/tini", "--", "/bin/sh", "-lc", "set -eu; args=\"\
|
||||
--host ${TG_WS_PROXY_HOST} \
|
||||
--port ${TG_WS_PROXY_PORT}\"; \
|
||||
for dc in ${TG_WS_PROXY_DC_IPS}; \
|
||||
do args=\"$args --dc-ip $dc\"; \
|
||||
done; \
|
||||
if [ -n \"${TG_WS_PROXY_SECRET}\" ]; \
|
||||
then args=\"$args --secret ${TG_WS_PROXY_SECRET}\"; fi; \
|
||||
if [ -n \"${TG_WS_PROXY_CF_WORKER}\" ]; \
|
||||
then args=\"$args --cfproxy-worker-domain ${TG_WS_PROXY_CF_WORKER}\"; fi; \
|
||||
if [ \"${TG_WS_PROXY_NO_SECURE}\" = \"True\" ]; \
|
||||
then args=\"$args --no-secure \"; fi; \
|
||||
exec /opt/venv/bin/python -u proxy/tg_ws_proxy.py $args \"$@\"", "--"]
|
||||
CMD []
|
||||
+2
-1
@@ -12,6 +12,7 @@ import logging
|
||||
|
||||
from typing import Dict, FrozenSet, NamedTuple, Optional, Tuple
|
||||
from .stats import stats
|
||||
from .utils import set_x25519
|
||||
|
||||
try:
|
||||
from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey
|
||||
@@ -272,7 +273,7 @@ async def probe_appdata_len(domain: str, port: int = 443,
|
||||
writer = None
|
||||
try:
|
||||
ctx = ssl.create_default_context()
|
||||
ctx.set_ecdh_curve('X25519')
|
||||
set_x25519(ctx)
|
||||
ctx.check_hostname = False
|
||||
ctx.verify_mode = ssl.CERT_NONE
|
||||
ctx.minimum_version = ssl.TLSVersion.TLSv1_3
|
||||
|
||||
@@ -695,7 +695,6 @@ def main():
|
||||
log_max_mb=args.log_max_mb,
|
||||
backups=args.log_backups,
|
||||
)
|
||||
fh.setFormatter(log_fmt)
|
||||
fh.addFilter(DomainCensorFilter())
|
||||
root.addHandler(fh)
|
||||
|
||||
|
||||
+8
-1
@@ -143,13 +143,20 @@ class _PinnedHTTPSHandler(urllib.request.HTTPSHandler):
|
||||
return super().https_open(req)
|
||||
|
||||
|
||||
def set_x25519(context: ssl.SSLContext) -> None:
|
||||
try:
|
||||
context.set_ecdh_curve('X25519')
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def create_ssl_context(*, check_hostname: bool = True) -> ssl.SSLContext:
|
||||
bundle_dir = getattr(sys, '_MEIPASS', None)
|
||||
cafile = (os.path.join(bundle_dir, 'certifi', 'cacert.pem')
|
||||
if bundle_dir else certifi.where())
|
||||
context = ssl.create_default_context(cafile=cafile)
|
||||
context.load_default_certs()
|
||||
context.set_ecdh_curve('X25519')
|
||||
set_x25519(context)
|
||||
context.check_hostname = check_hostname
|
||||
return context
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Shared construction of the rotating log file handler.
|
||||
"""Shared construction and formatting of the rotating log file handler.
|
||||
|
||||
Centralizes the rotation invariant so both the tray and the CLI log paths
|
||||
behave identically and the file can never grow without bound (issue #885).
|
||||
@@ -31,9 +31,14 @@ def build_log_handler(
|
||||
"""
|
||||
max_bytes = max(_MIN_BYTES, int(log_max_mb * 1024 * 1024))
|
||||
backup_count = max(_MIN_BACKUPS, int(backups))
|
||||
return logging.handlers.RotatingFileHandler(
|
||||
handler = logging.handlers.RotatingFileHandler(
|
||||
path,
|
||||
maxBytes=max_bytes,
|
||||
backupCount=backup_count,
|
||||
encoding="utf-8",
|
||||
)
|
||||
handler.setFormatter(logging.Formatter(
|
||||
"%(asctime)s %(levelname)-5s %(name)s %(message)s",
|
||||
datefmt="%Y-%m-%d %H:%M:%S",
|
||||
))
|
||||
return handler
|
||||
@@ -225,7 +225,6 @@ def save_config(cfg: dict) -> None:
|
||||
|
||||
# logging
|
||||
|
||||
_LOG_FMT_FILE = "%(asctime)s %(levelname)-5s %(name)s %(message)s"
|
||||
_LOG_FMT_CONSOLE = "%(asctime)s %(levelname)-5s %(message)s"
|
||||
|
||||
|
||||
@@ -238,7 +237,6 @@ def setup_logging(verbose: bool = False, log_max_mb: float = 5) -> None:
|
||||
|
||||
fh = build_log_handler(str(LOG_FILE), log_max_mb=log_max_mb, backups=1)
|
||||
fh.setLevel(logging.DEBUG)
|
||||
fh.setFormatter(logging.Formatter(_LOG_FMT_FILE, datefmt="%Y-%m-%d %H:%M:%S"))
|
||||
fh.addFilter(DomainCensorFilter())
|
||||
root.addHandler(fh)
|
||||
|
||||
|
||||
Reference in new issue
Block a user