Files
free-turn-proxy/internal/client/dnsdial/cli.go
T
samosvalishe 2167ba990b refactor(layout): переезд в cmd/, свернуть client/internal в internal/client
- server/main.go → cmd/vk-turn-server/main.go. Несёт остаточные правки сервера
  (drop параметра useBond, убрано поле startup-лога).
- client/internal/{browserprofile,captcha,dnsdial,namegen,vkauth} →
  internal/client/* (единая иерархия internal/; параллельное дерево
  client/internal/ убрано). Все Go import-пути обновлены.
- .github/workflows/{ci,release}.yml, Dockerfile, README.md — пути сборки
  переключены на ./cmd/vk-turn-client и ./cmd/vk-turn-server.
- README: убран устаревший пример "server -vless-bond" (флаг удалён ранее);
  добавлены рецепты сборки .so для Android arm64 + Linux arm64/amd64 под
  ручную упаковку для мобилок.
- internal/proxy/udp/udp.go, internal/config/config.go: обновлены устаревшие
  ссылки client/internal/* в doc-комментариях.
- notes/GLOSSARY.md (новый, ~20 терминов): фиксирует DTLS-как-обфускацию,
  wrap=AEAD-не-XOR, четыре значения "client", три значения "stream", пять
  ортогональных переключателей "mode", заметки по сборке libvkturn.so, iSH,
  хрупкость init globalBondRegistry и удаления флагов.

cmd/vk-turn-client/ намеренно оставлен вне этого коммита; сворачивается вместе
с извлечением ручной captcha в следующем коммите, т.к. переименование и правки
импортов manualcaptcha.* попадают в один файл.

Wire-форматы не тронуты. Поведение не изменено кроме уже закоммиченных
удалений CLI.
2026-05-19 17:20:26 +03:00

35 lines
848 B
Go

package dnsdial
import (
"net"
"sync"
)
var (
dohResolverOnce sync.Once
dohResolverInstance *DohResolver
)
func sharedDohResolver() *DohResolver {
dohResolverOnce.Do(func() {
dohResolverInstance = NewDohResolver(nil)
})
return dohResolverInstance
}
// AppDialer returns the net.Dialer used by tls-client and other HTTP callers.
// DNS transport is selected by mode (udp | doh | auto).
func AppDialer(mode string) net.Dialer {
return buildDialer(mode, sharedDohResolver())
}
// InstallGlobalResolver wires net.DefaultResolver to the same DNS transport
// as AppDialer, so third-party libs that build their own http.Client without
// our Dialer still use DoH / auto-fallback instead of the OS resolver.
func InstallGlobalResolver(mode string) {
d := AppDialer(mode)
if d.Resolver != nil {
net.DefaultResolver = d.Resolver
}
}