constants.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package common
  2. import (
  3. "os"
  4. "strconv"
  5. "sync"
  6. "time"
  7. "github.com/google/uuid"
  8. )
  9. var StartTime = time.Now().Unix() // unit: second
  10. var Version = "v0.0.0" // this hard coding will be replaced automatically when building, no need to manually change
  11. var SystemName = "One API"
  12. var ServerAddress = "http://localhost:3000"
  13. var Footer = ""
  14. var Logo = ""
  15. var TopUpLink = ""
  16. var ChatLink = ""
  17. var QuotaPerUnit = 500 * 1000.0 // $0.002 / 1K tokens
  18. var DisplayInCurrencyEnabled = false
  19. var UsingSQLite = false
  20. // Any options with "Secret", "Token" in its key won't be return by GetOptions
  21. var SessionSecret = uuid.New().String()
  22. var SQLitePath = "one-api.db"
  23. var OptionMap map[string]string
  24. var OptionMapRWMutex sync.RWMutex
  25. var ItemsPerPage = 10
  26. var MaxRecentItems = 100
  27. var PasswordLoginEnabled = true
  28. var PasswordRegisterEnabled = true
  29. var EmailVerificationEnabled = false
  30. var GitHubOAuthEnabled = false
  31. var WeChatAuthEnabled = false
  32. var TurnstileCheckEnabled = false
  33. var RegisterEnabled = true
  34. var LogConsumeEnabled = true
  35. var SMTPServer = ""
  36. var SMTPPort = 587
  37. var SMTPAccount = ""
  38. var SMTPFrom = ""
  39. var SMTPToken = ""
  40. var GitHubClientId = ""
  41. var GitHubClientSecret = ""
  42. var WeChatServerAddress = ""
  43. var WeChatServerToken = ""
  44. var WeChatAccountQRCodeImageURL = ""
  45. var TurnstileSiteKey = ""
  46. var TurnstileSecretKey = ""
  47. var QuotaForNewUser = 0
  48. var QuotaForInviter = 0
  49. var QuotaForInvitee = 0
  50. var ChannelDisableThreshold = 5.0
  51. var AutomaticDisableChannelEnabled = false
  52. var QuotaRemindThreshold = 1000
  53. var PreConsumedQuota = 500
  54. var RootUserEmail = ""
  55. var IsMasterNode = os.Getenv("NODE_TYPE") != "slave"
  56. var requestInterval, _ = strconv.Atoi(os.Getenv("REQUEST_INTERVAL"))
  57. var RequestInterval = time.Duration(requestInterval) * time.Second
  58. const (
  59. RoleGuestUser = 0
  60. RoleCommonUser = 1
  61. RoleAdminUser = 10
  62. RoleRootUser = 100
  63. )
  64. var (
  65. FileUploadPermission = RoleGuestUser
  66. FileDownloadPermission = RoleGuestUser
  67. ImageUploadPermission = RoleGuestUser
  68. ImageDownloadPermission = RoleGuestUser
  69. )
  70. // All duration's unit is seconds
  71. // Shouldn't larger then RateLimitKeyExpirationDuration
  72. var (
  73. GlobalApiRateLimitNum = 180
  74. GlobalApiRateLimitDuration int64 = 3 * 60
  75. GlobalWebRateLimitNum = 60
  76. GlobalWebRateLimitDuration int64 = 3 * 60
  77. UploadRateLimitNum = 10
  78. UploadRateLimitDuration int64 = 60
  79. DownloadRateLimitNum = 10
  80. DownloadRateLimitDuration int64 = 60
  81. CriticalRateLimitNum = 20
  82. CriticalRateLimitDuration int64 = 20 * 60
  83. )
  84. var RateLimitKeyExpirationDuration = 20 * time.Minute
  85. const (
  86. UserStatusEnabled = 1 // don't use 0, 0 is the default value!
  87. UserStatusDisabled = 2 // also don't use 0
  88. )
  89. const (
  90. TokenStatusEnabled = 1 // don't use 0, 0 is the default value!
  91. TokenStatusDisabled = 2 // also don't use 0
  92. TokenStatusExpired = 3
  93. TokenStatusExhausted = 4
  94. )
  95. const (
  96. RedemptionCodeStatusEnabled = 1 // don't use 0, 0 is the default value!
  97. RedemptionCodeStatusDisabled = 2 // also don't use 0
  98. RedemptionCodeStatusUsed = 3 // also don't use 0
  99. )
  100. const (
  101. ChannelStatusUnknown = 0
  102. ChannelStatusEnabled = 1 // don't use 0, 0 is the default value!
  103. ChannelStatusDisabled = 2 // also don't use 0
  104. )
  105. const (
  106. ChannelTypeUnknown = 0
  107. ChannelTypeOpenAI = 1
  108. ChannelTypeAPI2D = 2
  109. ChannelTypeAzure = 3
  110. ChannelTypeCloseAI = 4
  111. ChannelTypeOpenAISB = 5
  112. ChannelTypeOpenAIMax = 6
  113. ChannelTypeOhMyGPT = 7
  114. ChannelTypeCustom = 8
  115. ChannelTypeAILS = 9
  116. ChannelTypeAIProxy = 10
  117. ChannelTypePaLM = 11
  118. ChannelTypeAPI2GPT = 12
  119. )
  120. var ChannelBaseURLs = []string{
  121. "", // 0
  122. "https://api.openai.com", // 1
  123. "https://oa.api2d.net", // 2
  124. "", // 3
  125. "https://api.openai-proxy.org", // 4
  126. "https://api.openai-sb.com", // 5
  127. "https://api.openaimax.com", // 6
  128. "https://api.ohmygpt.com", // 7
  129. "", // 8
  130. "https://api.caipacity.com", // 9
  131. "https://api.aiproxy.io", // 10
  132. "", // 11
  133. "https://api.api2gpt.com", // 12
  134. }