fix: Handle dnsmasq local=/ directive in DNS filter parser

The parser only recognized address=/ and server=/ prefixes but not
local=/, which is the format used by Hagezi blocklists. This caused
~270k domains to be stored with the raw "local=/domain/" string as
the domain name, breaking allow-list matching.
This commit is contained in:
2026-08-19 23:11:50 +00:00
parent 03ce1f3c42
commit a90af10932
2 changed files with 3 additions and 2 deletions

View File

@@ -16,8 +16,8 @@ func ParseLine(line string) (string, bool) {
return "", false
}
// dnsmasq format: address=/domain/0.0.0.0 or server=/domain/
if strings.HasPrefix(line, "address=/") || strings.HasPrefix(line, "server=/") {
// dnsmasq format: address=/domain/... or server=/domain/ or local=/domain/
if strings.HasPrefix(line, "address=/") || strings.HasPrefix(line, "server=/") || strings.HasPrefix(line, "local=/") {
parts := strings.SplitN(line, "/", 4)
if len(parts) >= 3 && parts[1] != "" {
return validateDomain(parts[1])