mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2026-11-03 10:37:27 +09:00
Pull request 2743: AGDNS-4363-rm-more-old-log-from-pkg-home
Squashed commit of the following: commit 6a0b937e2c576f2225711bd1e5ebb6e1c3f0ad8b Merge: 7a4cba6de9800b51e6Author: Maksim Kazantsev <m.kazantsev@adguard.com> Date: Thu Aug 6 09:21:09 2026 +0400 Merge branch 'master' into AGDNS-4363-rm-more-old-log-from-pkg-home commit 7a4cba6de5dcb046d2e86cf659f1f10a12705f06 Author: Maksim Kazantsev <m.kazantsev@adguard.com> Date: Wed Aug 5 17:20:27 2026 +0400 home: imp log format; commit 9ab2afe7e6b691353b50301fe4a226cedbb54763 Merge: 4b7b57d1e4a3c64c17Author: Maksim Kazantsev <m.kazantsev@adguard.com> Date: Wed Aug 5 17:16:34 2026 +0400 Merge branch 'master' into AGDNS-4363-rm-more-old-log-from-pkg-home commit 4b7b57d1ee72038dee7c83a064ba2d21a3b26a85 Author: Maksim Kazantsev <m.kazantsev@adguard.com> Date: Wed Aug 5 17:13:59 2026 +0400 home: imp code; imp docs; make: commit ddb27dd78bf8ef2f9f9c8ce6c34ce45306005acd Author: Maksim Kazantsev <m.kazantsev@adguard.com> Date: Wed Aug 5 11:24:00 2026 +0400 home: rm old log; scripts: upd;
This commit is contained in:
1 parent
9800b51e60
commit
b2e25729e1
6 files changed
+84
-50
No files matched your search
@@ -659,7 +659,7 @@ func startMods(
|
||||
|
||||
err = startDNSServer()
|
||||
if err != nil {
|
||||
closeDNSServer(ctx)
|
||||
closeDNSServer(ctx, baseLogger)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
+11
-8
@@ -23,7 +23,6 @@ import (
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/stats"
|
||||
"github.com/AdguardTeam/dnscrypt"
|
||||
"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/httputil"
|
||||
@@ -155,7 +154,7 @@ func initDNSServer(
|
||||
// error and consider removing this defer.
|
||||
defer func() {
|
||||
if err != nil {
|
||||
closeDNSServer(ctx)
|
||||
closeDNSServer(ctx, params.Logger)
|
||||
}
|
||||
}()
|
||||
if err != nil {
|
||||
@@ -480,7 +479,9 @@ func startDNSServer() (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func stopDNSServer(ctx context.Context) (err error) {
|
||||
// stopDNSServer stops the DNS server and closes all the DNS modules. l must
|
||||
// not be nil.
|
||||
func stopDNSServer(ctx context.Context, l *slog.Logger) (err error) {
|
||||
if !isRunning() {
|
||||
return nil
|
||||
}
|
||||
@@ -495,12 +496,14 @@ func stopDNSServer(ctx context.Context) (err error) {
|
||||
return fmt.Errorf("closing clients container: %w", err)
|
||||
}
|
||||
|
||||
closeDNSServer(ctx)
|
||||
closeDNSServer(ctx, l)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func closeDNSServer(ctx context.Context) {
|
||||
// closeDNSServer closes the DNS server and the modules it depends on. l must
|
||||
// not be nil.
|
||||
func closeDNSServer(ctx context.Context, l *slog.Logger) {
|
||||
// DNS forward module must be closed BEFORE stats or queryLog because it depends on them
|
||||
if globalContext.dnsServer != nil {
|
||||
globalContext.dnsServer.Close(ctx)
|
||||
@@ -514,18 +517,18 @@ func closeDNSServer(ctx context.Context) {
|
||||
if globalContext.stats != nil {
|
||||
err := globalContext.stats.Close()
|
||||
if err != nil {
|
||||
log.Error("closing stats: %s", err)
|
||||
l.ErrorContext(ctx, "closing stats", slogutil.KeyError, err)
|
||||
}
|
||||
}
|
||||
|
||||
if globalContext.queryLog != nil {
|
||||
err := globalContext.queryLog.Shutdown(ctx)
|
||||
if err != nil {
|
||||
log.Error("closing query log: %s", err)
|
||||
l.ErrorContext(ctx, "closing query log", slogutil.KeyError, err)
|
||||
}
|
||||
}
|
||||
|
||||
log.Debug("all dns modules are closed")
|
||||
l.DebugContext(ctx, "all dns modules are closed")
|
||||
}
|
||||
|
||||
// checkStatsAndQuerylogDirs checks and returns directory paths to store
|
||||
|
||||
+46
-32
@@ -5,6 +5,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"net/netip"
|
||||
@@ -40,7 +41,6 @@ import (
|
||||
"github.com/AdguardTeam/dnsproxy/upstream"
|
||||
"github.com/AdguardTeam/golibs/errors"
|
||||
"github.com/AdguardTeam/golibs/hostsfile"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/AdguardTeam/golibs/logutil/slogutil"
|
||||
"github.com/AdguardTeam/golibs/netutil"
|
||||
"github.com/AdguardTeam/golibs/netutil/httputil"
|
||||
@@ -103,7 +103,7 @@ func Main(clientBuildFS fs.FS) {
|
||||
|
||||
// Configure log level and output.
|
||||
err = configureLogger(ls, workDir)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
// Print the first message after logger is configured.
|
||||
baseLogger.InfoContext(ctx, "starting adguard home", "version", version.Full())
|
||||
@@ -115,7 +115,7 @@ func Main(clientBuildFS fs.FS) {
|
||||
var glTokenFileRoot *os.Root
|
||||
if opts.glinetMode {
|
||||
glTokenFileRoot, err = os.OpenRoot("/tmp/")
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
}
|
||||
|
||||
done := make(chan struct{})
|
||||
@@ -123,7 +123,7 @@ func Main(clientBuildFS fs.FS) {
|
||||
signals := make(chan os.Signal, 1)
|
||||
signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP, syscall.SIGQUIT)
|
||||
|
||||
pidFilePath := setPIDFilePath(opts)
|
||||
pidFilePath := setPIDFilePath(ctx, baseLogger, opts)
|
||||
|
||||
var (
|
||||
hc *aghnet.HostsContainer
|
||||
@@ -131,7 +131,7 @@ func Main(clientBuildFS fs.FS) {
|
||||
)
|
||||
if !opts.noEtcHosts {
|
||||
hc, hcWatcher, err = newHostsContainer(ctx, baseLogger)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
}
|
||||
|
||||
sigHdlrLogger := baseLogger.With(slogutil.KeyPrefix, "signalhdlr")
|
||||
@@ -374,9 +374,9 @@ func initContextClients(
|
||||
}
|
||||
|
||||
// setPIDFilePath writes the PID value to a file and returns its path, if the
|
||||
// PID file option is specified.
|
||||
func setPIDFilePath(opts options) (pidFilePath string) {
|
||||
if opts.pidFile != "" && !opts.performUpdate && writePIDFile(opts.pidFile) {
|
||||
// PID file option is specified. l must not be nil.
|
||||
func setPIDFilePath(ctx context.Context, l *slog.Logger, opts options) (pidFilePath string) {
|
||||
if opts.pidFile != "" && !opts.performUpdate && writePIDFile(ctx, l, opts.pidFile) {
|
||||
pidFilePath = opts.pidFile
|
||||
}
|
||||
|
||||
@@ -756,9 +756,13 @@ func suggestedWebPort(ctx context.Context, l *slog.Logger) (p uint16) {
|
||||
return uint16(v)
|
||||
}
|
||||
|
||||
func fatalOnError(err error) {
|
||||
// fatalOnError logs err and exits with a failure exit code if err is not nil.
|
||||
// l must not be nil.
|
||||
func fatalOnError(ctx context.Context, l *slog.Logger, err error) {
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
l.ErrorContext(ctx, "fatal error", slogutil.KeyError, err)
|
||||
|
||||
os.Exit(osutil.ExitCodeFailure)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -791,7 +795,7 @@ func run(
|
||||
setupContext(ctx, baseLogger, opts, workDir, confPath, isFirstRun)
|
||||
|
||||
err := configureOS(ctx, baseLogger, config)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
// Clients package uses filtering package's static data
|
||||
// (filtering.BlockedSvcKnown()), so we have to initialize filtering static
|
||||
@@ -806,10 +810,10 @@ func run(
|
||||
)
|
||||
|
||||
err = initContextClients(ctx, baseLogger, sigHdlr, confModifier, httpReg, workDir, hc)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
tlsMgr, err := initTLS(ctx, baseLogger, sigHdlr, confModifier, httpReg)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
err = setupDNSFilteringConf(
|
||||
ctx,
|
||||
@@ -821,19 +825,23 @@ func run(
|
||||
workDir,
|
||||
hc,
|
||||
)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
err = setupBindOpts(opts)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
upd, isCustomURL := initUpdate(ctx, baseLogger, opts, tlsMgr, isFirstRun, workDir, confPath)
|
||||
|
||||
dataDirPath := filepath.Join(workDir, dataDir)
|
||||
err = os.MkdirAll(dataDirPath, aghos.DefaultPermDir)
|
||||
fatalOnError(errors.Annotate(err, "creating DNS data dir at %s: %w", dataDirPath))
|
||||
fatalOnError(
|
||||
ctx,
|
||||
baseLogger,
|
||||
errors.Annotate(err, "creating dns data dir at %q: %w", dataDirPath),
|
||||
)
|
||||
|
||||
auth, err := initUsers(ctx, baseLogger, workDir, mux, opts.glinetMode, glTokenFileRoot)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
confModifier.setAuth(auth)
|
||||
|
||||
@@ -856,7 +864,7 @@ func run(
|
||||
}
|
||||
|
||||
web, err := newWeb(ctx, conf)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
mw.set(web)
|
||||
|
||||
@@ -865,7 +873,7 @@ func run(
|
||||
tlsMgr.setWebAPI(web)
|
||||
|
||||
statsDir, querylogDir, err := checkStatsAndQuerylogDirs(config, workDir)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
if !isFirstRun {
|
||||
runDNSServer(ctx, baseLogger, tlsMgr, confModifier, statsDir, querylogDir, httpReg, hc, web.conf.mux)
|
||||
@@ -896,15 +904,15 @@ func runDNSServer(
|
||||
mux httputil.Router,
|
||||
) {
|
||||
err := initDNS(ctx, slogLogger, tlsMgr, confModifier, httpReg, statsDir, querylogDir, hc, mux)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, slogLogger, err)
|
||||
|
||||
tlsMgr.start(ctx)
|
||||
|
||||
go func() {
|
||||
startErr := startDNSServer()
|
||||
if startErr != nil {
|
||||
closeDNSServer(ctx)
|
||||
fatalOnError(startErr)
|
||||
closeDNSServer(ctx, slogLogger)
|
||||
fatalOnError(ctx, slogLogger, startErr)
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -977,7 +985,7 @@ func initUpdate(
|
||||
confPath string,
|
||||
) (upd *updater.Updater, isCustomURL bool) {
|
||||
execPath, err := os.Executable()
|
||||
fatalOnError(errors.Annotate(err, "getting executable path: %w"))
|
||||
fatalOnError(ctx, baseLogger, errors.Annotate(err, "getting executable path: %w"))
|
||||
|
||||
updLogger := baseLogger.With(slogutil.KeyPrefix, "updater")
|
||||
upd, isCustomURL = newUpdater(
|
||||
@@ -996,7 +1004,7 @@ func initUpdate(
|
||||
if !isFirstRun {
|
||||
// Save the updated config.
|
||||
err = config.write(ctx, baseLogger, nil, nil, workDir, confPath)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, baseLogger, err)
|
||||
|
||||
if config.HTTPConfig.Pprof.Enabled {
|
||||
startPprof(baseLogger, config.HTTPConfig.Pprof.Port)
|
||||
@@ -1175,14 +1183,17 @@ func checkNetworkPermissions(ctx context.Context, l *slog.Logger) {
|
||||
l.InfoContext(ctx, "adguard home can bind to port 53")
|
||||
}
|
||||
|
||||
// Write PID to a file
|
||||
func writePIDFile(fn string) bool {
|
||||
// writePIDFile writes the PID of the current process to the file at fn. l
|
||||
// must not be nil.
|
||||
func writePIDFile(ctx context.Context, l *slog.Logger, fn string) (ok bool) {
|
||||
data := fmt.Sprintf("%d", os.Getpid())
|
||||
err := os.WriteFile(fn, []byte(data), 0o644)
|
||||
if err != nil {
|
||||
log.Error("Couldn't write PID to file %s: %v", fn, err)
|
||||
l.ErrorContext(ctx, "writing pid file", "path", fn, slogutil.KeyError, err)
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -1238,7 +1249,7 @@ func initWorkingDir(opts options) (workDir string, err error) {
|
||||
func cleanup(ctx context.Context, l *slog.Logger, hc *aghnet.HostsContainer) {
|
||||
l.InfoContext(ctx, "stopping adguard home")
|
||||
|
||||
err := stopDNSServer(ctx)
|
||||
err := stopDNSServer(ctx, l)
|
||||
if err != nil {
|
||||
l.ErrorContext(ctx, "stopping dns server", slogutil.KeyError, err)
|
||||
}
|
||||
@@ -1276,10 +1287,13 @@ func exitWithError() {
|
||||
// loadCmdLineOpts reads command line arguments and initializes configuration
|
||||
// from them. If there is an error or an effect, loadCmdLineOpts processes them
|
||||
// and exits.
|
||||
//
|
||||
// TODO(m.kazantsev): Consider refactoring the logs so that it
|
||||
// resembles AdGuard DNS CLI.
|
||||
func loadCmdLineOpts() (opts options) {
|
||||
opts, eff, err := parseCmdOpts(os.Args[0], os.Args[1:])
|
||||
if err != nil {
|
||||
log.Error("%s", err)
|
||||
log.Printf("error: %s\n", err)
|
||||
printHelp(os.Args[0])
|
||||
|
||||
exitWithError()
|
||||
@@ -1288,7 +1302,7 @@ func loadCmdLineOpts() (opts options) {
|
||||
if eff != nil {
|
||||
err = eff()
|
||||
if err != nil {
|
||||
log.Error("%s", err)
|
||||
log.Printf("error: %s\n", err)
|
||||
exitWithError()
|
||||
}
|
||||
|
||||
@@ -1417,7 +1431,7 @@ func cmdlineUpdate(
|
||||
tlsMgr,
|
||||
agh.EmptyConfigModifier{},
|
||||
)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, l, err)
|
||||
|
||||
l.InfoContext(ctx, "performing update via cli")
|
||||
|
||||
@@ -1435,7 +1449,7 @@ func cmdlineUpdate(
|
||||
}
|
||||
|
||||
err = upd.Update(ctx, isFirstRun)
|
||||
fatalOnError(err)
|
||||
fatalOnError(ctx, l, err)
|
||||
|
||||
err = restartService(ctx, l)
|
||||
if err != nil {
|
||||
|
||||
@@ -143,7 +143,7 @@ func readLogSettings(
|
||||
|
||||
err = yaml.Unmarshal(yamlFile, conf)
|
||||
if err != nil {
|
||||
log.Error("Couldn't get logging settings from the configuration: %s", err)
|
||||
l.ErrorContext(ctx, "getting logging settings from config", slogutil.KeyError, err)
|
||||
}
|
||||
|
||||
return &conf.Log
|
||||
|
||||
@@ -3,6 +3,7 @@ package home
|
||||
import (
|
||||
"fmt"
|
||||
"iter"
|
||||
"log"
|
||||
"net/netip"
|
||||
"os"
|
||||
"slices"
|
||||
@@ -11,7 +12,6 @@ import (
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/configmigrate"
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/version"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/AdguardTeam/golibs/osutil"
|
||||
"github.com/AdguardTeam/golibs/stringutil"
|
||||
)
|
||||
@@ -264,7 +264,7 @@ var cmdLineOpts = []cmdLineOpt{{
|
||||
updateWithValue: nil,
|
||||
updateNoValue: nil,
|
||||
effect: func(_ options, _ string) (f effect, err error) {
|
||||
log.Info("warning: using --no-mem-optimization flag has no effect and is deprecated")
|
||||
log.Println("warning: using --no-mem-optimization flag has no effect and is deprecated")
|
||||
|
||||
return nil, nil
|
||||
},
|
||||
@@ -276,7 +276,7 @@ var cmdLineOpts = []cmdLineOpt{{
|
||||
updateWithValue: nil,
|
||||
updateNoValue: func(o options) (options, error) { o.noEtcHosts = true; return o, nil },
|
||||
effect: func(_ options, _ string) (f effect, err error) {
|
||||
log.Info(
|
||||
log.Println(
|
||||
"warning: --no-etc-hosts flag is deprecated " +
|
||||
"and will be removed in the future versions; " +
|
||||
"set clients.runtime_sources.hosts and dns.hostsfile_enabled " +
|
||||
|
||||
+22
-5
@@ -3,7 +3,7 @@
|
||||
# This comment is used to simplify checking local copies of the script. Bump
|
||||
# this number every time a significant change is made to this script.
|
||||
#
|
||||
# AdGuard-Project-Version: 18
|
||||
# AdGuard-Project-Version: 19
|
||||
|
||||
verbose="${VERBOSE:-0}"
|
||||
readonly verbose
|
||||
@@ -34,7 +34,9 @@ set -f -u
|
||||
#
|
||||
# * Packages log and github.com/AdguardTeam/golibs/log are replaced by
|
||||
# stdlib's new package log/slog and AdGuard's new utilities package
|
||||
# github.com/AdguardTeam/golibs/logutil/slogutil.
|
||||
# github.com/AdguardTeam/golibs/logutil/slogutil. The exceptions are
|
||||
# packages home, dhcpd, and aghos, where package log is used before the
|
||||
# main logger is configured.
|
||||
#
|
||||
# * Package github.com/prometheus/client_golang/prometheus/promauto is not
|
||||
# recommended, as it encourages reliance on global state.
|
||||
@@ -56,8 +58,9 @@ set -f -u
|
||||
# * Package unsafe is… unsafe.
|
||||
#
|
||||
# Currently, the only standard exception are files generated from protobuf
|
||||
# schemas, which use package reflect. If your project needs more exceptions,
|
||||
# add and document them.
|
||||
# schemas, which use package reflect. Additionally, some packages are allowed
|
||||
# to use package log, see above. If your project needs more exceptions, add and
|
||||
# document them.
|
||||
#
|
||||
# NOTE: Flag -H for grep is non-POSIX but all of Busybox, GNU, macOS, and
|
||||
# OpenBSD support it.
|
||||
@@ -86,13 +89,27 @@ blocklist_imports() {
|
||||
'-e' "$import_or_tab"'"golang.org/x/exp/slices"$' \
|
||||
'-e' "$import_or_tab"'"golang.org/x/net/context"$' \
|
||||
'-e' "$import_or_tab"'"io/ioutil"$' \
|
||||
'-e' "$import_or_tab"'"log"$' \
|
||||
'-e' "$import_or_tab"'"reflect"$' \
|
||||
'-e' "$import_or_tab"'"sort"$' \
|
||||
'-e' "$import_or_tab"'"unsafe"$' \
|
||||
'-n' \
|
||||
'{}' \
|
||||
';'
|
||||
|
||||
# Package home is allowed to use package log, see the comment above.
|
||||
find_with_ignore \
|
||||
-type 'f' \
|
||||
-name '*.go' \
|
||||
'!' '(' \
|
||||
-path './internal/home/*' \
|
||||
')' \
|
||||
-exec \
|
||||
'grep' \
|
||||
'-H' \
|
||||
'-e' "$import_or_tab"'"log"$' \
|
||||
'-n' \
|
||||
'{}' \
|
||||
';'
|
||||
}
|
||||
|
||||
# method_const is a simple check against the usage of some raw strings and
|
||||
|
||||
Reference in new issue
Block a user