mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-05 19:28:46 +02:00
63 lines
2 KiB
Markdown
63 lines
2 KiB
Markdown
# tgcalls CLI: UDP Reflector Mode
|
|
|
|
## Overview
|
|
|
|
Add a `--mode reflector` option to the tgcalls CLI test tool, routing both call instances through a real Telegram UDP reflector instead of direct P2P loopback.
|
|
|
|
## CLI Interface
|
|
|
|
- `--mode p2p` — current behavior (direct P2P loopback, no servers)
|
|
- `--mode reflector` — route through a real Telegram UDP reflector
|
|
- `--mode` is **required**. Exit with usage error if missing.
|
|
- `--reflector host:port` — specifies the reflector address. **Required** when `--mode reflector`. Error if missing in reflector mode or if provided with `--mode p2p`.
|
|
- `--duration` and `--quiet` are unchanged.
|
|
|
|
## Reflector Configuration
|
|
|
|
When `--mode reflector`:
|
|
|
|
### Peer Tag Generation
|
|
|
|
Generate 16 random bytes. Copy to make two tags:
|
|
- Caller tag: byte 0 = `0x00`
|
|
- Callee tag: byte 0 = `0x01`
|
|
|
|
### RtcServer Setup
|
|
|
|
Each instance gets one `RtcServer` entry with its respective peer tag:
|
|
|
|
| Field | Value |
|
|
|------------|------------------------------------------------|
|
|
| `id` | `1` |
|
|
| `host` | from `--reflector` argument |
|
|
| `port` | from `--reflector` argument |
|
|
| `login` | `"reflector"` |
|
|
| `password` | hex-encoded 16-byte peer tag (differs by side) |
|
|
| `isTurn` | `true` |
|
|
| `isTcp` | `false` |
|
|
|
|
### Descriptor Changes
|
|
|
|
- `config.enableP2P = false`
|
|
- `rtcServers` populated with the single reflector server
|
|
- No `customParameters` changes (standalone reflector mode is not used)
|
|
|
|
### P2P Mode
|
|
|
|
Unchanged from current behavior: `enableP2P = true`, empty `rtcServers`.
|
|
|
|
## Summary Output
|
|
|
|
Add a mode line to the call summary:
|
|
|
|
```
|
|
Mode: reflector (91.108.13.2:596)
|
|
```
|
|
|
|
or:
|
|
|
|
```
|
|
Mode: p2p
|
|
```
|
|
|
|
No other output changes. The existing audio validation (440Hz sine, non-silence detection) remains the success criterion for both modes.
|