mirror of
https://github.com/hackdiaz-dev/free-turn-proxy.git
synced 2026-10-12 09:41:53 +02:00
e061345089
- internal/clientsdb: БД клиентов с hot-reload + length-prefixed ID wire - internal/uri: parse/encode share-ссылок freeturn:// - internal/sub: загрузка и парсинг подписок (sub.md) - client: флаги -auth, -client-id, -sub; позиционный URI; ID через crypto/rand - server: подкоманда clients (add/remove/list), чтение ID под -clients-file - запись/чтение ID учитывают DTLS record-orientation (буфер на запись целиком) - docs: uri.md, sub.md; правки flags/deploy/quickstart - снят UTF-8 BOM по всем исходникам
35 lines
996 B
Go
35 lines
996 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 возвращает net.Dialer для tls-client и других HTTP-вызывающих.
|
||
// DNS-транспорт выбирается по mode (udp | doh | auto).
|
||
func AppDialer(mode string) net.Dialer {
|
||
return buildDialer(mode, sharedDohResolver())
|
||
}
|
||
|
||
// InstallGlobalResolver выставляет net.DefaultResolver на тот же DNS-транспорт,
|
||
// что и AppDialer — чтобы сторонние библиотеки, собирающие свой http.Client
|
||
// без нашего Dialer, тоже шли через DoH / auto-fallback, а не OS resolver.
|
||
func InstallGlobalResolver(mode string) {
|
||
d := AppDialer(mode)
|
||
if d.Resolver != nil {
|
||
net.DefaultResolver = d.Resolver
|
||
}
|
||
}
|