42 lines
2.2 KiB
Go
42 lines
2.2 KiB
Go
package app
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Go resolver
|
|
// ---------------------------------------------------------------------
|
|
|
|
// EN: Go-based domain resolver pipeline used by routes update.
|
|
// EN: Handles cache reuse, concurrent DNS lookups, PTR labeling for static entries,
|
|
// EN: and returns deduplicated IP sets plus IP-to-label mapping artifacts.
|
|
// RU: Go-резолвер, используемый пайплайном обновления маршрутов.
|
|
// RU: Обрабатывает кэш, конкурентные DNS-запросы, PTR-лейблы для static entries
|
|
// RU: и возвращает дедуплицированный список IP и IP-to-label mapping.
|
|
|
|
// Empty by default: primary resolver pool comes from DNS upstream pool state.
|
|
// Optional fallback list can still be provided via RESOLVE_DNS_FALLBACKS env.
|
|
var resolverFallbackDNS []string
|
|
|
|
// ---------------------------------------------------------------------
|
|
// EN: `runResolverJob` runs the workflow for resolver job.
|
|
// RU: `runResolverJob` - запускает рабочий процесс для resolver job.
|
|
// ---------------------------------------------------------------------
|
|
func runResolverJob(opts ResolverOpts, logf func(string, ...any)) (resolverResult, error) {
|
|
res := resolverResult{
|
|
DomainCache: map[string]any{},
|
|
PtrCache: map[string]any{},
|
|
}
|
|
ctx := buildResolverJobContext(opts, logf)
|
|
runResolverPipeline(&ctx, &res, logf)
|
|
return res, nil
|
|
}
|
|
|
|
// ---------------------------------------------------------------------
|
|
// DNS resolve helpers moved to app/resolver/* (bridged via resolver_host_lookup_bridge.go)
|
|
|
|
// ---------------------------------------------------------------------
|
|
// DNS config + cache helpers moved to app/resolver/* (bridged via resolver_domain_cache_bridge.go + resolver_static_labels_bridge.go + resolver_dns_config_bridge.go)
|
|
|
|
// ---------------------------------------------------------------------
|
|
// EN: `saveJSON` saves json to persistent storage.
|
|
// RU: `saveJSON` - сохраняет json в постоянное хранилище.
|
|
// ---------------------------------------------------------------------
|