Skip to content

Commit

Permalink
all: imp code
Browse files Browse the repository at this point in the history
  • Loading branch information
Mizzick committed Aug 9, 2023
1 parent 0de1e0e commit f406a5f
Showing 1 changed file with 23 additions and 13 deletions.
36 changes: 23 additions & 13 deletions internal/dnsforward/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package dnsforward
import (
"encoding/binary"
"fmt"
"net"
"strings"

"github.com/AdguardTeam/AdGuardHome/internal/aghnet"
Expand Down Expand Up @@ -214,31 +215,40 @@ func (s *Server) filterHTTPSRecords(
setts *filtering.Settings,
) (r *filtering.Result, err error) {
for _, kv := range rr.Value {
switch kv.Key() {
case dns.SVCB_IPV4HINT, dns.SVCB_IPV6HINT:
r, err = s.filterSVCBHint(kv.String(), setts)
if err != nil {
return nil, fmt.Errorf("filtering svcb hints: %w", err)
}

if r != nil {
return r, nil
}
var ips []net.IP
switch hint := kv.(type) {
case *dns.SVCBIPv4Hint:
ips = hint.Hint
case *dns.SVCBIPv6Hint:
ips = hint.Hint
default:
// Go on.
}

if len(ips) == 0 {
continue
}

r, err = s.filterSVCBHint(ips, setts)
if err != nil {
return nil, fmt.Errorf("filtering svcb hints: %w", err)
}

if r != nil {
return r, nil
}
}

return nil, nil
}

// filterSVCBHint filters SVCB hint information.
func (s *Server) filterSVCBHint(
hint string,
hint []net.IP,
setts *filtering.Settings,
) (res *filtering.Result, err error) {
for _, h := range strings.Split(hint, ",") {
res, err = s.checkHostRules(h, dns.TypeHTTPS, setts)
for _, h := range hint {
res, err = s.checkHostRules(h.String(), dns.TypeHTTPS, setts)
if err != nil {
return nil, fmt.Errorf("checking rules for %s: %w", h, err)
}
Expand Down

0 comments on commit f406a5f

Please sign in to comment.