Files
free-turn-proxy/docs/uri.md
T

3.8 KiB
Raw Blame History

Формат URI Share-ссылок

freeturn:// - компактный способ передать клиенту все параметры подключения. Ссылка генерируется на экране «поделиться» (или владельцем сервера) и переопределяет одноимённые флаги клиента, чтобы не вводить IP, режим, ключ и т.д. вручную.

Note

Ссылка на звонок (-link) не входит в URI - она уникальна для каждого клиента.

Формат

freeturn://<base64url(json)>

Payload - JSON-объект, закодированный base64url (без padding, как Go base64.RawURLEncoding). Версионирован полем v: парсер старой версии отвергнет незнакомую, новые поля не ломают разбор. Пустые и дефолтные поля опускаются.

Поля JSON

Ключ Флаг Описание
v - версия формата (сейчас 1).
provider -provider источник потоков: vk | direct.
peer -peer адрес сервера на VPS (ip:port).
transport -transport транспорт до TURN-реле: tcp | udp.
mode -mode режим туннеля: udp | tcp; отсутствует - udp.
obf -obf-profile профиль обфускации (rtpopus | rtpopus2 | rtpopus3); none опускается.
key -obf-key ключ обфускации (hex), только при заданном obf.
n -n число TURN-потоков; отсутствует - дефолт клиента.
spc -streams-per-cred потоков на один кеш учёток; отсутствует - дефолт клиента.
cid -client-id Client ID гостя; owner добавляет его в allowlist (clients.json).
listen -listen локальный ip:port для WireGuard/Xray.
dns -dns-mode резолвер клиента: plain | doh | auto.
dnss -dns-servers свои DNS через запятую.
mcap -manual-captcha ручная captcha (true).
kcp -kcp-* профиль ARQ для mode: tcp (nodelay, interval, resend, nc, sndwnd, rcvwnd, mtu, acknodelay); отсутствует - дефолт.
name - имя клиента / комментарий.

Note

Про cid: на каждую ссылку генерируется свежий Client ID, который owner добавляет в clients.json (комментарий = name). Без cid в allowlist клиент не авторизуется. В ссылку входят все параметры подключения - не входит только -link (звонок уникален для каждого клиента).

Пример (декодированный payload)

{"v":1,"provider":"vk","peer":"1.2.3.4:56000","transport":"tcp","mode":"udp",
 "obf":"rtpopus3","key":"d823fa...","n":10,"cid":"a1b2c3...","name":"RU-Server"}

Пример использования

./client "freeturn://eyJ2IjoxLCJwcm92aWRlciI6InZrIiwicGVlciI6..." -link "<call-link>"

Параметры из URI переопределяют базовые флаги (-peer, -transport, -mode, -obf-key, -n ...).

Версия ссылки не меняется: mode и kcp - опциональные поля, старый клиент их игнорирует и остаётся на udp с дефолтным ARQ.