Skip to content

Commit

Permalink
dnsforward: slog logger
Browse files Browse the repository at this point in the history
  • Loading branch information
Mizzick committed Jul 5, 2024
1 parent 3d7f734 commit 5932c8d
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 4 deletions.
4 changes: 3 additions & 1 deletion internal/dnsforward/clientid_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"testing"

"github.com/AdguardTeam/dnsproxy/proxy"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/quic-go/quic-go"
"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -217,7 +218,8 @@ func TestServer_clientIDFromDNSContext(t *testing.T) {
}

srv := &Server{
conf: ServerConfig{TLSConfig: tlsConf},
conf: ServerConfig{TLSConfig: tlsConf},
logger: slogutil.NewDiscardLogger(),
}

var (
Expand Down
5 changes: 5 additions & 0 deletions internal/dnsforward/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/AdguardTeam/golibs/container"
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/log"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/netutil"
"github.com/AdguardTeam/golibs/stringutil"
"github.com/AdguardTeam/golibs/timeutil"
Expand Down Expand Up @@ -341,6 +342,10 @@ func (s *Server) newProxyConfig() (conf *proxy.Config, err error) {
MessageConstructor: s,
}

if s.logger != nil {
conf.Logger = s.logger.With(slogutil.KeyPrefix, "dnsproxy")
}

if srvConf.EDNSClientSubnet.UseCustom {
// TODO(s.chzhen): Use netip.Addr instead of net.IP inside dnsproxy.
conf.EDNSAddr = net.IP(srvConf.EDNSClientSubnet.CustomIP.AsSlice())
Expand Down
19 changes: 19 additions & 0 deletions internal/dnsforward/dnsforward.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"context"
"fmt"
"io"
"log/slog"
"net"
"net/http"
"net/netip"
Expand All @@ -27,6 +28,7 @@ import (
"github.com/AdguardTeam/golibs/cache"
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/log"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/netutil"
"github.com/AdguardTeam/golibs/netutil/sysresolv"
"github.com/AdguardTeam/golibs/stringutil"
Expand Down Expand Up @@ -121,6 +123,12 @@ type Server struct {
// access drops disallowed clients.
access *accessManager

// logger is used for logging during server routines.
//
// TODO(d.kolyshev): Make it never nil.
// TODO(d.kolyshev): Use this logger.
logger *slog.Logger

// localDomainSuffix is the suffix used to detect internal hosts. It
// must be a valid domain name plus dots on each side.
localDomainSuffix string
Expand Down Expand Up @@ -197,6 +205,7 @@ type DNSCreateParams struct {
PrivateNets netutil.SubnetSet
Anonymizer *aghnet.IPMut
EtcHosts *aghnet.HostsContainer
Logger *slog.Logger
LocalDomain string
}

Expand Down Expand Up @@ -227,12 +236,18 @@ func NewServer(p DNSCreateParams) (s *Server, err error) {
etcHosts = upstream.NewHostsResolver(p.EtcHosts)
}

l := p.Logger
if l == nil {
l = slog.Default()
}

s = &Server{
dnsFilter: p.DNSFilter,
dhcpServer: p.DHCPServer,
stats: p.Stats,
queryLog: p.QueryLog,
privateNets: p.PrivateNets,
logger: l.With(slogutil.KeyPrefix, "dnsforward"),
// TODO(e.burkov): Use some case-insensitive string comparison.
localDomainSuffix: strings.ToLower(localDomainSuffix),
etcHosts: etcHosts,
Expand Down Expand Up @@ -719,6 +734,10 @@ func (s *Server) prepareInternalProxy() (err error) {
MessageConstructor: s,
}

if s.logger != nil {
conf.Logger = s.logger.With(slogutil.KeyPrefix, "dnsproxy")
}

err = setProxyUpstreamMode(conf, srvConf.UpstreamMode, srvConf.FastestTimeout.Duration)
if err != nil {
return fmt.Errorf("invalid upstream mode: %w", err)
Expand Down
3 changes: 3 additions & 0 deletions internal/dnsforward/process_internal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/AdguardTeam/AdGuardHome/internal/filtering"
"github.com/AdguardTeam/dnsproxy/proxy"
"github.com/AdguardTeam/dnsproxy/upstream"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/netutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/AdguardTeam/urlfilter/rules"
Expand Down Expand Up @@ -430,6 +431,7 @@ func TestServer_ProcessDHCPHosts_localRestriction(t *testing.T) {
dnsFilter: createTestDNSFilter(t),
dhcpServer: dhcp,
localDomainSuffix: localDomainSuffix,
logger: slogutil.NewDiscardLogger(),
}

req := &dns.Msg{
Expand Down Expand Up @@ -565,6 +567,7 @@ func TestServer_ProcessDHCPHosts(t *testing.T) {
dnsFilter: createTestDNSFilter(t),
dhcpServer: testDHCP,
localDomainSuffix: tc.suffix,
logger: slogutil.NewDiscardLogger(),
}

req := &dns.Msg{
Expand Down
2 changes: 2 additions & 0 deletions internal/dnsforward/stats_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/AdguardTeam/AdGuardHome/internal/stats"
"github.com/AdguardTeam/dnsproxy/proxy"
"github.com/AdguardTeam/dnsproxy/upstream"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/miekg/dns"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -202,6 +203,7 @@ func TestServer_ProcessQueryLogsAndStats(t *testing.T) {
ql := &testQueryLog{}
st := &testStats{}
srv := &Server{
logger: slogutil.NewDiscardLogger(),
queryLog: ql,
stats: st,
anonymizer: aghnet.NewIPMut(nil),
Expand Down
1 change: 1 addition & 0 deletions internal/home/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ func initDNSServer(
tlsConf *tlsConfigSettings,
) (err error) {
Context.dnsServer, err = dnsforward.NewServer(dnsforward.DNSCreateParams{
Logger: Context.logger,
DNSFilter: filters,
Stats: sts,
QueryLog: qlog,
Expand Down
11 changes: 8 additions & 3 deletions internal/home/home.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"crypto/x509"
"fmt"
"io/fs"
"log/slog"
"net/http"
"net/netip"
"net/url"
Expand Down Expand Up @@ -62,6 +63,9 @@ type homeContext struct {
// configuration files, for example /etc/hosts.
etcHosts *aghnet.HostsContainer

// logger is an instance of [*slog.Logger]. It is never nil.
logger *slog.Logger

// mux is our custom http.ServeMux.
mux *http.ServeMux

Expand Down Expand Up @@ -137,12 +141,13 @@ func Main(clientBuildFS fs.FS) {
}

// setupContext initializes [Context] fields. It also reads and upgrades
// config file if necessary.
func setupContext(opts options) (err error) {
// config file if necessary. l must not be nil.
func setupContext(opts options, l *slog.Logger) (err error) {
Context.firstRun = detectFirstRun()

Context.tlsRoots = aghtls.SystemRootCAs()
Context.mux = http.NewServeMux()
Context.logger = l

if Context.firstRun {
log.Info("This is the first time AdGuard Home is launched")
Expand Down Expand Up @@ -565,7 +570,7 @@ func run(opts options, clientBuildFS fs.FS, done chan struct{}) {
l.Info("AdGuard Home is running as a service")
}

err = setupContext(opts)
err = setupContext(opts, l)
fatalOnError(err)

err = configureOS(config)
Expand Down

0 comments on commit 5932c8d

Please sign in to comment.