Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

226 lignes
5.4 KiB

  1. package common
  2. import (
  3. "crypto/tls"
  4. //"os"
  5. //"strconv"
  6. "sync"
  7. "time"
  8. "github.com/google/uuid"
  9. )
  10. var StartTime = time.Now().Unix() // unit: second
  11. var Version = "v0.0.0" // this hard coding will be replaced automatically when building, no need to manually change
  12. var SystemName = "New API"
  13. var Footer = ""
  14. var Logo = ""
  15. var LogoFilePath = "" // LOGO_FILE_PATH 环境变量指定的本地 Logo 文件路径
  16. func GetEffectiveLogo() string {
  17. if LogoFilePath != "" {
  18. return "/logo.png"
  19. }
  20. return Logo
  21. }
  22. var TopUpLink = ""
  23. var DefaultLanguage = "" // admin-configured default language; empty = follow browser detection
  24. // var ChatLink = ""
  25. // var ChatLink2 = ""
  26. var QuotaPerUnit = 500 * 1000.0 // $0.002 / 1K tokens
  27. // 保留旧变量以兼容历史逻辑,实际展示由 general_setting.quota_display_type 控制
  28. var DisplayInCurrencyEnabled = true
  29. var DisplayTokenStatEnabled = true
  30. var DrawingEnabled = true
  31. var TaskEnabled = true
  32. var DataExportEnabled = true
  33. var DataExportInterval = 5 // unit: minute
  34. var DataExportDefaultTime = "hour" // unit: minute
  35. var DefaultCollapseSidebar = false // default value of collapse sidebar
  36. // Any options with "Secret", "Token" in its key won't be return by GetOptions
  37. var SessionSecret = uuid.New().String()
  38. var CryptoSecret = uuid.New().String()
  39. var OptionMap map[string]string
  40. var OptionMapRWMutex sync.RWMutex
  41. var ItemsPerPage = 10
  42. var MaxRecentItems = 1000
  43. var PasswordLoginEnabled = true
  44. var PasswordRegisterEnabled = true
  45. var EmailVerificationEnabled = false
  46. var GitHubOAuthEnabled = false
  47. var LinuxDOOAuthEnabled = false
  48. var WeChatAuthEnabled = false
  49. var TelegramOAuthEnabled = false
  50. var TurnstileCheckEnabled = false
  51. var CaptchaEnabled = false
  52. var RegisterEnabled = true
  53. var EmailDomainRestrictionEnabled = false // 是否启用邮箱域名限制
  54. var EmailAliasRestrictionEnabled = false // 是否启用邮箱别名限制
  55. var EmailDomainWhitelist = []string{
  56. "gmail.com",
  57. "163.com",
  58. "126.com",
  59. "qq.com",
  60. "outlook.com",
  61. "hotmail.com",
  62. "icloud.com",
  63. "yahoo.com",
  64. "foxmail.com",
  65. }
  66. var EmailLoginAuthServerList = []string{
  67. "smtp.sendcloud.net",
  68. "smtp.azurecomm.net",
  69. }
  70. var DebugEnabled bool
  71. var MemoryCacheEnabled bool
  72. var LogConsumeEnabled = true
  73. var TLSInsecureSkipVerify bool
  74. var InsecureTLSConfig = &tls.Config{InsecureSkipVerify: true}
  75. var SMTPServer = ""
  76. var SMTPPort = 587
  77. var SMTPSSLEnabled = false
  78. var SMTPAccount = ""
  79. var SMTPFrom = ""
  80. var SMTPToken = ""
  81. var GitHubClientId = ""
  82. var GitHubClientSecret = ""
  83. var LinuxDOClientId = ""
  84. var LinuxDOClientSecret = ""
  85. var LinuxDOMinimumTrustLevel = 0
  86. var WeChatServerAddress = ""
  87. var WeChatServerToken = ""
  88. var WeChatAccountQRCodeImageURL = ""
  89. var TurnstileSiteKey = ""
  90. var TurnstileSecretKey = ""
  91. var TelegramBotToken = ""
  92. var TelegramBotName = ""
  93. var QuotaForNewUser = 0
  94. var QuotaForInviter = 0
  95. var QuotaForInvitee = 0
  96. var ChannelDisableThreshold = 5.0
  97. var AutomaticDisableChannelEnabled = false
  98. var AutomaticEnableChannelEnabled = false
  99. var QuotaRemindThreshold = 1000
  100. var PreConsumedQuota = 500
  101. var RetryTimes = 0
  102. //var RootUserEmail = ""
  103. var IsMasterNode bool
  104. var requestInterval int
  105. var RequestInterval time.Duration
  106. var SyncFrequency int // unit is second
  107. var BatchUpdateEnabled = false
  108. var BatchUpdateInterval int
  109. var RelayTimeout int // unit is second
  110. var RelayMaxIdleConns int
  111. var RelayMaxIdleConnsPerHost int
  112. var GeminiSafetySetting string
  113. // https://docs.cohere.com/docs/safety-modes Type; NONE/CONTEXTUAL/STRICT
  114. var CohereSafetySetting string
  115. const (
  116. RequestIdKey = "X-Oneapi-Request-Id"
  117. )
  118. const (
  119. RoleGuestUser = 0
  120. RoleCommonUser = 1
  121. RoleAdminUser = 10
  122. RoleRootUser = 100
  123. )
  124. func IsValidateRole(role int) bool {
  125. return role == RoleGuestUser || role == RoleCommonUser || role == RoleAdminUser || role == RoleRootUser
  126. }
  127. var (
  128. FileUploadPermission = RoleGuestUser
  129. FileDownloadPermission = RoleGuestUser
  130. ImageUploadPermission = RoleGuestUser
  131. ImageDownloadPermission = RoleGuestUser
  132. )
  133. // All duration's unit is seconds
  134. // Shouldn't larger then RateLimitKeyExpirationDuration
  135. var (
  136. GlobalApiRateLimitEnable bool
  137. GlobalApiRateLimitNum int
  138. GlobalApiRateLimitDuration int64
  139. GlobalWebRateLimitEnable bool
  140. GlobalWebRateLimitNum int
  141. GlobalWebRateLimitDuration int64
  142. CriticalRateLimitEnable bool
  143. CriticalRateLimitNum = 20
  144. CriticalRateLimitDuration int64 = 20 * 60
  145. UploadRateLimitNum = 10
  146. UploadRateLimitDuration int64 = 60
  147. DownloadRateLimitNum = 10
  148. DownloadRateLimitDuration int64 = 60
  149. // Per-user search rate limit (applies after authentication, keyed by user ID)
  150. SearchRateLimitNum = 10
  151. SearchRateLimitDuration int64 = 60
  152. )
  153. var RateLimitKeyExpirationDuration = 20 * time.Minute
  154. const (
  155. UserStatusEnabled = 1 // don't use 0, 0 is the default value!
  156. UserStatusDisabled = 2 // also don't use 0
  157. )
  158. const (
  159. TokenStatusEnabled = 1 // don't use 0, 0 is the default value!
  160. TokenStatusDisabled = 2 // also don't use 0
  161. TokenStatusExpired = 3
  162. TokenStatusExhausted = 4
  163. )
  164. const (
  165. RedemptionCodeStatusEnabled = 1 // don't use 0, 0 is the default value!
  166. RedemptionCodeStatusDisabled = 2 // also don't use 0
  167. RedemptionCodeStatusUsed = 3 // also don't use 0
  168. )
  169. const (
  170. ChannelStatusUnknown = 0
  171. ChannelStatusEnabled = 1 // don't use 0, 0 is the default value!
  172. ChannelStatusManuallyDisabled = 2 // also don't use 0
  173. ChannelStatusAutoDisabled = 3
  174. )
  175. const (
  176. TopUpStatusPending = "pending"
  177. TopUpStatusSuccess = "success"
  178. TopUpStatusExpired = "expired"
  179. )