diff --git a/controller/channel.go b/controller/channel.go index 1551369e..37c7ba32 100644 --- a/controller/channel.go +++ b/controller/channel.go @@ -274,6 +274,17 @@ func AddChannel(c *gin.Context) { } localChannel := channel localChannel.Key = key + // Validate the length of the model name + models := strings.Split(localChannel.Models, ",") + for _, model := range models { + if len(model) > 256 { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": fmt.Sprintf("模型名称过长: %s", model), + }) + return + } + } channels = append(channels, localChannel) } err = model.BatchInsertChannels(channels) diff --git a/model/ability.go b/model/ability.go index bb8ae806..e5fce321 100644 --- a/model/ability.go +++ b/model/ability.go @@ -12,7 +12,7 @@ import ( type Ability struct { Group string `json:"group" gorm:"type:varchar(64);primaryKey;autoIncrement:false"` - Model string `json:"model" gorm:"type:varchar(64);primaryKey;autoIncrement:false"` + Model string `json:"model" gorm:"type:varchar(256);primaryKey;autoIncrement:false"` ChannelId int `json:"channel_id" gorm:"primaryKey;autoIncrement:false;index"` Enabled bool `json:"enabled"` Priority *int64 `json:"priority" gorm:"bigint;default:0;index"` diff --git a/model/cache.go b/model/cache.go index b6102200..0af7664a 100644 --- a/model/cache.go +++ b/model/cache.go @@ -14,102 +14,102 @@ import ( //func CacheGetUserGroup(id int) (group string, err error) { // if !common.RedisEnabled { // return GetUserGroup(id) -// } -// group, err = common.RedisGet(fmt.Sprintf("user_group:%d", id)) -// if err != nil { -// group, err = GetUserGroup(id) -// if err != nil { -// return "", err -// } -// err = common.RedisSet(fmt.Sprintf("user_group:%d", id), group, time.Duration(constant.UserId2GroupCacheSeconds)*time.Second) -// if err != nil { -// common.SysError("Redis set user group error: " + err.Error()) -// } -// } -// return group, err -//} + // } + // group, err = common.RedisGet(fmt.Sprintf("user_group:%d", id)) + // if err != nil { + // group, err = GetUserGroup(id) + // if err != nil { + // return "", err + // } + // err = common.RedisSet(fmt.Sprintf("user_group:%d", id), group, time.Duration(constant.UserId2GroupCacheSeconds)*time.Second) + // if err != nil { + // common.SysError("Redis set user group error: " + err.Error()) + // } + // } + // return group, err + //} // -//func CacheGetUsername(id int) (username string, err error) { -// if !common.RedisEnabled { -// return GetUsernameById(id) -// } -// username, err = common.RedisGet(fmt.Sprintf("user_name:%d", id)) -// if err != nil { -// username, err = GetUsernameById(id) -// if err != nil { -// return "", err -// } -// err = common.RedisSet(fmt.Sprintf("user_name:%d", id), username, time.Duration(constant.UserId2GroupCacheSeconds)*time.Second) -// if err != nil { -// common.SysError("Redis set user group error: " + err.Error()) -// } -// } -// return username, err -//} + //func CacheGetUsername(id int) (username string, err error) { + // if !common.RedisEnabled { + // return GetUsernameById(id) + // } + // username, err = common.RedisGet(fmt.Sprintf("user_name:%d", id)) + // if err != nil { + // username, err = GetUsernameById(id) + // if err != nil { + // return "", err + // } + // err = common.RedisSet(fmt.Sprintf("user_name:%d", id), username, time.Duration(constant.UserId2GroupCacheSeconds)*time.Second) + // if err != nil { + // common.SysError("Redis set user group error: " + err.Error()) + // } + // } + // return username, err + //} // -//func CacheGetUserQuota(id int) (quota int, err error) { -// if !common.RedisEnabled { -// return GetUserQuota(id) -// } -// quotaString, err := common.RedisGet(fmt.Sprintf("user_quota:%d", id)) -// if err != nil { -// quota, err = GetUserQuota(id) -// if err != nil { -// return 0, err -// } -// return quota, nil -// } -// quota, err = strconv.Atoi(quotaString) -// return quota, nil -//} + //func CacheGetUserQuota(id int) (quota int, err error) { + // if !common.RedisEnabled { + // return GetUserQuota(id) + // } + // quotaString, err := common.RedisGet(fmt.Sprintf("user_quota:%d", id)) + // if err != nil { + // quota, err = GetUserQuota(id) + // if err != nil { + // return 0, err + // } + // return quota, nil + // } + // quota, err = strconv.Atoi(quotaString) + // return quota, nil + //} // -//func CacheUpdateUserQuota(id int) error { -// if !common.RedisEnabled { -// return nil -// } -// quota, err := GetUserQuota(id) -// if err != nil { -// return err -// } -// return cacheSetUserQuota(id, quota) -//} + //func CacheUpdateUserQuota(id int) error { + // if !common.RedisEnabled { + // return nil + // } + // quota, err := GetUserQuota(id) + // if err != nil { + // return err + // } + // return cacheSetUserQuota(id, quota) + //} // -//func cacheSetUserQuota(id int, quota int) error { -// err := common.RedisSet(fmt.Sprintf("user_quota:%d", id), fmt.Sprintf("%d", quota), time.Duration(constant.UserId2QuotaCacheSeconds)*time.Second) -// return err -//} + //func cacheSetUserQuota(id int, quota int) error { + // err := common.RedisSet(fmt.Sprintf("user_quota:%d", id), fmt.Sprintf("%d", quota), time.Duration(constant.UserId2QuotaCacheSeconds)*time.Second) + // return err + //} // -//func CacheDecreaseUserQuota(id int, quota int) error { -// if !common.RedisEnabled { -// return nil -// } -// err := common.RedisDecrease(fmt.Sprintf("user_quota:%d", id), int64(quota)) -// return err -//} + //func CacheDecreaseUserQuota(id int, quota int) error { + // if !common.RedisEnabled { + // return nil + // } + // err := common.RedisDecrease(fmt.Sprintf("user_quota:%d", id), int64(quota)) + // return err + //} // -//func CacheIsUserEnabled(userId int) (bool, error) { -// if !common.RedisEnabled { -// return IsUserEnabled(userId) -// } -// enabled, err := common.RedisGet(fmt.Sprintf("user_enabled:%d", userId)) -// if err == nil { -// return enabled == "1", nil -// } + //func CacheIsUserEnabled(userId int) (bool, error) { + // if !common.RedisEnabled { + // return IsUserEnabled(userId) + // } + // enabled, err := common.RedisGet(fmt.Sprintf("user_enabled:%d", userId)) + // if err == nil { + // return enabled == "1", nil + // } // -// userEnabled, err := IsUserEnabled(userId) -// if err != nil { -// return false, err -// } -// enabled = "0" -// if userEnabled { -// enabled = "1" -// } -// err = common.RedisSet(fmt.Sprintf("user_enabled:%d", userId), enabled, time.Duration(constant.UserId2StatusCacheSeconds)*time.Second) -// if err != nil { -// common.SysError("Redis set user enabled error: " + err.Error()) -// } -// return userEnabled, err -//} + // userEnabled, err := IsUserEnabled(userId) + // if err != nil { + // return false, err + // } + // enabled = "0" + // if userEnabled { + // enabled = "1" + // } + // err = common.RedisSet(fmt.Sprintf("user_enabled:%d", userId), enabled, time.Duration(constant.UserId2StatusCacheSeconds)*time.Second) + // if err != nil { + // common.SysError("Redis set user enabled error: " + err.Error()) + // } + // return userEnabled, err + //} var group2model2channels map[string]map[string][]*Channel var channelsIDM map[int]*Channel @@ -181,7 +181,7 @@ func CacheGetRandomSatisfiedChannel(group string, model string, retry int) (*Cha } // if memory cache is disabled, get channel directly from database - if !common.MemoryCacheEnabled { + if (!common.MemoryCacheEnabled) { return GetRandomSatisfiedChannel(group, model, retry) } channelSyncLock.RLock()