platform: modularize api/gui, add docs-tests-web foundation, and refresh root config

This commit is contained in:
beckline
2026-03-26 22:40:54 +03:00
parent 0e2d7f61ea
commit 6a56d734c2
562 changed files with 70151 additions and 16423 deletions

View File

@@ -0,0 +1,106 @@
package resolver
import (
"os"
"strings"
)
type ResolverPrecheckFinalizeInput struct {
PrecheckDue bool
PrecheckStatePath string
Now int
TimeoutRecheck ResolverTimeoutRecheckStats
LiveBatchTarget int
LiveBatchMin int
LiveBatchMax int
LiveBatchNXHeavyPct int
LiveBatchNXHeavyMin int
LiveBatchNXHeavyMax int
DNSStats DNSMetrics
LiveDeferred int
ResolvedNowDNS int
LiveP1 int
LiveP2 int
LiveP3 int
LiveNXHeavyTotal int
LiveNXHeavySkip int
ToResolveTotal int
PrecheckFileForced bool
PrecheckForcePath string
}
type ResolverPrecheckFinalizeResult struct {
NextTarget int
NextReason string
NextNXPct int
NextNXReason string
Saved bool
ForceFileConsumed bool
}
func FinalizeResolverPrecheck(in ResolverPrecheckFinalizeInput, logf func(string, ...any)) ResolverPrecheckFinalizeResult {
out := ResolverPrecheckFinalizeResult{}
if in.PrecheckDue {
nextTarget, nextReason := ComputeNextLiveBatchTarget(in.LiveBatchTarget, in.LiveBatchMin, in.LiveBatchMax, in.DNSStats, in.LiveDeferred)
nextNXPct, nextNXReason := ComputeNextLiveBatchNXHeavyPct(
in.LiveBatchNXHeavyPct,
in.LiveBatchNXHeavyMin,
in.LiveBatchNXHeavyMax,
in.DNSStats,
in.ResolvedNowDNS,
in.LiveP3,
in.LiveNXHeavyTotal,
in.LiveNXHeavySkip,
)
if logf != nil {
logf(
"resolve live-batch nxheavy: pct=%d next=%d reason=%s selected=%d total=%d skipped=%d",
in.LiveBatchNXHeavyPct,
nextNXPct,
nextNXReason,
in.LiveP3,
in.LiveNXHeavyTotal,
in.LiveNXHeavySkip,
)
}
SaveResolverPrecheckState(
in.PrecheckStatePath,
in.Now,
in.TimeoutRecheck,
ResolverLiveBatchStats{
Target: in.LiveBatchTarget,
Total: in.ToResolveTotal,
Deferred: in.LiveDeferred,
P1: in.LiveP1,
P2: in.LiveP2,
P3: in.LiveP3,
NXHeavyPct: in.LiveBatchNXHeavyPct,
NXHeavyTotal: in.LiveNXHeavyTotal,
NXHeavySkip: in.LiveNXHeavySkip,
NextTarget: nextTarget,
NextReason: nextReason,
NextNXPct: nextNXPct,
NextNXReason: nextNXReason,
DNSAttempts: in.DNSStats.Attempts,
DNSTimeout: in.DNSStats.Timeout,
DNSCoolSkips: in.DNSStats.Skipped,
},
)
out.NextTarget = nextTarget
out.NextReason = nextReason
out.NextNXPct = nextNXPct
out.NextNXReason = nextNXReason
out.Saved = true
}
if in.PrecheckFileForced && strings.TrimSpace(in.PrecheckForcePath) != "" {
_ = os.Remove(in.PrecheckForcePath)
if logf != nil {
logf("resolve precheck force-file consumed: %s", in.PrecheckForcePath)
}
out.ForceFileConsumed = true
}
return out
}