+1
-1
docker-compose.yml
+1
-1
docker-compose.yml
+11
-10
go.mod
+11
-10
go.mod
···
+18
-19
go.sum
+18
-19
go.sum
···-github.com/ClickHouse/clickhouse-go/v2 v2.31.0/go.mod h1:V1aZaG0ctMbd8KVi+D4loXi97duWYtHiQHMCgipKJcI=+github.com/ClickHouse/clickhouse-go/v2 v2.34.0/go.mod h1:yioSINoRLVZkLyDzdMXPLRIqhDvel8iLBlwh6Iefso8=·········golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=···golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=···gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=-tangled.sh/seiso.moe/magna v0.0.0-20250326021922-01ca5bbcb720 h1:e19STzd/6HFUBcdm5JnBE7txDVGdLqoyVUV+CMPVuuQ=-tangled.sh/seiso.moe/magna v0.0.0-20250326021922-01ca5bbcb720/go.mod h1:bqm+DTo2Pv4ITT0EnR079l++BJgoChBswSB/3KeijUk=
+17
-2
main.go
+17
-2
main.go
············-func monitorCacheMetrics(cache *dns.MemoryCache, metricsClient *metrics.ClickHouseMetrics, logger *slog.Logger) {+func monitorCacheMetrics(cache dns.Cache, metricsClient *metrics.ClickHouseMetrics, logger *slog.Logger) {
+212
-98
pkg/dns/cache.go
+212
-98
pkg/dns/cache.go
··················+if len(msg.Answer) == 0 && len(msg.Authority) > 0 && msg.Authority[0].RType == magna.SOAType {+entry.Authority[i] = CachedResourceRecord{Record: rr, ExpireAt: now.Add(time.Duration(recordTTL) * time.Second), BailiwickRule: rule}+entry.Answer[i] = CachedResourceRecord{Record: rr, ExpireAt: now.Add(time.Duration(recordTTL) * time.Second), BailiwickRule: rule}+entry.Authority[i] = CachedResourceRecord{Record: rr, ExpireAt: now.Add(time.Duration(recordTTL) * time.Second), BailiwickRule: rule}+entry.Additional[i] = CachedResourceRecord{Record: rr, ExpireAt: now.Add(time.Duration(recordTTL) * time.Second), BailiwickRule: rule}
+151
-193
pkg/dns/resolve.go
+151
-193
pkg/dns/resolve.go
······-func (h *QueryHandler) resolveQuestion(ctx context.Context, question magna.Question, servers []string) ([]magna.ResourceRecord, []magna.ResourceRecord, error) {-func (h *QueryHandler) resolveQuestionWithZone(ctx context.Context, question magna.Question, servers []string, currentZone string) ([]magna.ResourceRecord, []magna.ResourceRecord, error) {-cacheKey := fmt.Sprintf("%s:%s:%s", question.QName, question.QType.String(), question.QClass.String())+func (h *QueryHandler) resolveQuestion(ctx context.Context, question magna.Question, servers []string) ([]magna.ResourceRecord, error) {+cname_answers, err := h.resolveQuestion(resolveCtx, magna.Question{QName: msg.Answer[0].RData.String(), QType: question.QType, QClass: question.QClass}, h.RootServers)-answers, auth, err := h.resolveQuestionWithZone(ctx, magna.Question{QName: msg.Answer[0].RData.String(), QType: question.QType, QClass: question.QClass}, h.RootServers, zone)+nsAnswers, err := h.resolveQuestion(resolveCtx, magna.Question{QName: nsName, QType: magna.AType, QClass: magna.IN}, h.RootServers)+slog.Warn("unexpected response state", "question", question, "server", res.Server, "rcode", msg.Header.RCode)-func queryServer(ctx context.Context, question magna.Question, server string, ch chan<- queryResponse, timeout time.Duration) {+func queryServer(ctx context.Context, question magna.Question, server string, ch chan<- queryResponse) {-func convertCachedToMagna(cached []CachedResourceRecord, now time.Time) []magna.ResourceRecord {+response.Error = fmt.Errorf("response ID mismatch (got %d, expected %d)", decodedMsg.Header.ID, query.Header.ID)
+14
-5
pkg/dns/server.go
+14
-5
pkg/dns/server.go
·········
+7
-7
pkg/metrics/clickhouse.go
+7
-7
pkg/metrics/clickhouse.go
···