|
|
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/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["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["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 "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 "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) |
|
|
|
|
|
return true |
|
|
} |
|
|
|