99 lines
3.1 KiB
Go
99 lines
3.1 KiB
Go
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 InitCommonEnv() {
|
||
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)
|
||
}
|
||
}
|
||
}
|
||
|
||
// Initialize variables from constants.go that were using environment variables
|
||
DebugEnabled = os.Getenv("DEBUG") == "true"
|
||
MemoryCacheEnabled = os.Getenv("MEMORY_CACHE_ENABLED") == "true"
|
||
IsMasterNode = os.Getenv("NODE_TYPE") != "slave"
|
||
|
||
// Parse requestInterval and set RequestInterval
|
||
requestInterval, _ = strconv.Atoi(os.Getenv("POLLING_INTERVAL"))
|
||
RequestInterval = time.Duration(requestInterval) * time.Second
|
||
|
||
// Initialize variables with GetEnvOrDefault
|
||
SyncFrequency = GetEnvOrDefault("SYNC_FREQUENCY", 60)
|
||
BatchUpdateInterval = GetEnvOrDefault("BATCH_UPDATE_INTERVAL", 5)
|
||
RelayTimeout = GetEnvOrDefault("RELAY_TIMEOUT", 0)
|
||
|
||
// Initialize string variables with GetEnvOrDefaultString
|
||
GeminiSafetySetting = GetEnvOrDefaultString("GEMINI_SAFETY_SETTING", "BLOCK_NONE")
|
||
CohereSafetySetting = GetEnvOrDefaultString("COHERE_SAFETY_SETTING", "NONE")
|
||
|
||
// Initialize rate limit variables
|
||
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))
|
||
}
|