From 1e1d24d1b075042473902991cbc3610f6c8bfff8 Mon Sep 17 00:00:00 2001 From: tbphp Date: Mon, 5 May 2025 17:57:02 +0800 Subject: [PATCH] fix: rm debug file --- .old/option.go | 402 ------------------------------------------------- 1 file changed, 402 deletions(-) delete mode 100644 .old/option.go diff --git a/.old/option.go b/.old/option.go deleted file mode 100644 index f80f5cb3..00000000 --- a/.old/option.go +++ /dev/null @@ -1,402 +0,0 @@ -package model - -import ( - "one-api/common" - "one-api/setting" - "one-api/setting/config" - "one-api/setting/operation_setting" - "strconv" - "strings" - "time" -) - -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"] = setting.WorkerUrl - common.OptionMap["WorkerValidKey"] = setting.WorkerValidKey - common.OptionMap["PayAddress"] = "" - common.OptionMap["CustomCallbackAddress"] = "" - common.OptionMap["EpayId"] = "" - common.OptionMap["EpayKey"] = "" - common.OptionMap["Price"] = strconv.FormatFloat(setting.Price, 'f', -1, 64) - common.OptionMap["MinTopUp"] = strconv.Itoa(setting.MinTopUp) - common.OptionMap["TopupGroupRatio"] = common.TopupGroupRatio2JSONString() - common.OptionMap["Chats"] = setting.Chats2JsonString() - 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["ModelRatio"] = operation_setting.ModelRatio2JSONString() - common.OptionMap["ModelPrice"] = operation_setting.ModelPrice2JSONString() - common.OptionMap["CacheRatio"] = operation_setting.CacheRatio2JSONString() - common.OptionMap["GroupRatio"] = setting.GroupRatio2JSONString() - common.OptionMap["UserUsableGroups"] = setting.UserUsableGroups2JSONString() - common.OptionMap["CompletionRatio"] = operation_setting.CompletionRatio2JSONString() - common.OptionMap["TopUpLink"] = common.TopUpLink - //common.OptionMap["ChatLink"] = common.ChatLink - //common.OptionMap["ChatLink2"] = common.ChatLink2 - 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() - - // 自动添加所有注册的模型配置 - 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.SysError("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 { - // Save to database first - option := Option{ - Key: key, - } - // https://gorm.io/docs/update.html#Save-All-Fields - DB.FirstOrCreate(&option, Option{Key: key}) - option.Value = value - // Save is a combination function. - // If save value does not contain primary key, it will execute Create, - // otherwise it will execute Update (with all fields). - DB.Save(&option) - // Update OptionMap - 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" { - 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": - common.DisplayInCurrencyEnabled = boolValue - 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 - } - } - 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": - setting.ServerAddress = value - case "WorkerUrl": - setting.WorkerUrl = value - case "WorkerValidKey": - setting.WorkerValidKey = value - case "PayAddress": - setting.PayAddress = value - case "Chats": - err = setting.UpdateChatsByJsonString(value) - case "CustomCallbackAddress": - setting.CustomCallbackAddress = value - case "EpayId": - setting.EpayId = value - case "EpayKey": - setting.EpayKey = value - case "Price": - setting.Price, _ = strconv.ParseFloat(value, 64) - case "MinTopUp": - setting.MinTopUp, _ = strconv.Atoi(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 "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 "RetryTimes": - common.RetryTimes, _ = strconv.Atoi(value) - case "DataExportInterval": - common.DataExportInterval, _ = strconv.Atoi(value) - case "DataExportDefaultTime": - common.DataExportDefaultTime = value - case "ModelRatio": - err = operation_setting.UpdateModelRatioByJSONString(value) - case "GroupRatio": - err = setting.UpdateGroupRatioByJSONString(value) - case "UserUsableGroups": - err = setting.UpdateUserUsableGroupsByJSONString(value) - case "CompletionRatio": - err = operation_setting.UpdateCompletionRatioByJSONString(value) - case "ModelPrice": - err = operation_setting.UpdateModelPriceByJSONString(value) - case "CacheRatio": - err = operation_setting.UpdateCacheRatioByJSONString(value) - case "TopUpLink": - common.TopUpLink = value - //case "ChatLink": - // common.ChatLink = value - //case "ChatLink2": - // common.ChatLink2 = 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) - } - return err -} - -// handleConfigUpdate 处理分层配置更新,返回是否已处理 -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 // 已处理 -} \ No newline at end of file