fix(config): treat directory as absent for optional config in cloud deploy mode

This commit is contained in:
hkfires
2025-10-10 19:40:02 +08:00
parent ac01c74c02
commit 78738ca3f0
2 changed files with 11 additions and 4 deletions

View File

@@ -127,10 +127,13 @@ func main() {
// Log if we're running without a config file in cloud deploy mode
var configFileExists bool
if isCloudDeploy {
if _, err = os.Stat(configFilePath); os.IsNotExist(err) {
if info, errStat := os.Stat(configFilePath); errStat != nil {
// 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)")
configFileExists = false
} else if info.IsDir() {
log.Info("Cloud deploy mode: Config path is a directory; standing by for configuration (API server not started)")
configFileExists = false
} else {
log.Info("Cloud deploy mode: Configuration file detected; starting service")
configFileExists = true

View File

@@ -5,8 +5,10 @@
package config
import (
"errors"
"fmt"
"os"
"syscall"
"github.com/router-for-me/CLIProxyAPI/v6/sdk/config"
"golang.org/x/crypto/bcrypt"
@@ -196,10 +198,12 @@ func LoadConfigOptional(configFile string, optional bool) (*Config, error) {
// Read the entire configuration file into memory.
data, err := os.ReadFile(configFile)
if err != nil {
if optional && os.IsNotExist(err) {
// Missing and optional: return empty config.
if optional {
if os.IsNotExist(err) || errors.Is(err, syscall.EISDIR) {
// Missing and optional: return empty config (cloud deploy standby).
return &Config{}, nil
}
}
return nil, fmt.Errorf("failed to read config file: %w", err)
}