Features:
- add support for wildcard lists using a custom Trie (#1233) (Thanks @ThinkChaos)
- querylog: add flushInterval parameter
- race UDP and TCP when connecting upstream (Thanks @ThinkChaos)
- API-first approach for REST interface (#1129)
- add API endpoint to flush the DNS Cache (#1178)
- add
upstreams.init.strategy
(Thanks @ThinkChaos) - add timeout to bootstrap (#1158)
- add upstream strategy
random
(#1221) (Thanks @DerRockWolf) - reduce DNS response cache memory consumption (#1196)
- EDNS: Client Subnet (#1007) (Thanks @kwitsch)
Misc
- Updated dependencies and documentation
Bugfix
- make
FatalOnError
overridelog.Silence
(Thanks @ThinkChaos) - ANSI color codes being printed on Windows (#1225) (Thanks @kwitsch)
- conditional resolver panics on response without question (#1148)
- don't cache DNS responses with CD flag
- don't cache EDNS pseudo records (#1150)
- don't convert regex from punycode to ASCII (#1126) (#1131)
- log.privacy option no longer hides domain names being resolved (#1255)
- return error code on server starup failure (#1165)
- truncated responses should not be cached (#1149)
- use different TTL of multiple records in answer
- rewrite: support the case where upstream doesn't echo the question (Thanks @ThinkChaos)
Changelog
- 9a77dcd: BlockingConfig -> Blocking (@kwitsch)
- 1154335: Bugfix in ECS forward (#1290) (@kwitsch)
- fb8c419: Bugfix/GitHub workflows (#1234) (@kwitsch)
- dc66eff: Bugfix/readme (#1232) (@kwitsch)
- e30e852: ClientLookupConfig -> ClientLookup (@kwitsch)
- 00d4341: ConditionalUpstreamConfig -> ConditionalUpstream (@kwitsch)
- 26d5f62: CustomDNSConfig -> CustomDNS (@kwitsch)
- 6fca40c: Dockerfile streamline (#1185) (@kwitsch)
- d37d183: EDNS: Client Subnet (#1007) (@kwitsch)
- acfc291: Feature/devcontainer (#1179) (@kwitsch)
- 7615584: Feature/ginkgolinter (#1235) (@kwitsch)
- 1a200c7: Fix/opencontainer labels (#1192) (@kwitsch)
- fda2dbe: Refactoring Redis (#1271) (@kwitsch)
- 976d619: Refactoring server.go (#1277) (@kwitsch)
- 03131c4: Refactoring/config struct names (#1315) (@kwitsch)
- 3378316: Refactoring: FileDownloader (#1281) (@kwitsch)
- 6c00009: Unit test refactoring & devcontainer enhancement(#1245) (@kwitsch)
- 72352a9: UpstreamsConfig -> Upstreams (@kwitsch)
- d8d7fa5: build(deps): bump actions/checkout from 3 to 4 (#1127) (@dependabot[bot])
- c703f8f: build(deps): bump actions/download-artifact from 3 to 4 (#1305) (@dependabot[bot])
- 3e8b7af: build(deps): bump actions/setup-go from 4 to 5 (#1294) (@dependabot[bot])
- 79d3afa: build(deps): bump actions/setup-python from 4 to 5 (#1295) (@dependabot[bot])
- 5490fc6: build(deps): bump actions/stale from 8 to 9 (#1296) (@dependabot[bot])
- 343d38c: build(deps): bump actions/upload-artifact from 3 to 4 (#1306) (@dependabot[bot])
- c72a0e1: build(deps): bump codecov/codecov-action from 3 to 4 (#1147) (@dependabot[bot])
- e31d20c: build(deps): bump crazy-max/ghaction-docker-meta from 4 to 5 (#1142) (@dependabot[bot])
- cb5f72f: build(deps): bump docker/build-push-action from 4 to 5 (#1140) (@dependabot[bot])
- c212ab3: build(deps): bump docker/login-action from 2 to 3 (#1139) (@dependabot[bot])
- e187aaa: build(deps): bump docker/setup-buildx-action from 2 to 3 (#1143) (@dependabot[bot])
- 4006b16: build(deps): bump docker/setup-qemu-action from 2 to 3 (#1141) (@dependabot[bot])
- 825f1dd: build(deps): bump github.com/DATA-DOG/go-sqlmock from 1.5.0 to 1.5.1 (#1297) (@dependabot[bot])
- 4c65865: build(deps): bump github.com/abice/go-enum from 0.5.10 to 0.6.0 (#1309) (@dependabot[bot])
- 710efa3: build(deps): bump github.com/abice/go-enum from 0.5.7 to 0.5.8 (@dependabot[bot])
- 7f7161f: build(deps): bump github.com/abice/go-enum from 0.5.8 to 0.5.10 (@dependabot[bot])
- 9f49291: build(deps): bump github.com/alicebob/miniredis/v2 from 2.30.5 to 2.31.0 (#1201) (@dependabot[bot])
- 5fefca5: build(deps): bump github.com/avast/retry-go/v4 from 4.5.0 to 4.5.1 (#1249) (@dependabot[bot])
- 4e90109: build(deps): bump github.com/containerd/containerd from 1.7.7 to 1.7.11 (#1310) (@dependabot[bot])
- e4e46d7: build(deps): bump github.com/deepmap/oapi-codegen from 1.14.0 to 1.15.0 (@dependabot[bot])
- 18be1e9: build(deps): bump github.com/deepmap/oapi-codegen from 1.15.0 to 1.16.2 (#1209) (@dependabot[bot])
- 68eeebe: build(deps): bump github.com/docker/docker (#1216) (@dependabot[bot])
- f9fa81d: build(deps): bump github.com/docker/docker (@dependabot[bot])
- c6304e9: build(deps): bump github.com/go-chi/chi/v5 from 5.0.10 to 5.0.11 (#1314) (@dependabot[bot])
- fd8ee7c: build(deps): bump github.com/google/uuid from 1.3.1 to 1.4.0 (#1218) (@dependabot[bot])
- abe9e5c: build(deps): bump github.com/google/uuid from 1.4.0 to 1.5.0 (#1300) (@dependabot[bot])
- 9f532ce: build(deps): bump github.com/miekg/dns from 1.1.55 to 1.1.56 (@dependabot[bot])
- f1a6fb0: build(deps): bump github.com/miekg/dns from 1.1.56 to 1.1.57 (#1253) (@dependabot[bot])
- 7edb856: build(deps): bump github.com/oapi-codegen/runtime from 1.0.0 to 1.1.0 (#1250) (@dependabot[bot])
- f512e11: build(deps): bump github.com/onsi/ginkgo/v2 from 2.12.0 to 2.12.1 (@dependabot[bot])
- 02569b0: build(deps): bump github.com/onsi/ginkgo/v2 from 2.12.1 to 2.13.0 (#1195) (@dependabot[bot])
- 6448be6: build(deps): bump github.com/onsi/ginkgo/v2 from 2.13.0 to 2.13.1 (#1237) (@dependabot[bot])
- 77ef228: build(deps): bump github.com/onsi/ginkgo/v2 from 2.13.1 to 2.13.2 (#1280) (@dependabot[bot])
- d76740e: build(deps): bump github.com/onsi/gomega from 1.27.10 to 1.28.0 (@dependabot[bot])
- 589e998: build(deps): bump github.com/onsi/gomega from 1.28.0 to 1.28.1 (#1207) (@dependabot[bot])
- 5ba1cc2: build(deps): bump github.com/onsi/gomega from 1.28.1 to 1.29.0 (#1213) (@dependabot[bot])
- ad27adc: build(deps): bump github.com/onsi/gomega from 1.29.0 to 1.30.0 (#1228) (@dependabot[bot])
- d923c8c: build(deps): bump github.com/prometheus/client_golang (@dependabot[bot])
- 23ce44d: build(deps): bump github.com/spf13/cobra from 1.7.0 to 1.8.0 (#1223) (@dependabot[bot])
- 51bb54b: build(deps): bump github.com/swaggo/swag from 1.16.1 to 1.16.2 (#1123) (@dependabot[bot])
- 3dc0ca1: build(deps): bump github.com/testcontainers/testcontainers-go (@dependabot[bot])
- e63ad38: build(deps): bump github.com/testcontainers/testcontainers-go (@dependabot[bot])
- 7f38a3b: build(deps): bump github.com/testcontainers/testcontainers-go/modules/mariadb (#1181) (@dependabot[bot])
- 4c62b2d: build(deps): bump github.com/testcontainers/testcontainers-go/modules/mariadb (#1219) (@dependabot[bot])
- 1292a20: build(deps): bump github.com/testcontainers/testcontainers-go/modules/mariadb (@dependabot[bot])
- ed3a3de: build(deps): bump github.com/testcontainers/testcontainers-go/modules/postgres (#1182) (@dependabot[bot])
- 1aec7d6: build(deps): bump github.com/testcontainers/testcontainers-go/modules/postgres (#1214) (@dependabot[bot])
- b87c545: build(deps): bump github.com/testcontainers/testcontainers-go/modules/postgres (@dependabot[bot])
- 10b678b: build(deps): bump github.com/testcontainers/testcontainers-go/modules/redis (#1183) (@dependabot[bot])
- b277506: build(deps): bump github.com/testcontainers/testcontainers-go/modules/redis (#1215) (@dependabot[bot])
- 69f6ae4: build(deps): bump github.com/testcontainers/testcontainers-go/modules/redis (@dependabot[bot])
- c814667: build(deps): bump github/codeql-action from 2 to 3 (#1303) (@dependabot[bot])
- 4217e93: build(deps): bump golang.org/x/crypto from 0.16.0 to 0.17.0 (#1308) (@dependabot[bot])
- ccabb5a: build(deps): bump golang.org/x/net from 0.15.0 to 0.16.0 (#1186) (@dependabot[bot])
- 8dec318: build(deps): bump golang.org/x/net from 0.16.0 to 0.17.0 (#1197) (@dependabot[bot])
- 5e6f6c4: build(deps): bump golang.org/x/net from 0.17.0 to 0.18.0 (#1230) (@dependabot[bot])
- 09552f9: build(deps): bump golang.org/x/net from 0.18.0 to 0.19.0 (#1278) (@dependabot[bot])
- c09eb9e: build(deps): bump golang.org/x/tools from 0.12.0 to 0.13.0 (@dependabot[bot])
- 0e1bd0c: build(deps): bump golang.org/x/tools from 0.13.0 to 0.14.0 (#1193) (@dependabot[bot])
- 42d6f21: build(deps): bump golang.org/x/tools from 0.14.0 to 0.15.0 (#1229) (@dependabot[bot])
- b1cd255: build(deps): bump golang.org/x/tools from 0.15.0 to 0.16.0 (#1279) (@dependabot[bot])
- d5a98b1: build(deps): bump golang.org/x/tools from 0.16.0 to 0.16.1 (#1299) (@dependabot[bot])
- c591fb8: build(deps): bump google.golang.org/grpc from 1.57.0 to 1.57.1 (#1211) (@dependabot[bot])
- f5ec92f: build(deps): bump goreleaser/goreleaser-action from 4 to 5 (#1136) (@dependabot[bot])
- de13ffc: build(deps): bump gorm.io/driver/mysql from 1.5.0 to 1.5.2 (#1200) (@dependabot[bot])
- 2fcdf69: build(deps): bump gorm.io/driver/postgres from 1.5.2 to 1.5.3 (#1199) (@dependabot[bot])
- 58bfe5a: build(deps): bump gorm.io/driver/postgres from 1.5.3 to 1.5.4 (#1212) (@dependabot[bot])
- 210900b: build(deps): bump gorm.io/driver/sqlite from 1.5.3 to 1.5.4 (#1194) (@dependabot[bot])
- 733a54d: build(deps): bump gorm.io/gorm from 1.25.4 to 1.25.5 (#1198) (@dependabot[bot])
- 7782818: chore(build): change deprecated "rm-dist" flag to "clean" (#1120) (@0xERR0R)
- 45a9335: chore(build): revert codecov-action update (@0xERR0R)
- 1dcbf90: chore(build): update Golang to 1.21 (#1122) (@0xERR0R)
- 7645ed3: chore(build): update golangci-lint to 1.54.2 (#1121) (@0xERR0R)
- 497bd0d: chore(refactor): refactor cache implementation (#1174) (@0xERR0R)
- 8152999: chore(test): add retry on network deletion (#1144) (@0xERR0R)
- 19865bb: chore(test): change container wait strategy (@0xERR0R)
- 720e655: chore(test): fix flaky test (@0xERR0R)
- 500c187: chore(test): fix race conditions (@0xERR0R)
- a9ec322: chore(test): set timeout and flake-attempts for e2e tests (@0xERR0R)
- bcff170: chore(test): use testcontainers modules (#1164) (@0xERR0R)
- aa9ae0b: chore(text): fix ipv6 representation (@0xERR0R)
- 8ece708: devcontainer & unit test refactoring (#1220) (@kwitsch)
- b498bc5: feat(lists): add support for wildcard lists using a custom Trie (#1233) (@ThinkChaos)
- b1d0140: feat(querylog): add flushInterval parameter (@0xERR0R)
- df8c373: feat(resolver): race UDP and TCP when connecting upstream (@ThinkChaos)
- 72d747c: feat: API-first approach for REST interface (#1129) (@0xERR0R)
- d77f0ed: feat: add API endpoint to flush the DNS Cache (#1178) (@0xERR0R)
- 7a3c054: feat: add
upstreams.init.strategy
(@ThinkChaos) - 6f60bea: feat: add timeout to bootstrap (#1158) (@0xERR0R)
- 94663ee: feat: add upstream strategy
random
(#1221) (@DerRockWolf) - 73bc60c: feat: reduce DNS response cache memory consumption (#1196) (@0xERR0R)
- 6dd294b: fix(ci): limit docs job concurrency to one (@ThinkChaos)
- 7feaba4: fix(docs): clarify
blocky_error_total
(#1270) (@ThinkChaos) - 6775410: fix(docs): fix documentation link in README.md (#1133) (#1134) (@0xERR0R)
- a7f2ca2: fix(docs): make custom DNS matching recursively more explicit (@ThinkChaos)
- b2fa627: fix(docs): remove note that slipped in (@ThinkChaos)
- 2db0bd9: fix(docs): update
hostsFile
to use "sources" (@ThinkChaos) - e4ebc16: fix(parallel_best): set
typeName
to "random" when appropriate (@ThinkChaos) - dece894: fix(rewrite): support the case where upstream doesn't echo the question (@ThinkChaos)
- 08a3df6: fix(tests): don't make following requests wait on the first (@ThinkChaos)
- d52c598: fix(tests): properly silence log output (#1259) (@ThinkChaos)
- 4e89b44: fix(util): make
FatalOnError
overridelog.Silence
(@ThinkChaos) - d87e6b4: fix: ANSI color codes being printed on Windows (#1225) (@kwitsch)
- 47eb8be: fix: conditional resolver panics on response without question (#1148) (@0xERR0R)
- 431b9be: fix: don't cache DNS responses with CD flag (@0xERR0R)
- 9f15228: fix: don't cache EDNS pseudo records (#1150) (@0xERR0R)
- 245bb61: fix: don't convert regex from punycode to ASCII (#1126) (#1131) (@0xERR0R)
- 4a5a395: fix: log.privacy option no longer hides domain names being resolved (#1255) (@0xERR0R)
- 65ff684: fix: return error code on server starup failure (#1165) (@0xERR0R)
- d5be588: fix: truncated responses should not be cached (#1149) (@0xERR0R)
- f988593: fix: use different TTL of multiple records in answer (@0xERR0R)
- 15bd383: ginkgolinter: enable all checks and fix findings (#1274) (@nunnatsa)
- f0a96f9: opencontainer labels enhancement (#1191) (@kwitsch)
- 29a5681: refactor(bootstap): prepare for resolver package split (@ThinkChaos)
- 0f69630: refactor(bootstrap): replace
Dialer.Timeout
with acontext
deadline (@ThinkChaos) - 270dc17: refactor(config): add
TLSVersion
type (@ThinkChaos) - ef29cdc: refactor(config): ensure
upstreams.timeout
is always valid (@ThinkChaos) - 9760735: refactor(config): move
dohUserAgent
toupstreams.userAgent
(@ThinkChaos) - e4be0c0: refactor(config): remove
GetConfig
and its last uses (@ThinkChaos) - a6654dc: refactor(config): rename
StartStrategyType
toInitStrategy
(@ThinkChaos) - 659076d: refactor(resolvers): make
Bootstrap
implementResolver
(@ThinkChaos) - 891d0fb: refactor(tests): move
DeferCleanup
into helper functions (@ThinkChaos) - 8c7b89c: refactor(tests): remove
TmpFile.Error
to centralize error checks (@ThinkChaos) - adb970a: refactor(tests): use
MockUDPUpstreamServer.WithDelay
where possible (@ThinkChaos) - 8ad83d0: refactor(tests): use a
const timeout
to simplify race avoidance (@ThinkChaos) - 02cf490: refactor(util): use
LogPrivacy
global instead ofGetConfig
(@ThinkChaos) - b386e22: refactor: embed
Upstreams
inUpstreamGroup
to make values accessible (@ThinkChaos) - eae99ec: refactor: make use of contexts in more places (@ThinkChaos)
- 33ea933: refactor: pass context for goroutine shutdown (#1187) (@0xERR0R)
- 2c71f91: refactor: remove deprecated and no-op
SingleInflight
(@ThinkChaos) - 603d374: refactor: remove no longer needed TLS handshake timeout (@ThinkChaos)
- 7d93ffb: refactor: remove the
config
global (@ThinkChaos) - 3f14e71: remove go version in devcontainer file (#1184) (@kwitsch)
- ac54110: squash: remove Nix flake (@ThinkChaos)
- c5cc112: squash: remove
TmpFolder.ReadDir
and partially revert querylog test (@ThinkChaos) - 23359d1: style(config): add
config/migration
todot-import
allow-list (@ThinkChaos) - fa2d814: style(config): remove unused
nolint
(@ThinkChaos) - 3216802: style(tests):
Should(Not(x))
->ShouldNot(x)
(@ThinkChaos) - fe5c753: style(tests):
ShouldNot(HaveOccurred())
->Should(Succeed())
(@ThinkChaos) - a330174: style(tests):
ShouldNot(Succeed())
->Should(HaveOccurred())
(@ThinkChaos) - f371857: style(tests): use
ContainElements
where possible (@ThinkChaos) - 1a1891c: symbol name refactoring (#1263) (@kwitsch)