Merge pull request #111 from router-for-me/cloud

fix(server): Handle empty/invalid config in cloud deploy mode
This commit is contained in:
Luis Pater
2025-10-11 22:40:51 +08:00
committed by GitHub
2 changed files with 10 additions and 5 deletions

View File

@@ -122,15 +122,20 @@ func main() {
log.Fatalf("failed to load config: %v", err) log.Fatalf("failed to load config: %v", err)
} }
// Log if we're running without a config file in cloud deploy mode // In cloud deploy mode, check if we have a valid configuration
var configFileExists bool var configFileExists bool
if isCloudDeploy { if isCloudDeploy {
if info, errStat := os.Stat(configFilePath); errStat != nil { if info, errStat := os.Stat(configFilePath); errStat != nil {
// Don't mislead: API server will not start until configuration is provided. // Don't mislead: API server will not start until configuration is provided.
log.Info("Cloud deploy mode: No configuration file detected; standing by for configuration (API server not started)") log.Info("Cloud deploy mode: No configuration file detected; standing by for configuration")
configFileExists = false configFileExists = false
} else if info.IsDir() { } else if info.IsDir() {
log.Info("Cloud deploy mode: Config path is a directory; standing by for configuration (API server not started)") log.Info("Cloud deploy mode: Config path is a directory; standing by for configuration")
configFileExists = false
} else if cfg.Port == 0 {
// LoadConfigOptional returns empty config when file is empty or invalid.
// Config file exists but is empty or invalid; treat as missing config
log.Info("Cloud deploy mode: Configuration file is empty or invalid; standing by for valid configuration")
configFileExists = false configFileExists = false
} else { } else {
log.Info("Cloud deploy mode: Configuration file detected; starting service") log.Info("Cloud deploy mode: Configuration file detected; starting service")

View File

@@ -180,8 +180,8 @@ func LoadConfigOptional(configFile string, optional bool) (*Config, error) {
// Unmarshal the YAML data into the Config struct. // Unmarshal the YAML data into the Config struct.
var cfg Config var cfg Config
// Set defaults before unmarshal so that absent keys keep defaults. // Set defaults before unmarshal so that absent keys keep defaults.
cfg.LoggingToFile = true cfg.LoggingToFile = false
cfg.UsageStatisticsEnabled = true cfg.UsageStatisticsEnabled = false
if err = yaml.Unmarshal(data, &cfg); err != nil { if err = yaml.Unmarshal(data, &cfg); err != nil {
if optional { if optional {
// In cloud deploy mode, if YAML parsing fails, return empty config instead of error. // In cloud deploy mode, if YAML parsing fails, return empty config instead of error.