package config import ( "github.com/songquanpeng/one-api/common/env" "os" "strconv" "sync" "time" "github.com/google/uuid" ) var SystemName = "One API" var ServerAddress = "http://localhost:3000" var Footer = "" var Logo = "" var TopUpLink = "" var ChatLink = "" var QuotaPerUnit = 500 * 1000.0 // $0.002 / 1K tokens var DisplayInCurrencyEnabled = true var DisplayTokenStatEnabled = true // Any options with "Secret", "Token" in its key won't be return by GetOptions var SessionSecret = uuid.New().String() var OptionMap map[string]string var OptionMapRWMutex sync.RWMutex var ItemsPerPage = 10 var MaxRecentItems = 100 var PasswordLoginEnabled = true var PasswordRegisterEnabled = true var EmailVerificationEnabled = false var GitHubOAuthEnabled = false var WeChatAuthEnabled = false var TurnstileCheckEnabled = false var RegisterEnabled = true var EmailDomainRestrictionEnabled = false var EmailDomainWhitelist = []string{ "gmail.com", "163.com", "126.com", "qq.com", "outlook.com", "hotmail.com", "icloud.com", "yahoo.com", "foxmail.com", } var DebugEnabled = os.Getenv("DEBUG") == "true" var DebugSQLEnabled = os.Getenv("DEBUG_SQL") == "true" var MemoryCacheEnabled = os.Getenv("MEMORY_CACHE_ENABLED") == "true" var LogConsumeEnabled = true var SMTPServer = "" var SMTPPort = 587 var SMTPAccount = "" var SMTPFrom = "" var SMTPToken = "" var GitHubClientId = "" var GitHubClientSecret = "" var LarkClientId = "" var LarkClientSecret = "" var WeChatServerAddress = "" var WeChatServerToken = "" var WeChatAccountQRCodeImageURL = "" var MessagePusherAddress = "" var MessagePusherToken = "" var TurnstileSiteKey = "" var TurnstileSecretKey = "" var QuotaForNewUser int64 = 0 var QuotaForInviter int64 = 0 var QuotaForInvitee int64 = 0 var ChannelDisableThreshold = 5.0 var AutomaticDisableChannelEnabled = false var AutomaticEnableChannelEnabled = false var QuotaRemindThreshold int64 = 1000 var PreConsumedQuota int64 = 500 var ApproximateTokenEnabled = false var RetryTimes = 0 var RootUserEmail = "" var IsMasterNode = os.Getenv("NODE_TYPE") != "slave" var requestInterval, _ = strconv.Atoi(os.Getenv("POLLING_INTERVAL")) var RequestInterval = time.Duration(requestInterval) * time.Second var SyncFrequency = env.Int("SYNC_FREQUENCY", 10*60) // unit is second var BatchUpdateEnabled = false var BatchUpdateInterval = env.Int("BATCH_UPDATE_INTERVAL", 5) var RelayTimeout = env.Int("RELAY_TIMEOUT", 0) // unit is second var GeminiSafetySetting = env.String("GEMINI_SAFETY_SETTING", "BLOCK_NONE") var Theme = env.String("THEME", "default") var ValidThemes = map[string]bool{ "default": true, "berry": true, "air": true, } // All duration's unit is seconds // Shouldn't larger then RateLimitKeyExpirationDuration var ( GlobalApiRateLimitNum = env.Int("GLOBAL_API_RATE_LIMIT", 180) GlobalApiRateLimitDuration int64 = 3 * 60 GlobalWebRateLimitNum = env.Int("GLOBAL_WEB_RATE_LIMIT", 60) GlobalWebRateLimitDuration int64 = 3 * 60 UploadRateLimitNum = 10 UploadRateLimitDuration int64 = 60 DownloadRateLimitNum = 10 DownloadRateLimitDuration int64 = 60 CriticalRateLimitNum = 20 CriticalRateLimitDuration int64 = 20 * 60 ) var RateLimitKeyExpirationDuration = 20 * time.Minute var EnableMetric = env.Bool("ENABLE_METRIC", false) var MetricQueueSize = env.Int("METRIC_QUEUE_SIZE", 10) var MetricSuccessRateThreshold = env.Float64("METRIC_SUCCESS_RATE_THRESHOLD", 0.8) var MetricSuccessChanSize = env.Int("METRIC_SUCCESS_CHAN_SIZE", 1024) var MetricFailChanSize = env.Int("METRIC_FAIL_CHAN_SIZE", 128) var InitialRootToken = os.Getenv("INITIAL_ROOT_TOKEN") var GeminiVersion = env.String("GEMINI_VERSION", "v1")