Enhance MTProxy checker by introducing a new -probe mode deep-strict for stricter response validation. Update README and Docker documentation to clarify probing modes, exit codes, and the new MTPROXY_TDLIB_HELPER and MTPROXY_TDLIB_TIMEOUT environment variables for external helper integration. Refactor connection handling and error reporting to improve robustness and clarity in response verification.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# tdlib_ping — официальный JSON-интерфейс TDLib
|
||||
|
||||
Бинарник вызывает **`td_create_client_id` / `td_send` / `td_receive` / `td_execute`** из [`td/telegram/td_json_client.h`](https://github.com/tdlib/td/blob/master/td/telegram/td_json_client.h) (рекомендуемый multi-client API), без Node.js.
|
||||
|
||||
Контракт stdout — одна строка JSON для `mtproxy_checkerd`:
|
||||
|
||||
`{"ok":true,"error":"","exit_code":0}`
|
||||
|
||||
## Сборка
|
||||
|
||||
Linux (Debian/Ubuntu), установите заголовки и библиотеку, например:
|
||||
|
||||
```bash
|
||||
sudo apt-get install -y libtdjson-dev # имя пакета может отличаться по дистрибутиву
|
||||
export CGO_ENABLED=1
|
||||
go build -tags=tdlib -o tdlib_ping ./cmd/tdlib_ping
|
||||
```
|
||||
|
||||
macOS: `brew install tdlib`, затем при необходимости `export PKG_CONFIG_PATH=...` если `pkg-config --libs tdlib` находит `-ltdjson`.
|
||||
|
||||
Без `libtdjson` линковка завершится ошибкой — это ожидаемо.
|
||||
|
||||
Сборка **без** тега (как часть `go build ./...`):
|
||||
|
||||
```bash
|
||||
go build ./cmd/tdlib_ping
|
||||
```
|
||||
|
||||
получится заглушка, которая печатает JSON с `exit_code: 2` и пояснением — чтобы репозиторий собирался без TDLib.
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
| Переменная | По умолчанию | Назначение |
|
||||
|------------|--------------|------------|
|
||||
| `MTPROXY_TD_API_ID` | `12345` | Замените на значение с [my.telegram.org](https://my.telegram.org) |
|
||||
| `MTPROXY_TD_API_HASH` | демо-строка из примера TDLib | Замените на свой `api_hash` |
|
||||
| `MTPROXY_TDLIB_PING_MS` | `45000` | Общий дедлайн цикла (мс) |
|
||||
| `MTPROXY_TDLIB_DATABASE_DIR` | пусто | Если задан — постоянный каталог для `database_directory` / `files_directory` (подкаталоги `db/` и `files/` создаются автоматически). Иначе — временный каталог на каждый запуск |
|
||||
| `MTPROXY_TD_USE_TEST_DC` | пусто | Если `1` — `use_test_dc: true` в `setTdlibParameters` (иногда помогает обойти ожидание телефона на «чистой» БД) |
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
./tdlib_ping 'tg://proxy?server=HOST&port=PORT&secret=HEX'
|
||||
```
|
||||
|
||||
Если **`MTPROXY_TDLIB_DATABASE_DIR`** не задан, каталоги БД TDLib создаются под уникальным префиксом во временном каталоге на каждый запуск (и удаляются после выхода).
|
||||
|
||||
## Ограничение
|
||||
|
||||
При первом запуске с «чистой» БД TDLib может перейти в **`authorizationStateWaitPhoneNumber`**. Тогда helper завершится с ошибкой в JSON — нужен уже проинициализированный `database_directory` или рабочий сценарий входа. Для типичного мониторинга MTProxy на выделенной машине обычно достаточно повторных запусков с фиксированным каталогом (`MTPROXY_TDLIB_DATABASE_DIR`, см. таблицу выше).
|
||||
Reference in New Issue
Block a user