Files
free-turn-proxy/internal/proxy
samosvalishe e212465f83 refactor(proxy): вынести общие хелперы (минимальный объём)
Исходный план просил proxy.Engine + интерфейс Handler, объединяющий udprelay и
tcpfwd. После разбора кода заявленные ~70% пересечения оказались ближе к ~30
строкам: udprelay (WG → DTLS-terminate → wrap → TURN) и tcpfwd (TCP → smux →
KCP → DTLS → wrap → TURN) наслаивают wrap/DTLS по-разному и имеют разные
жизненные циклы. Engine с двумя if-ветками просто загнал бы дублирование внутрь,
а не убрал.

Объём минимальный: новый пакет internal/proxy/common с тем, что реально
идентично:

  - тип GetCredsFunc (дублировался в обоих пакетах).
  - DialTURN(ctx, host, port, udp, peer, link, streamID, getCreds) — берёт creds
    и открывает turndial-стрим. Политика retry на auth-ошибке остаётся в udprelay.
  - NewClientWrap(key) — возвращает (nil, nil) при пустом/коротком ключе, иначе
    srtpmimicry.NewConn(key, false).

udprelay и tcpfwd теперь импортируют common.DialTURN / common.NewClientWrap.
Их локальные объявления GetCredsFunc становятся type alias на
common.GetCredsFunc, чтобы связка cmd/vk-turn-client компилировалась без churn.

bond-as-tcpfwd-option отменён вместе с интерфейсом Handler; bondclient остаётся
отдельным пакетом, подключённым через Deps.BondHandler.

Без изменений wire-формата, флагов CLI и поведения. go build / go vet /
go test / gofmt чисто.
2026-05-19 20:52:02 +03:00
..