Files
free-turn-proxy/docs/uri.md
T
samosvalishe 402606e4f7 feat(uri): переход на base64url(json), расширенные параметры
freeturn:// теперь несёт base64url(json) вместо query-string. Поля:
v, provider, peer, transport, mode, bond, obf, key, n, spc, cid,
listen, dns, dnss, mcap, name. Версионирован полем v=1.

config.PeekSubURL: pre-parse -sub до ParseClient, URI первой ноды
подсовывается позиционным аргументом - применение общим путём.
ParseClient применяет все новые поля URI (N, StreamsPerCred,
ClientID, Listen, DNSMode, DNSServers, ManualCaptcha, transport).
2026-06-11 23:49:31 +03:00

3.3 KiB
Raw Blame History

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

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

Note

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

Формат

freeturn://<base64url(json)>

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

Поля JSON

Ключ Флаг Описание
v - версия формата (сейчас 1).
provider -provider источник TURN-creds (например vk).
peer -peer адрес сервера на VPS (ip:port).
transport -transport транспорт до TURN-реле: tcp | udp.
mode -mode режим туннеля: udp | tcp.
bond -bond bonding TCP (true), только с mode=tcp.
obf -obf-profile профиль обфускации (rtpopus); none опускается.
key -obf-key ключ обфускации (hex), только при заданном obf.
n -n число TURN-потоков.
spc -streams-per-cred потоков на один кеш VK-учёток.
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 ручная VK captcha (true).
name - имя клиента / комментарий.

Note

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

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

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

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

./client "freeturn://eyJ2IjoxLCJwcm92aWRlciI6InZrIiwicGVlciI6..." -link "https://vk.com/call/join/..."

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