Pull request: 3914 fix lack of client name
Merge in DNS/adguard-home from 3914-fix-client-name to master Closes #3914. Squashed commit of the following: commit 6bd06d277ec5e64fc548245eee75edd8da67fa2c Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Dec 3 17:13:15 2021 +0300 dnsforward: fix lack of client name
This commit is contained in:
parent
0122710750
commit
90e65b662c
|
@ -2,7 +2,6 @@ package dnsforward
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"encoding/binary"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -172,19 +171,3 @@ func (s *Server) clientIDFromDNSContext(pctx *proxy.DNSContext) (clientID string
|
||||||
|
|
||||||
return clientID, nil
|
return clientID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// processClientID puts the clientID into the DNS context, if there is one.
|
|
||||||
func (s *Server) processClientID(dctx *dnsContext) (rc resultCode) {
|
|
||||||
pctx := dctx.proxyCtx
|
|
||||||
|
|
||||||
var key [8]byte
|
|
||||||
binary.BigEndian.PutUint64(key[:], pctx.RequestID)
|
|
||||||
clientIDData := s.clientIDCache.Get(key[:])
|
|
||||||
if clientIDData == nil {
|
|
||||||
return resultCodeSuccess
|
|
||||||
}
|
|
||||||
|
|
||||||
dctx.clientID = string(clientIDData)
|
|
||||||
|
|
||||||
return resultCodeSuccess
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dnsforward
|
package dnsforward
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/binary"
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
@ -86,7 +87,6 @@ func (s *Server) handleDNSRequest(_ *proxy.Proxy, d *proxy.DNSContext) error {
|
||||||
s.processInternalHosts,
|
s.processInternalHosts,
|
||||||
s.processRestrictLocal,
|
s.processRestrictLocal,
|
||||||
s.processInternalIPAddrs,
|
s.processInternalIPAddrs,
|
||||||
s.processClientID,
|
|
||||||
s.processFilteringBeforeRequest,
|
s.processFilteringBeforeRequest,
|
||||||
s.processLocalPTR,
|
s.processLocalPTR,
|
||||||
s.processUpstream,
|
s.processUpstream,
|
||||||
|
@ -131,7 +131,10 @@ func (s *Server) processRecursion(dctx *dnsContext) (rc resultCode) {
|
||||||
return resultCodeSuccess
|
return resultCodeSuccess
|
||||||
}
|
}
|
||||||
|
|
||||||
// Perform initial checks; process WHOIS & rDNS
|
// processInitial terminates the following processing for some requests if
|
||||||
|
// needed and enriches the ctx with some client-specific information.
|
||||||
|
//
|
||||||
|
// TODO(e.burkov): Decompose into less general processors.
|
||||||
func (s *Server) processInitial(ctx *dnsContext) (rc resultCode) {
|
func (s *Server) processInitial(ctx *dnsContext) (rc resultCode) {
|
||||||
d := ctx.proxyCtx
|
d := ctx.proxyCtx
|
||||||
if s.conf.AAAADisabled && d.Req.Question[0].Qtype == dns.TypeAAAA {
|
if s.conf.AAAADisabled && d.Req.Question[0].Qtype == dns.TypeAAAA {
|
||||||
|
@ -151,6 +154,13 @@ func (s *Server) processInitial(ctx *dnsContext) (rc resultCode) {
|
||||||
return resultCodeFinish
|
return resultCodeFinish
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the client's ID if any. It should be performed before getting
|
||||||
|
// client-specific filtering settings.
|
||||||
|
var key [8]byte
|
||||||
|
binary.BigEndian.PutUint64(key[:], d.RequestID)
|
||||||
|
ctx.clientID = string(s.clientIDCache.Get(key[:]))
|
||||||
|
|
||||||
|
// Get the client-specific filtering settings.
|
||||||
ctx.protectionEnabled = s.conf.ProtectionEnabled
|
ctx.protectionEnabled = s.conf.ProtectionEnabled
|
||||||
ctx.setts = s.getClientRequestFilteringSettings(ctx)
|
ctx.setts = s.getClientRequestFilteringSettings(ctx)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue