Commit Graph

2334 Commits

Author SHA1 Message Date
世界
250bddfc8e dns: allow rule-set updates that keep new mode 2026-04-02 16:40:47 +08:00
世界
0926405b94 dns: hard-fail lookup split rule misuse 2026-04-02 16:40:46 +08:00
世界
81430c4558 docs: fix broken anchors, change block ordering, and fakeip field name 2026-04-02 16:40:40 +08:00
世界
c3fdf5219e dns: validate rule-set updates before commit 2026-04-02 00:24:16 +08:00
世界
8e10b22463 Standardize legacy DNS feature terminology in docs and error messages
Use concrete feature names per design spec: "Legacy Address Filter
Fields", "Legacy `strategy` DNS rule action option", "Legacy
`ip_accept_any` DNS rule item", "Legacy `rule_set_ip_cidr_accept_empty`
DNS rule item" for deprecated features, and "Response Match Fields" for
the new response matching section.
2026-04-01 22:49:22 +08:00
世界
3c7bc5a84c Unify evaluate-produced DNS message terminology to "evaluated response" 2026-04-01 22:10:30 +08:00
世界
6daed349b6 Add DNS respond rule action 2026-04-01 21:59:25 +08:00
世界
bbccdbcc92 dns: reject evaluate fakeip servers 2026-04-01 21:28:34 +08:00
世界
40e40ea7a6 Fix evaluate response-match validation 2026-04-01 18:50:19 +08:00
世界
78348540a9 Replace internal terminology in docs and error messages
Remove all user-facing references to the internal `legacyDNSMode` variable
name. Error messages now reuse the deprecated.Note.MessageWithLink() method
to provide consistent deprecation text with migration URLs. Other internal
jargon ("consume response state", "response_*") is replaced with
user-friendly descriptions.

Add two migration guide entries under 1.14.0: one for strategy → rule items,
one for address filter fields → evaluate with match_response.
2026-04-01 18:27:14 +08:00
世界
91f942c8bc Simplify DNS router internals
- Replace dnsRuleModeRequirements 4-tuple return with dnsRuleModeFlags struct
- Eliminate redundant hasDNSRuleActionStrategy tree walk by reusing mode flags from buildRules
- Remove single-field lookupWithRulesResponse wrapper
- Accept fields directly in resolveDNSRoute instead of *RuleActionDNSRoute
- Extract rulesAndMode() helper to deduplicate snapshot unpacking
- Trim verbose RuleSetMetadata comment
2026-04-01 17:20:29 +08:00
世界
99b363c878 test: remove internal-state assertions that test through unexported fields 2026-04-01 16:51:03 +08:00
世界
8916a241ed test: remove low-value DNS WHAT tests 2026-04-01 16:39:12 +08:00
世界
7757a786f5 Fix minor robustness issues found during code review
- dns/router: add r.closing guard in registerRuleSetCallbacks to
  prevent callback leak when Close() races with Start() in daemon path
- adapter/inbound: validate addr.IsValid() in DNSResponseAddresses
  before appending to guard against zero-RDATA DNS records
- adapter/rule: add evaluate to non-final actions in IsFinalAction
2026-04-01 16:23:42 +08:00
世界
c17a5a3260 Simplify nested action validation and fix FallbackNetworkType bug
- Rename nested_action.go to rule_nested_action.go for naming consistency
- Export error message constants from option package to deduplicate
- Fix RuleActionRouteOptions.Descriptions using wrong field for fallback-network-type
2026-04-01 16:23:42 +08:00
世界
c1ff6a08f0 Format code 2026-04-01 16:23:42 +08:00
世界
58dfd2e96f option: add round-trip test for DNSRuleAction with evaluate action 2026-04-01 16:23:42 +08:00
世界
8502f14f5f dns: add evaluate integration tests for response_rcode, response_ns, response_extra 2026-04-01 16:23:42 +08:00
世界
35ac4dca2d dns: remove redundant DNSResponse assignment in addressLimitResponseCheck
MatchAddressLimit internally copies metadata and sets DNSResponse,
making the prior assignment in the closure unnecessary.
2026-04-01 16:23:41 +08:00
世界
8860214ad6 dns: remove redundant queryOptions variable 2026-04-01 16:23:41 +08:00
世界
3b1ed3ceb5 dns: remove dead lookupStrategyAllowsQueryType helper 2026-04-01 16:23:41 +08:00
世界
1579aee80a dns: remove dead lookup strategy guard in lookupWithRulesType 2026-04-01 16:23:41 +08:00
世界
d3a5e4747a adapter: remove unused DestinationAddressesForMatch 2026-04-01 16:23:41 +08:00
世界
faf786ce70 dns: fix variable shadowing in matchDNSHeadlessRuleStatesForMatch 2026-04-01 16:23:41 +08:00
世界
47b3ca1d71 dns: fix err shadowing in buildRules
Reuse the outer err variable in the rule-construction and rule-startup
loops instead of redeclaring it with :=, and declare dnsRule separately.
2026-04-01 16:23:40 +08:00
世界
509da1ca6b dns: return immediately on context cancellation in evaluate exchange 2026-04-01 16:23:40 +08:00
世界
ef99a87de7 dns: reject method reply is not supported for DNS rules
Add config-time validation in NewDNSRule that rejects
RejectMethodReply for both default and logical DNS rules,
matching the existing TCP/UDP validation in route/route.go.
2026-04-01 16:23:40 +08:00
世界
a83f2e977d dns: improve test coverage and cleanup
- Add t.Cleanup(router.Close) in newTestRouter for automatic cleanup
- Remove unnecessary testCase loop variable capture (Go 1.22+)
- Add tests for reject drop action, route_options effect, and
  chained evaluate response overwrite
2026-04-01 16:23:40 +08:00
世界
6a4b0db245 dns: fix test style issues in repro_test.go
- Rename addrs to addresses per naming conventions
- Replace errors.New with E.New per error-handling rules
2026-04-01 16:23:40 +08:00
世界
e6377f7ec9 fix: add missing EnvName, document Strategy invariant, improve rcode display
- Add EnvName to four new deprecation constants so users can suppress
  warnings via ENABLE_DEPRECATED_* environment variables
- Add comment explaining why applyDNSRouteOptions skips Strategy
- Use dns.RcodeToString in DNSResponseRCodeItem.String() for readability
- Remove redundant Fqdn(FqdnToDomain(domain)) round-trip
2026-04-01 16:23:40 +08:00
世界
1897e512ac docs: fix strategy deprecation format, explain legacyDNSMode, unify CN/EN order
- Use standard !!! failure block for strategy deprecation notice
- Add Legacy DNS Mode section explaining automatic mode detection
- Reorder ip_accept_any/rule_set_ip_cidr_accept_empty in Chinese docs
  to match English
2026-04-01 16:23:40 +08:00
世界
19b2e48f6e dns: populate reverse mapping for legacy predefined responses
The legacy path returned predefined responses early, bypassing the
reverse mapping cache. Use goto to reach the shared post-exchange
block so both legacy and new paths record predefined A/AAAA answers.
2026-04-01 16:23:39 +08:00
世界
be4e696632 route/rule: remove dead IgnoreDestinationIPCIDRMatch field
The field was never set to true after the legacy pre-match refactor
in 3549c02b8. Remove the declaration, guard check, and redundant
false assignments.
2026-04-01 16:23:39 +08:00
世界
866731344f dns: use refcounted snapshot to narrow rule lock scope
Exchange and Lookup held rulesAccess.RLock across all DNS network I/O,
blocking rebuildRules from swapping in new rules until every in-flight
query finished. Replace the RWMutex with an atomic pointer to a
refcounted rulesSnapshot so queries only hold a snapshot reference
during execution, allowing concurrent rule rebuilds.
2026-04-01 16:23:39 +08:00
世界
bd222fe9df dns: serialize rebuilds and keep last good rules on failure 2026-04-01 16:23:39 +08:00
世界
b44cf24745 docs: fix grammar errors and typos 2026-04-01 16:23:39 +08:00
世界
805f073ffb Suppress SA1019 lint warnings for intentional deprecated field usage 2026-04-01 16:23:39 +08:00
世界
0a85afef25 docs: add evaluate action, response matching fields, and deprecation notices 2026-04-01 16:23:38 +08:00
世界
ccad6d4595 Use typed SVCB hint structs instead of string parsing 2026-04-01 16:23:38 +08:00
世界
f02b50796a option: reject nested rule actions 2026-04-01 16:23:38 +08:00
世界
4df38c3244 dns: make rule strategy legacy-only 2026-04-01 16:23:38 +08:00
世界
036ef04da1 Make DNS match_response fail as a normal condition 2026-04-01 16:23:38 +08:00
世界
876c8eb283 Fix DNS rule-set ref handling 2026-04-01 16:23:37 +08:00
世界
ae2c869310 Fix legacy DNS rule_set accept_empty matching 2026-04-01 16:23:37 +08:00
世界
5dbabe4b37 dns: restore lookup reject semantics 2026-04-01 16:23:37 +08:00
世界
5cc484f34d Fix DNS record parser file inclusion and rule match log index
Remove SetIncludeAllowed(true) from the DNS record zone parser.
The $INCLUDE directive allows opening arbitrary files via os.Open,
which is unnecessary and dangerous when parsing a single record string
from configuration (especially remote profiles).

Fix displayRuleIndex arithmetic in dns/router.go that computed
2*index+1 instead of the correct 0-based index. This was a
reintroduction of a bug previously fixed in be8ee370a. Both
matchDNS and logRuleMatch now use the index directly, matching
the pattern in route/route.go.
2026-04-01 16:23:37 +08:00
世界
a491c9afef Fix DNS record parsing and shutdown race 2026-04-01 16:23:37 +08:00
世界
e09a6d3206 dns: restore init validation and fix rule-set query type 2026-04-01 16:23:37 +08:00
世界
40b9c64a0d dns: make rule path selection rule-set aware 2026-04-01 16:23:37 +08:00
世界
259e67fca3 dns: complete lookup rule execution in new mode 2026-04-01 16:23:36 +08:00