mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2025-05-08 16:50:12 +03:00
Pull request 1984: AG-25392 confmigrate vol.1
Merge in DNS/adguard-home from AG-25392-confmigrate to master Squashed commit of the following: commit 695717573e228a71e387d1b597f0d32f2eb20e67 Merge: 2c4f3e09627ec6cd59
Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Thu Aug 31 16:22:55 2023 +0300 Merge branch 'master' into AG-25392-confmigrate commit 2c4f3e096bb14724c0d0fcc20e5ac1462068504e Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Thu Aug 31 16:13:14 2023 +0300 all: imp code commit 0fc6854598a67fc5ea74a93ff8c99b32886f43f1 Merge: 719f2db95a2ca8b5b4
Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Aug 30 18:30:36 2023 +0300 Merge branch 'master' into AG-25392-confmigrate commit 719f2db95a337f343752f5b18ce935bae83127be Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Aug 30 15:50:52 2023 +0300 home: don't reread config commit 2e25fb738b11675d25574da9e5eebacd72a793ba Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Aug 30 15:43:57 2023 +0300 all: imp code commit be3021f03097e18228dd9904dacc283f2576472e Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Aug 30 15:25:46 2023 +0300 all: introduce confmigrate
This commit is contained in:
parent
27ec6cd59e
commit
53625d8913
6 changed files with 252 additions and 193 deletions
internal/home
|
@ -10,6 +10,7 @@ import (
|
|||
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/aghalg"
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/aghtls"
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/confmigrate"
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/dhcpd"
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/dnsforward"
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/filtering"
|
||||
|
@ -415,7 +416,7 @@ var config = &configuration{
|
|||
MaxAge: 3,
|
||||
},
|
||||
OSConfig: &osConfig{},
|
||||
SchemaVersion: currentSchemaVersion,
|
||||
SchemaVersion: confmigrate.CurrentSchemaVersion,
|
||||
Theme: ThemeAuto,
|
||||
}
|
||||
|
||||
|
@ -431,6 +432,7 @@ func (c *configuration) getConfigFilename() string {
|
|||
if !filepath.IsAbs(configFile) {
|
||||
configFile = filepath.Join(Context.workDir, configFile)
|
||||
}
|
||||
|
||||
return configFile
|
||||
}
|
||||
|
||||
|
@ -450,21 +452,56 @@ func validateBindHosts(conf *configuration) (err error) {
|
|||
return nil
|
||||
}
|
||||
|
||||
// parseConfig loads configuration from the YAML file
|
||||
// parseConfig loads configuration from the YAML file, upgrading it if
|
||||
// necessary.
|
||||
func parseConfig() (err error) {
|
||||
var fileData []byte
|
||||
fileData, err = readConfigFile()
|
||||
// Do the upgrade if necessary.
|
||||
config.fileData, err = readConfigFile()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
config.fileData = nil
|
||||
err = yaml.Unmarshal(fileData, &config)
|
||||
migrator := confmigrate.New(&confmigrate.Config{
|
||||
WorkingDir: Context.workDir,
|
||||
})
|
||||
|
||||
var upgraded bool
|
||||
config.fileData, upgraded, err = migrator.Migrate(config.fileData)
|
||||
if err != nil {
|
||||
// Don't wrap the error, because it's informative enough as is.
|
||||
return err
|
||||
} else if upgraded {
|
||||
err = maybe.WriteFile(config.getConfigFilename(), config.fileData, 0o644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("writing new config: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
err = yaml.Unmarshal(config.fileData, &config)
|
||||
if err != nil {
|
||||
// Don't wrap the error since it's informative enough as is.
|
||||
return err
|
||||
}
|
||||
|
||||
err = validateConfig()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if config.DNS.UpstreamTimeout.Duration == 0 {
|
||||
config.DNS.UpstreamTimeout = timeutil.Duration{Duration: dnsforward.DefaultTimeout}
|
||||
}
|
||||
|
||||
err = setContextTLSCipherIDs()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// validateConfig returns error if the configuration is invalid.
|
||||
func validateConfig() (err error) {
|
||||
err = validateBindHosts(config)
|
||||
if err != nil {
|
||||
// Don't wrap the error since it's informative enough as is.
|
||||
|
@ -500,15 +537,6 @@ func parseConfig() (err error) {
|
|||
config.Filtering.FiltersUpdateIntervalHours = 24
|
||||
}
|
||||
|
||||
if config.DNS.UpstreamTimeout.Duration == 0 {
|
||||
config.DNS.UpstreamTimeout = timeutil.Duration{Duration: dnsforward.DefaultTimeout}
|
||||
}
|
||||
|
||||
err = setContextTLSCipherIDs()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue