diff --git a/internal/dnsfilter/parser.go b/internal/dnsfilter/parser.go index 172e87a..ef41382 100644 --- a/internal/dnsfilter/parser.go +++ b/internal/dnsfilter/parser.go @@ -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]) diff --git a/internal/dnsfilter/parser_test.go b/internal/dnsfilter/parser_test.go index 8d4a3ce..baf1616 100644 --- a/internal/dnsfilter/parser_test.go +++ b/internal/dnsfilter/parser_test.go @@ -39,6 +39,7 @@ func TestParseLine_DnsmasqFormat(t *testing.T) { {"address=/ads.example.com/0.0.0.0", "ads.example.com", true}, {"address=/tracker.example.com/", "tracker.example.com", true}, {"server=/blocked.example.com/", "blocked.example.com", true}, + {"local=/blocked.example.com/", "blocked.example.com", true}, {"address=//", "", false}, }