| | package common |
| |
|
| | import ( |
| | "flag" |
| | "fmt" |
| | "log" |
| | "os" |
| | "path/filepath" |
| | "strconv" |
| | "time" |
| | ) |
| |
|
| | var ( |
| | Port = flag.Int("port", 3000, "the listening port") |
| | PrintVersion = flag.Bool("version", false, "print version and exit") |
| | PrintHelp = flag.Bool("help", false, "print help and exit") |
| | LogDir = flag.String("log-dir", "./logs", "specify the log directory") |
| | ) |
| |
|
| | func printHelp() { |
| | fmt.Println("New API " + Version + " - All in one API service for OpenAI API.") |
| | fmt.Println("Copyright (C) 2023 JustSong. All rights reserved.") |
| | fmt.Println("GitHub: https://github.com/songquanpeng/one-api") |
| | fmt.Println("Usage: one-api [--port <port>] [--log-dir <log directory>] [--version] [--help]") |
| | } |
| |
|
| | func LoadEnv() { |
| | flag.Parse() |
| |
|
| | if *PrintVersion { |
| | fmt.Println(Version) |
| | os.Exit(0) |
| | } |
| |
|
| | if *PrintHelp { |
| | printHelp() |
| | os.Exit(0) |
| | } |
| |
|
| | if os.Getenv("SESSION_SECRET") != "" { |
| | ss := os.Getenv("SESSION_SECRET") |
| | if ss == "random_string" { |
| | log.Println("WARNING: SESSION_SECRET is set to the default value 'random_string', please change it to a random string.") |
| | log.Println("警告:SESSION_SECRET被设置为默认值'random_string',请修改为随机字符串。") |
| | log.Fatal("Please set SESSION_SECRET to a random string.") |
| | } else { |
| | SessionSecret = ss |
| | } |
| | } |
| | if os.Getenv("CRYPTO_SECRET") != "" { |
| | CryptoSecret = os.Getenv("CRYPTO_SECRET") |
| | } else { |
| | CryptoSecret = SessionSecret |
| | } |
| | if os.Getenv("SQLITE_PATH") != "" { |
| | SQLitePath = os.Getenv("SQLITE_PATH") |
| | } |
| | if *LogDir != "" { |
| | var err error |
| | *LogDir, err = filepath.Abs(*LogDir) |
| | if err != nil { |
| | log.Fatal(err) |
| | } |
| | if _, err := os.Stat(*LogDir); os.IsNotExist(err) { |
| | err = os.Mkdir(*LogDir, 0777) |
| | if err != nil { |
| | log.Fatal(err) |
| | } |
| | } |
| | } |
| |
|
| | |
| | DebugEnabled = os.Getenv("DEBUG") == "true" |
| | MemoryCacheEnabled = os.Getenv("MEMORY_CACHE_ENABLED") == "true" |
| | IsMasterNode = os.Getenv("NODE_TYPE") != "slave" |
| |
|
| | |
| | requestInterval, _ = strconv.Atoi(os.Getenv("POLLING_INTERVAL")) |
| | RequestInterval = time.Duration(requestInterval) * time.Second |
| |
|
| | |
| | SyncFrequency = GetEnvOrDefault("SYNC_FREQUENCY", 60) |
| | BatchUpdateInterval = GetEnvOrDefault("BATCH_UPDATE_INTERVAL", 5) |
| | RelayTimeout = GetEnvOrDefault("RELAY_TIMEOUT", 0) |
| |
|
| | |
| | GeminiSafetySetting = GetEnvOrDefaultString("GEMINI_SAFETY_SETTING", "BLOCK_NONE") |
| | CohereSafetySetting = GetEnvOrDefaultString("COHERE_SAFETY_SETTING", "NONE") |
| |
|
| | |
| | GlobalApiRateLimitEnable = GetEnvOrDefaultBool("GLOBAL_API_RATE_LIMIT_ENABLE", true) |
| | GlobalApiRateLimitNum = GetEnvOrDefault("GLOBAL_API_RATE_LIMIT", 180) |
| | GlobalApiRateLimitDuration = int64(GetEnvOrDefault("GLOBAL_API_RATE_LIMIT_DURATION", 180)) |
| |
|
| | GlobalWebRateLimitEnable = GetEnvOrDefaultBool("GLOBAL_WEB_RATE_LIMIT_ENABLE", true) |
| | GlobalWebRateLimitNum = GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT", 60) |
| | GlobalWebRateLimitDuration = int64(GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT_DURATION", 180)) |
| | } |
| |
|