mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2025-05-02 14:10:29 +03:00
Pull request 2145: 5992-stats-qlog-custom-dir
Updates #5992. Squashed commit of the following: commit 39d3df705ef68672ec9406d81e00daf52a3b3c70 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Mon Feb 12 15:25:22 2024 +0300 all: fix typo commit 21e03e4d5a7624a68add53734a127652053845a2 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Mon Feb 12 15:22:35 2024 +0300 all: upd docs commit 11180061619f4352774d4bc8c85b481ae28f0d0b Merge: ac5fd8dc87f8370744
Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Mon Feb 12 14:57:35 2024 +0300 Merge branch 'master' into 5992-stats-qlog-custom-dir commit ac5fd8dc82c9c6e88a182cd6e6aed07bf3548639 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Wed Feb 7 14:55:51 2024 +0300 all: upd chlog commit fe00652e158db65e0e735a19cf88aa999ece3e62 Merge: 21ad1ecf756b98080f
Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Wed Feb 7 14:53:24 2024 +0300 Merge branch 'master' into 5992-stats-qlog-custom-dir commit 21ad1ecf7b30c3c8f45d54210d7297966126b0f7 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Wed Feb 7 14:52:12 2024 +0300 home: imp docs commit 739b158de77e673ef80efdaa523044939ea879d5 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Mon Feb 5 20:15:50 2024 +0300 home: add stats qlog custom dir
This commit is contained in:
parent
7f83707449
commit
d338451faf
11 changed files with 78 additions and 18 deletions
internal/home
|
@ -46,12 +46,15 @@ func onConfigModified() {
|
|||
// server and initializes it at last. It also must not be called unless
|
||||
// [config] and [Context] are initialized.
|
||||
func initDNS() (err error) {
|
||||
baseDir := Context.getDataDir()
|
||||
|
||||
anonymizer := config.anonymizer()
|
||||
|
||||
statsDir, querylogDir, err := checkStatsAndQuerylogDirs(&Context, config)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
statsConf := stats.Config{
|
||||
Filename: filepath.Join(baseDir, "stats.db"),
|
||||
Filename: filepath.Join(statsDir, "stats.db"),
|
||||
Limit: config.Stats.Interval.Duration,
|
||||
ConfigModified: onConfigModified,
|
||||
HTTPRegister: httpRegister,
|
||||
|
@ -75,7 +78,7 @@ func initDNS() (err error) {
|
|||
ConfigModified: onConfigModified,
|
||||
HTTPRegister: httpRegister,
|
||||
FindClient: Context.clients.findMultiple,
|
||||
BaseDir: baseDir,
|
||||
BaseDir: querylogDir,
|
||||
AnonymizeClientIP: config.DNS.AnonymizeClientIP,
|
||||
RotationIvl: config.QueryLog.Interval.Duration,
|
||||
MemSize: config.QueryLog.MemSize,
|
||||
|
@ -545,3 +548,50 @@ func (r safeSearchResolver) LookupIP(
|
|||
|
||||
return ips, nil
|
||||
}
|
||||
|
||||
// checkStatsAndQuerylogDirs checks and returns directory paths to store
|
||||
// statistics and query log.
|
||||
func checkStatsAndQuerylogDirs(
|
||||
ctx *homeContext,
|
||||
conf *configuration,
|
||||
) (statsDir, querylogDir string, err error) {
|
||||
baseDir := ctx.getDataDir()
|
||||
|
||||
statsDir = conf.Stats.DirPath
|
||||
if statsDir == "" {
|
||||
statsDir = baseDir
|
||||
} else {
|
||||
err = checkDir(statsDir)
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf("statistics: custom directory: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
querylogDir = conf.QueryLog.DirPath
|
||||
if querylogDir == "" {
|
||||
querylogDir = baseDir
|
||||
} else {
|
||||
err = checkDir(querylogDir)
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf("querylog: custom directory: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return statsDir, querylogDir, nil
|
||||
}
|
||||
|
||||
// checkDir checks if the path is a directory. It's used to check for
|
||||
// misconfiguration at startup.
|
||||
func checkDir(path string) (err error) {
|
||||
var fi os.FileInfo
|
||||
if fi, err = os.Stat(path); err != nil {
|
||||
// Don't wrap the error, since it's informative enough as is.
|
||||
return err
|
||||
}
|
||||
|
||||
if !fi.IsDir() {
|
||||
return fmt.Errorf("%q is not a directory", path)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue