| package model
|
|
|
| import (
|
| "strconv"
|
| "strings"
|
| "time"
|
|
|
| "github.com/QuantumNous/new-api/common"
|
| "github.com/QuantumNous/new-api/setting"
|
| "github.com/QuantumNous/new-api/setting/config"
|
| "github.com/QuantumNous/new-api/setting/operation_setting"
|
| "github.com/QuantumNous/new-api/setting/performance_setting"
|
| "github.com/QuantumNous/new-api/setting/ratio_setting"
|
| "github.com/QuantumNous/new-api/setting/system_setting"
|
| )
|
|
|
| type Option struct {
|
| Key string `json:"key" gorm:"primaryKey"`
|
| Value string `json:"value"`
|
| }
|
|
|
| func AllOption() ([]*Option, error) {
|
| var options []*Option
|
| var err error
|
| err = DB.Find(&options).Error
|
| return options, err
|
| }
|
|
|
| func InitOptionMap() {
|
| common.OptionMapRWMutex.Lock()
|
| common.OptionMap = make(map[string]string)
|
|
|
|
|
| common.OptionMap["FileUploadPermission"] = strconv.Itoa(common.FileUploadPermission)
|
| common.OptionMap["FileDownloadPermission"] = strconv.Itoa(common.FileDownloadPermission)
|
| common.OptionMap["ImageUploadPermission"] = strconv.Itoa(common.ImageUploadPermission)
|
| common.OptionMap["ImageDownloadPermission"] = strconv.Itoa(common.ImageDownloadPermission)
|
| common.OptionMap["PasswordLoginEnabled"] = strconv.FormatBool(common.PasswordLoginEnabled)
|
| common.OptionMap["PasswordRegisterEnabled"] = strconv.FormatBool(common.PasswordRegisterEnabled)
|
| common.OptionMap["EmailVerificationEnabled"] = strconv.FormatBool(common.EmailVerificationEnabled)
|
| common.OptionMap["GitHubOAuthEnabled"] = strconv.FormatBool(common.GitHubOAuthEnabled)
|
| common.OptionMap["LinuxDOOAuthEnabled"] = strconv.FormatBool(common.LinuxDOOAuthEnabled)
|
| common.OptionMap["TelegramOAuthEnabled"] = strconv.FormatBool(common.TelegramOAuthEnabled)
|
| common.OptionMap["WeChatAuthEnabled"] = strconv.FormatBool(common.WeChatAuthEnabled)
|
| common.OptionMap["TurnstileCheckEnabled"] = strconv.FormatBool(common.TurnstileCheckEnabled)
|
| common.OptionMap["RegisterEnabled"] = strconv.FormatBool(common.RegisterEnabled)
|
| common.OptionMap["AutomaticDisableChannelEnabled"] = strconv.FormatBool(common.AutomaticDisableChannelEnabled)
|
| common.OptionMap["AutomaticEnableChannelEnabled"] = strconv.FormatBool(common.AutomaticEnableChannelEnabled)
|
| common.OptionMap["LogConsumeEnabled"] = strconv.FormatBool(common.LogConsumeEnabled)
|
| common.OptionMap["DisplayInCurrencyEnabled"] = strconv.FormatBool(common.DisplayInCurrencyEnabled)
|
| common.OptionMap["DisplayTokenStatEnabled"] = strconv.FormatBool(common.DisplayTokenStatEnabled)
|
| common.OptionMap["DrawingEnabled"] = strconv.FormatBool(common.DrawingEnabled)
|
| common.OptionMap["TaskEnabled"] = strconv.FormatBool(common.TaskEnabled)
|
| common.OptionMap["DataExportEnabled"] = strconv.FormatBool(common.DataExportEnabled)
|
| common.OptionMap["ChannelDisableThreshold"] = strconv.FormatFloat(common.ChannelDisableThreshold, 'f', -1, 64)
|
| common.OptionMap["EmailDomainRestrictionEnabled"] = strconv.FormatBool(common.EmailDomainRestrictionEnabled)
|
| common.OptionMap["EmailAliasRestrictionEnabled"] = strconv.FormatBool(common.EmailAliasRestrictionEnabled)
|
| common.OptionMap["EmailDomainWhitelist"] = strings.Join(common.EmailDomainWhitelist, ",")
|
| common.OptionMap["SMTPServer"] = ""
|
| common.OptionMap["SMTPFrom"] = ""
|
| common.OptionMap["SMTPPort"] = strconv.Itoa(common.SMTPPort)
|
| common.OptionMap["SMTPAccount"] = ""
|
| common.OptionMap["SMTPToken"] = ""
|
| common.OptionMap["SMTPSSLEnabled"] = strconv.FormatBool(common.SMTPSSLEnabled)
|
| common.OptionMap["Notice"] = ""
|
| common.OptionMap["About"] = ""
|
| common.OptionMap["HomePageContent"] = ""
|
| common.OptionMap["Footer"] = common.Footer
|
| common.OptionMap["SystemName"] = common.SystemName
|
| common.OptionMap["Logo"] = common.Logo
|
| common.OptionMap["ServerAddress"] = ""
|
| common.OptionMap["WorkerUrl"] = system_setting.WorkerUrl
|
| common.OptionMap["WorkerValidKey"] = system_setting.WorkerValidKey
|
| common.OptionMap["WorkerAllowHttpImageRequestEnabled"] = strconv.FormatBool(system_setting.WorkerAllowHttpImageRequestEnabled)
|
| common.OptionMap["PayAddress"] = ""
|
| common.OptionMap["CustomCallbackAddress"] = ""
|
| common.OptionMap["EpayId"] = ""
|
| common.OptionMap["EpayKey"] = ""
|
| common.OptionMap["Price"] = strconv.FormatFloat(operation_setting.Price, 'f', -1, 64)
|
| common.OptionMap["USDExchangeRate"] = strconv.FormatFloat(operation_setting.USDExchangeRate, 'f', -1, 64)
|
| common.OptionMap["MinTopUp"] = strconv.Itoa(operation_setting.MinTopUp)
|
| common.OptionMap["StripeMinTopUp"] = strconv.Itoa(setting.StripeMinTopUp)
|
| common.OptionMap["StripeApiSecret"] = setting.StripeApiSecret
|
| common.OptionMap["StripeWebhookSecret"] = setting.StripeWebhookSecret
|
| common.OptionMap["StripePriceId"] = setting.StripePriceId
|
| common.OptionMap["StripeUnitPrice"] = strconv.FormatFloat(setting.StripeUnitPrice, 'f', -1, 64)
|
| common.OptionMap["StripePromotionCodesEnabled"] = strconv.FormatBool(setting.StripePromotionCodesEnabled)
|
| common.OptionMap["CreemApiKey"] = setting.CreemApiKey
|
| common.OptionMap["CreemProducts"] = setting.CreemProducts
|
| common.OptionMap["CreemTestMode"] = strconv.FormatBool(setting.CreemTestMode)
|
| common.OptionMap["CreemWebhookSecret"] = setting.CreemWebhookSecret
|
| common.OptionMap["TopupGroupRatio"] = common.TopupGroupRatio2JSONString()
|
| common.OptionMap["Chats"] = setting.Chats2JsonString()
|
| common.OptionMap["AutoGroups"] = setting.AutoGroups2JsonString()
|
| common.OptionMap["DefaultUseAutoGroup"] = strconv.FormatBool(setting.DefaultUseAutoGroup)
|
| common.OptionMap["PayMethods"] = operation_setting.PayMethods2JsonString()
|
| common.OptionMap["GitHubClientId"] = ""
|
| common.OptionMap["GitHubClientSecret"] = ""
|
| common.OptionMap["TelegramBotToken"] = ""
|
| common.OptionMap["TelegramBotName"] = ""
|
| common.OptionMap["WeChatServerAddress"] = ""
|
| common.OptionMap["WeChatServerToken"] = ""
|
| common.OptionMap["WeChatAccountQRCodeImageURL"] = ""
|
| common.OptionMap["TurnstileSiteKey"] = ""
|
| common.OptionMap["TurnstileSecretKey"] = ""
|
| common.OptionMap["QuotaForNewUser"] = strconv.Itoa(common.QuotaForNewUser)
|
| common.OptionMap["QuotaForInviter"] = strconv.Itoa(common.QuotaForInviter)
|
| common.OptionMap["QuotaForInvitee"] = strconv.Itoa(common.QuotaForInvitee)
|
| common.OptionMap["QuotaRemindThreshold"] = strconv.Itoa(common.QuotaRemindThreshold)
|
| common.OptionMap["PreConsumedQuota"] = strconv.Itoa(common.PreConsumedQuota)
|
| common.OptionMap["PostpaidEnabled"] = strconv.FormatBool(common.PostpaidEnabled)
|
| common.OptionMap["PostpaidCreditDays"] = strconv.Itoa(common.PostpaidCreditDays)
|
| common.OptionMap["ModelRequestRateLimitCount"] = strconv.Itoa(setting.ModelRequestRateLimitCount)
|
| common.OptionMap["ModelRequestRateLimitDurationMinutes"] = strconv.Itoa(setting.ModelRequestRateLimitDurationMinutes)
|
| common.OptionMap["ModelRequestRateLimitSuccessCount"] = strconv.Itoa(setting.ModelRequestRateLimitSuccessCount)
|
| common.OptionMap["ModelRequestRateLimitGroup"] = setting.ModelRequestRateLimitGroup2JSONString()
|
| common.OptionMap["ModelRatio"] = ratio_setting.ModelRatio2JSONString()
|
| common.OptionMap["ModelPrice"] = ratio_setting.ModelPrice2JSONString()
|
| common.OptionMap["CacheRatio"] = ratio_setting.CacheRatio2JSONString()
|
| common.OptionMap["GroupRatio"] = ratio_setting.GroupRatio2JSONString()
|
| common.OptionMap["GroupGroupRatio"] = ratio_setting.GroupGroupRatio2JSONString()
|
| common.OptionMap["UserUsableGroups"] = setting.UserUsableGroups2JSONString()
|
| common.OptionMap["CompletionRatio"] = ratio_setting.CompletionRatio2JSONString()
|
| common.OptionMap["ImageRatio"] = ratio_setting.ImageRatio2JSONString()
|
| common.OptionMap["AudioRatio"] = ratio_setting.AudioRatio2JSONString()
|
| common.OptionMap["AudioCompletionRatio"] = ratio_setting.AudioCompletionRatio2JSONString()
|
| common.OptionMap["TopUpLink"] = common.TopUpLink
|
|
|
|
|
| common.OptionMap["QuotaPerUnit"] = strconv.FormatFloat(common.QuotaPerUnit, 'f', -1, 64)
|
| common.OptionMap["RetryTimes"] = strconv.Itoa(common.RetryTimes)
|
| common.OptionMap["DataExportInterval"] = strconv.Itoa(common.DataExportInterval)
|
| common.OptionMap["DataExportDefaultTime"] = common.DataExportDefaultTime
|
| common.OptionMap["DefaultCollapseSidebar"] = strconv.FormatBool(common.DefaultCollapseSidebar)
|
| common.OptionMap["MjNotifyEnabled"] = strconv.FormatBool(setting.MjNotifyEnabled)
|
| common.OptionMap["MjAccountFilterEnabled"] = strconv.FormatBool(setting.MjAccountFilterEnabled)
|
| common.OptionMap["MjModeClearEnabled"] = strconv.FormatBool(setting.MjModeClearEnabled)
|
| common.OptionMap["MjForwardUrlEnabled"] = strconv.FormatBool(setting.MjForwardUrlEnabled)
|
| common.OptionMap["MjActionCheckSuccessEnabled"] = strconv.FormatBool(setting.MjActionCheckSuccessEnabled)
|
| common.OptionMap["CheckSensitiveEnabled"] = strconv.FormatBool(setting.CheckSensitiveEnabled)
|
| common.OptionMap["DemoSiteEnabled"] = strconv.FormatBool(operation_setting.DemoSiteEnabled)
|
| common.OptionMap["SelfUseModeEnabled"] = strconv.FormatBool(operation_setting.SelfUseModeEnabled)
|
| common.OptionMap["ModelRequestRateLimitEnabled"] = strconv.FormatBool(setting.ModelRequestRateLimitEnabled)
|
| common.OptionMap["CheckSensitiveOnPromptEnabled"] = strconv.FormatBool(setting.CheckSensitiveOnPromptEnabled)
|
| common.OptionMap["StopOnSensitiveEnabled"] = strconv.FormatBool(setting.StopOnSensitiveEnabled)
|
| common.OptionMap["SensitiveWords"] = setting.SensitiveWordsToString()
|
| common.OptionMap["StreamCacheQueueLength"] = strconv.Itoa(setting.StreamCacheQueueLength)
|
| common.OptionMap["AutomaticDisableKeywords"] = operation_setting.AutomaticDisableKeywordsToString()
|
| common.OptionMap["AutomaticDisableStatusCodes"] = operation_setting.AutomaticDisableStatusCodesToString()
|
| common.OptionMap["AutomaticRetryStatusCodes"] = operation_setting.AutomaticRetryStatusCodesToString()
|
| common.OptionMap["ExposeRatioEnabled"] = strconv.FormatBool(ratio_setting.IsExposeRatioEnabled())
|
|
|
|
|
| modelConfigs := config.GlobalConfig.ExportAllConfigs()
|
| for k, v := range modelConfigs {
|
| common.OptionMap[k] = v
|
| }
|
|
|
| common.OptionMapRWMutex.Unlock()
|
| loadOptionsFromDatabase()
|
| }
|
|
|
| func loadOptionsFromDatabase() {
|
| options, _ := AllOption()
|
| for _, option := range options {
|
| err := updateOptionMap(option.Key, option.Value)
|
| if err != nil {
|
| common.SysLog("failed to update option map: " + err.Error())
|
| }
|
| }
|
| }
|
|
|
| func SyncOptions(frequency int) {
|
| for {
|
| time.Sleep(time.Duration(frequency) * time.Second)
|
| common.SysLog("syncing options from database")
|
| loadOptionsFromDatabase()
|
| }
|
| }
|
|
|
| func UpdateOption(key string, value string) error {
|
|
|
| option := Option{
|
| Key: key,
|
| }
|
|
|
| DB.FirstOrCreate(&option, Option{Key: key})
|
| option.Value = value
|
|
|
|
|
|
|
| DB.Save(&option)
|
|
|
| return updateOptionMap(key, value)
|
| }
|
|
|
| func updateOptionMap(key string, value string) (err error) {
|
| common.OptionMapRWMutex.Lock()
|
| defer common.OptionMapRWMutex.Unlock()
|
| common.OptionMap[key] = value
|
|
|
|
|
| if handleConfigUpdate(key, value) {
|
| return nil
|
| }
|
|
|
|
|
| if strings.HasSuffix(key, "Permission") {
|
| intValue, _ := strconv.Atoi(value)
|
| switch key {
|
| case "FileUploadPermission":
|
| common.FileUploadPermission = intValue
|
| case "FileDownloadPermission":
|
| common.FileDownloadPermission = intValue
|
| case "ImageUploadPermission":
|
| common.ImageUploadPermission = intValue
|
| case "ImageDownloadPermission":
|
| common.ImageDownloadPermission = intValue
|
| }
|
| }
|
| if strings.HasSuffix(key, "Enabled") || key == "DefaultCollapseSidebar" || key == "DefaultUseAutoGroup" {
|
| boolValue := value == "true"
|
| switch key {
|
| case "PasswordRegisterEnabled":
|
| common.PasswordRegisterEnabled = boolValue
|
| case "PasswordLoginEnabled":
|
| common.PasswordLoginEnabled = boolValue
|
| case "EmailVerificationEnabled":
|
| common.EmailVerificationEnabled = boolValue
|
| case "GitHubOAuthEnabled":
|
| common.GitHubOAuthEnabled = boolValue
|
| case "LinuxDOOAuthEnabled":
|
| common.LinuxDOOAuthEnabled = boolValue
|
| case "WeChatAuthEnabled":
|
| common.WeChatAuthEnabled = boolValue
|
| case "TelegramOAuthEnabled":
|
| common.TelegramOAuthEnabled = boolValue
|
| case "TurnstileCheckEnabled":
|
| common.TurnstileCheckEnabled = boolValue
|
| case "RegisterEnabled":
|
| common.RegisterEnabled = boolValue
|
| case "EmailDomainRestrictionEnabled":
|
| common.EmailDomainRestrictionEnabled = boolValue
|
| case "EmailAliasRestrictionEnabled":
|
| common.EmailAliasRestrictionEnabled = boolValue
|
| case "AutomaticDisableChannelEnabled":
|
| common.AutomaticDisableChannelEnabled = boolValue
|
| case "AutomaticEnableChannelEnabled":
|
| common.AutomaticEnableChannelEnabled = boolValue
|
| case "LogConsumeEnabled":
|
| common.LogConsumeEnabled = boolValue
|
| case "DisplayInCurrencyEnabled":
|
|
|
|
|
| newVal := "USD"
|
| if !boolValue {
|
| newVal = "TOKENS"
|
| }
|
| if cfg := config.GlobalConfig.Get("general_setting"); cfg != nil {
|
| _ = config.UpdateConfigFromMap(cfg, map[string]string{"quota_display_type": newVal})
|
| }
|
| case "DisplayTokenStatEnabled":
|
| common.DisplayTokenStatEnabled = boolValue
|
| case "DrawingEnabled":
|
| common.DrawingEnabled = boolValue
|
| case "TaskEnabled":
|
| common.TaskEnabled = boolValue
|
| case "DataExportEnabled":
|
| common.DataExportEnabled = boolValue
|
| case "DefaultCollapseSidebar":
|
| common.DefaultCollapseSidebar = boolValue
|
| case "MjNotifyEnabled":
|
| setting.MjNotifyEnabled = boolValue
|
| case "MjAccountFilterEnabled":
|
| setting.MjAccountFilterEnabled = boolValue
|
| case "MjModeClearEnabled":
|
| setting.MjModeClearEnabled = boolValue
|
| case "MjForwardUrlEnabled":
|
| setting.MjForwardUrlEnabled = boolValue
|
| case "MjActionCheckSuccessEnabled":
|
| setting.MjActionCheckSuccessEnabled = boolValue
|
| case "CheckSensitiveEnabled":
|
| setting.CheckSensitiveEnabled = boolValue
|
| case "DemoSiteEnabled":
|
| operation_setting.DemoSiteEnabled = boolValue
|
| case "SelfUseModeEnabled":
|
| operation_setting.SelfUseModeEnabled = boolValue
|
| case "CheckSensitiveOnPromptEnabled":
|
| setting.CheckSensitiveOnPromptEnabled = boolValue
|
| case "ModelRequestRateLimitEnabled":
|
| setting.ModelRequestRateLimitEnabled = boolValue
|
| case "StopOnSensitiveEnabled":
|
| setting.StopOnSensitiveEnabled = boolValue
|
| case "SMTPSSLEnabled":
|
| common.SMTPSSLEnabled = boolValue
|
| case "WorkerAllowHttpImageRequestEnabled":
|
| system_setting.WorkerAllowHttpImageRequestEnabled = boolValue
|
| case "DefaultUseAutoGroup":
|
| setting.DefaultUseAutoGroup = boolValue
|
| case "ExposeRatioEnabled":
|
| ratio_setting.SetExposeRatioEnabled(boolValue)
|
| }
|
| }
|
| switch key {
|
| case "EmailDomainWhitelist":
|
| common.EmailDomainWhitelist = strings.Split(value, ",")
|
| case "SMTPServer":
|
| common.SMTPServer = value
|
| case "SMTPPort":
|
| intValue, _ := strconv.Atoi(value)
|
| common.SMTPPort = intValue
|
| case "SMTPAccount":
|
| common.SMTPAccount = value
|
| case "SMTPFrom":
|
| common.SMTPFrom = value
|
| case "SMTPToken":
|
| common.SMTPToken = value
|
| case "ServerAddress":
|
| system_setting.ServerAddress = value
|
| case "WorkerUrl":
|
| system_setting.WorkerUrl = value
|
| case "WorkerValidKey":
|
| system_setting.WorkerValidKey = value
|
| case "PayAddress":
|
| operation_setting.PayAddress = value
|
| case "Chats":
|
| err = setting.UpdateChatsByJsonString(value)
|
| case "AutoGroups":
|
| err = setting.UpdateAutoGroupsByJsonString(value)
|
| case "CustomCallbackAddress":
|
| operation_setting.CustomCallbackAddress = value
|
| case "EpayId":
|
| operation_setting.EpayId = value
|
| case "EpayKey":
|
| operation_setting.EpayKey = value
|
| case "Price":
|
| operation_setting.Price, _ = strconv.ParseFloat(value, 64)
|
| case "USDExchangeRate":
|
| operation_setting.USDExchangeRate, _ = strconv.ParseFloat(value, 64)
|
| case "MinTopUp":
|
| operation_setting.MinTopUp, _ = strconv.Atoi(value)
|
| case "StripeApiSecret":
|
| setting.StripeApiSecret = value
|
| case "StripeWebhookSecret":
|
| setting.StripeWebhookSecret = value
|
| case "StripePriceId":
|
| setting.StripePriceId = value
|
| case "StripeUnitPrice":
|
| setting.StripeUnitPrice, _ = strconv.ParseFloat(value, 64)
|
| case "StripeMinTopUp":
|
| setting.StripeMinTopUp, _ = strconv.Atoi(value)
|
| case "StripePromotionCodesEnabled":
|
| setting.StripePromotionCodesEnabled = value == "true"
|
| case "CreemApiKey":
|
| setting.CreemApiKey = value
|
| case "CreemProducts":
|
| setting.CreemProducts = value
|
| case "CreemTestMode":
|
| setting.CreemTestMode = value == "true"
|
| case "CreemWebhookSecret":
|
| setting.CreemWebhookSecret = value
|
| case "TopupGroupRatio":
|
| err = common.UpdateTopupGroupRatioByJSONString(value)
|
| case "GitHubClientId":
|
| common.GitHubClientId = value
|
| case "GitHubClientSecret":
|
| common.GitHubClientSecret = value
|
| case "LinuxDOClientId":
|
| common.LinuxDOClientId = value
|
| case "LinuxDOClientSecret":
|
| common.LinuxDOClientSecret = value
|
| case "LinuxDOMinimumTrustLevel":
|
| common.LinuxDOMinimumTrustLevel, _ = strconv.Atoi(value)
|
| case "Footer":
|
| common.Footer = value
|
| case "SystemName":
|
| common.SystemName = value
|
| case "Logo":
|
| common.Logo = value
|
| case "WeChatServerAddress":
|
| common.WeChatServerAddress = value
|
| case "WeChatServerToken":
|
| common.WeChatServerToken = value
|
| case "WeChatAccountQRCodeImageURL":
|
| common.WeChatAccountQRCodeImageURL = value
|
| case "TelegramBotToken":
|
| common.TelegramBotToken = value
|
| case "TelegramBotName":
|
| common.TelegramBotName = value
|
| case "TurnstileSiteKey":
|
| common.TurnstileSiteKey = value
|
| case "TurnstileSecretKey":
|
| common.TurnstileSecretKey = value
|
| case "QuotaForNewUser":
|
| common.QuotaForNewUser, _ = strconv.Atoi(value)
|
| case "QuotaForInviter":
|
| common.QuotaForInviter, _ = strconv.Atoi(value)
|
| case "QuotaForInvitee":
|
| common.QuotaForInvitee, _ = strconv.Atoi(value)
|
| case "QuotaRemindThreshold":
|
| common.QuotaRemindThreshold, _ = strconv.Atoi(value)
|
| case "PreConsumedQuota":
|
| common.PreConsumedQuota, _ = strconv.Atoi(value)
|
| case "PostpaidEnabled":
|
| common.PostpaidEnabled = value == "true"
|
| case "PostpaidCreditDays":
|
| common.PostpaidCreditDays, _ = strconv.Atoi(value)
|
| case "ModelRequestRateLimitCount":
|
| setting.ModelRequestRateLimitCount, _ = strconv.Atoi(value)
|
| case "ModelRequestRateLimitDurationMinutes":
|
| setting.ModelRequestRateLimitDurationMinutes, _ = strconv.Atoi(value)
|
| case "ModelRequestRateLimitSuccessCount":
|
| setting.ModelRequestRateLimitSuccessCount, _ = strconv.Atoi(value)
|
| case "ModelRequestRateLimitGroup":
|
| err = setting.UpdateModelRequestRateLimitGroupByJSONString(value)
|
| case "RetryTimes":
|
| common.RetryTimes, _ = strconv.Atoi(value)
|
| case "DataExportInterval":
|
| common.DataExportInterval, _ = strconv.Atoi(value)
|
| case "DataExportDefaultTime":
|
| common.DataExportDefaultTime = value
|
| case "ModelRatio":
|
| err = ratio_setting.UpdateModelRatioByJSONString(value)
|
| case "GroupRatio":
|
| err = ratio_setting.UpdateGroupRatioByJSONString(value)
|
| case "GroupGroupRatio":
|
| err = ratio_setting.UpdateGroupGroupRatioByJSONString(value)
|
| case "UserUsableGroups":
|
| err = setting.UpdateUserUsableGroupsByJSONString(value)
|
| case "CompletionRatio":
|
| err = ratio_setting.UpdateCompletionRatioByJSONString(value)
|
| case "ModelPrice":
|
| err = ratio_setting.UpdateModelPriceByJSONString(value)
|
| case "CacheRatio":
|
| err = ratio_setting.UpdateCacheRatioByJSONString(value)
|
| case "ImageRatio":
|
| err = ratio_setting.UpdateImageRatioByJSONString(value)
|
| case "AudioRatio":
|
| err = ratio_setting.UpdateAudioRatioByJSONString(value)
|
| case "AudioCompletionRatio":
|
| err = ratio_setting.UpdateAudioCompletionRatioByJSONString(value)
|
| case "TopUpLink":
|
| common.TopUpLink = value
|
|
|
|
|
|
|
|
|
| case "ChannelDisableThreshold":
|
| common.ChannelDisableThreshold, _ = strconv.ParseFloat(value, 64)
|
| case "QuotaPerUnit":
|
| common.QuotaPerUnit, _ = strconv.ParseFloat(value, 64)
|
| case "SensitiveWords":
|
| setting.SensitiveWordsFromString(value)
|
| case "AutomaticDisableKeywords":
|
| operation_setting.AutomaticDisableKeywordsFromString(value)
|
| case "AutomaticDisableStatusCodes":
|
| err = operation_setting.AutomaticDisableStatusCodesFromString(value)
|
| case "AutomaticRetryStatusCodes":
|
| err = operation_setting.AutomaticRetryStatusCodesFromString(value)
|
| case "StreamCacheQueueLength":
|
| setting.StreamCacheQueueLength, _ = strconv.Atoi(value)
|
| case "PayMethods":
|
| err = operation_setting.UpdatePayMethodsByJsonString(value)
|
| }
|
| return err
|
| }
|
|
|
|
|
| func handleConfigUpdate(key, value string) bool {
|
| parts := strings.SplitN(key, ".", 2)
|
| if len(parts) != 2 {
|
| return false
|
| }
|
|
|
| configName := parts[0]
|
| configKey := parts[1]
|
|
|
|
|
| cfg := config.GlobalConfig.Get(configName)
|
| if cfg == nil {
|
| return false
|
| }
|
|
|
|
|
| configMap := map[string]string{
|
| configKey: value,
|
| }
|
| config.UpdateConfigFromMap(cfg, configMap)
|
|
|
|
|
| if configName == "performance_setting" {
|
|
|
| performance_setting.UpdateAndSync()
|
| }
|
|
|
| return true
|
| }
|
|
|