| | package common |
| |
|
| | import ( |
| | "os" |
| | "strconv" |
| | "sync" |
| | "time" |
| |
|
| | "github.com/google/uuid" |
| | ) |
| |
|
| | var StartTime = time.Now().Unix() |
| | var Version = "v0.0.0" |
| | var SystemName = "One API" |
| | var ServerAddress = "http://localhost:3000" |
| | var Footer = "" |
| | var Logo = "" |
| | var TopUpLink = "" |
| | var ChatLink = "" |
| | var QuotaPerUnit = 500 * 1000.0 |
| | var DisplayInCurrencyEnabled = true |
| | var DisplayTokenStatEnabled = true |
| |
|
| | var UsingSQLite = false |
| |
|
| | |
| |
|
| | var SessionSecret = uuid.New().String() |
| | var SQLitePath = "one-api.db" |
| |
|
| | 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 LogConsumeEnabled = true |
| |
|
| | var SMTPServer = "" |
| | var SMTPPort = 587 |
| | var SMTPAccount = "" |
| | var SMTPFrom = "" |
| | var SMTPToken = "" |
| |
|
| | var GitHubClientId = "" |
| | var GitHubClientSecret = "" |
| |
|
| | var WeChatServerAddress = "" |
| | var WeChatServerToken = "" |
| | var WeChatAccountQRCodeImageURL = "" |
| |
|
| | var TurnstileSiteKey = "" |
| | var TurnstileSecretKey = "" |
| |
|
| | var QuotaForNewUser = 0 |
| | var QuotaForInviter = 0 |
| | var QuotaForInvitee = 0 |
| | var ChannelDisableThreshold = 5.0 |
| | var AutomaticDisableChannelEnabled = false |
| | var QuotaRemindThreshold = 1000 |
| | var PreConsumedQuota = 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 = 10 * 60 |
| |
|
| | const ( |
| | RoleGuestUser = 0 |
| | RoleCommonUser = 1 |
| | RoleAdminUser = 10 |
| | RoleRootUser = 100 |
| | ) |
| |
|
| | var ( |
| | FileUploadPermission = RoleGuestUser |
| | FileDownloadPermission = RoleGuestUser |
| | ImageUploadPermission = RoleGuestUser |
| | ImageDownloadPermission = RoleGuestUser |
| | ) |
| |
|
| | |
| | |
| | var ( |
| | GlobalApiRateLimitNum = 180 |
| | GlobalApiRateLimitDuration int64 = 3 * 60 |
| |
|
| | GlobalWebRateLimitNum = 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 |
| |
|
| | const ( |
| | UserStatusEnabled = 1 |
| | UserStatusDisabled = 2 |
| | ) |
| |
|
| | const ( |
| | TokenStatusEnabled = 1 |
| | TokenStatusDisabled = 2 |
| | TokenStatusExpired = 3 |
| | TokenStatusExhausted = 4 |
| | ) |
| |
|
| | const ( |
| | RedemptionCodeStatusEnabled = 1 |
| | RedemptionCodeStatusDisabled = 2 |
| | RedemptionCodeStatusUsed = 3 |
| | ) |
| |
|
| | const ( |
| | ChannelStatusUnknown = 0 |
| | ChannelStatusEnabled = 1 |
| | ChannelStatusDisabled = 2 |
| | ) |
| |
|
| | const ( |
| | ChannelTypeUnknown = 0 |
| | ChannelTypeOpenAI = 1 |
| | ChannelTypeAPI2D = 2 |
| | ChannelTypeAzure = 3 |
| | ChannelTypeCloseAI = 4 |
| | ChannelTypeOpenAISB = 5 |
| | ChannelTypeOpenAIMax = 6 |
| | ChannelTypeOhMyGPT = 7 |
| | ChannelTypeCustom = 8 |
| | ChannelTypeAILS = 9 |
| | ChannelTypeAIProxy = 10 |
| | ChannelTypePaLM = 11 |
| | ChannelTypeAPI2GPT = 12 |
| | ChannelTypeAIGC2D = 13 |
| | ChannelTypeAnthropic = 14 |
| | ChannelTypeBaidu = 15 |
| | ChannelTypeZhipu = 16 |
| | ChannelTypeAli = 17 |
| | ChannelTypeXunfei = 18 |
| | ChannelType360 = 19 |
| | ChannelTypeOpenRouter = 20 |
| | ) |
| |
|
| | var ChannelBaseURLs = []string{ |
| | "", |
| | "https://api.openai.com", |
| | "https://oa.api2d.net", |
| | "", |
| | "https://api.closeai-proxy.xyz", |
| | "https://api.openai-sb.com", |
| | "https://api.openaimax.com", |
| | "https://api.ohmygpt.com", |
| | "", |
| | "https://api.caipacity.com", |
| | "https://api.aiproxy.io", |
| | "", |
| | "https://api.api2gpt.com", |
| | "https://api.aigc2d.com", |
| | "https://api.anthropic.com", |
| | "https://aip.baidubce.com", |
| | "https://open.bigmodel.cn", |
| | "https://dashscope.aliyuncs.com", |
| | "", |
| | "https://ai.360.cn", |
| | "https://openrouter.ai/api", |
| | } |
| |
|