cmd/cli: do not validate invalid syntax config

If the remote custom config is an invalid syntax config, we should not
do rules validation, prevent unnecessary error messages printed.
This commit is contained in:
Cuong Manh Le
2025-03-01 00:02:42 +07:00
committed by Cuong Manh Le
parent 20e61550c2
commit 1ad63827e1
2 changed files with 12 additions and 8 deletions

View File

@@ -1843,7 +1843,11 @@ func doValidateCdRemoteConfig(cdUID string, fatal bool) error {
oldV := v
var cfgErr error
remoteCfg := &ctrld.Config{}
if cfgErr = validateCdRemoteConfig(rc, remoteCfg); cfgErr != nil {
if cfgErr = validateCdRemoteConfig(rc, remoteCfg); cfgErr == nil {
setListenerDefaultValue(remoteCfg)
setNetworkDefaultValue(remoteCfg)
cfgErr = validateConfig(remoteCfg)
} else {
if errors.As(cfgErr, &viper.ConfigParseError{}) {
if configStr, _ := base64.StdEncoding.DecodeString(rc.Ctrld.CustomConfig); len(configStr) > 0 {
tmpDir := os.TempDir()
@@ -1866,11 +1870,7 @@ func doValidateCdRemoteConfig(cdUID string, fatal bool) error {
} else {
mainLog.Load().Error().Msgf("failed to unmarshal custom config: %v", err)
}
} else {
setListenerDefaultValue(remoteCfg)
setNetworkDefaultValue(remoteCfg)
}
cfgErr = validateConfig(remoteCfg)
if cfgErr != nil {
mainLog.Load().Warn().Msg("disregarding invalid custom config")
}

View File

@@ -351,15 +351,19 @@ func (p *prog) apiConfigReload() {
if resolverConfig.Ctrld.CustomLastUpdate > lastUpdated || forced {
lastUpdated = time.Now().Unix()
cfg := &ctrld.Config{}
if err := validateCdRemoteConfig(resolverConfig, cfg); err != nil {
var cfgErr error
if cfgErr = validateCdRemoteConfig(resolverConfig, cfg); cfgErr == nil {
setListenerDefaultValue(cfg)
setNetworkDefaultValue(cfg)
cfgErr = validateConfig(cfg)
}
if cfgErr != nil {
logger.Warn().Err(err).Msg("skipping invalid custom config")
if _, err := controld.UpdateCustomLastFailed(cdUID, rootCmd.Version, cdDev, true); err != nil {
logger.Error().Err(err).Msg("could not mark custom last update failed")
}
return
}
setListenerDefaultValue(cfg)
setNetworkDefaultValue(cfg)
logger.Debug().Msg("custom config changes detected, reloading...")
p.apiReloadCh <- cfg
} else {