From 50c3100afb79284a2c596c60cae291cc8aa2f671 Mon Sep 17 00:00:00 2001 From: AH-dark Date: Sat, 17 Sep 2022 13:09:14 +0800 Subject: [PATCH] Chore: correct the `DB` property of `RedisConfig` to int type Converting Int to String is safer than converting String to Int. --- middleware/session.go | 3 ++- pkg/cache/redis.go | 10 ++-------- pkg/conf/conf.go | 2 +- pkg/conf/defaults.go | 2 +- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/middleware/session.go b/middleware/session.go index 9c3b6798..1a0d2a4e 100644 --- a/middleware/session.go +++ b/middleware/session.go @@ -8,6 +8,7 @@ import ( "github.com/gin-contrib/sessions/memstore" "github.com/gin-contrib/sessions/redis" "github.com/gin-gonic/gin" + "strconv" ) // Store session存储 @@ -18,7 +19,7 @@ func Session(secret string) gin.HandlerFunc { // Redis设置不为空,且非测试模式时使用Redis if conf.RedisConfig.Server != "" && gin.Mode() != gin.TestMode { var err error - Store, err = redis.NewStoreWithDB(10, conf.RedisConfig.Network, conf.RedisConfig.Server, conf.RedisConfig.Password, conf.RedisConfig.DB, []byte(secret)) + Store, err = redis.NewStoreWithDB(10, conf.RedisConfig.Network, conf.RedisConfig.Server, conf.RedisConfig.Password, strconv.Itoa(conf.RedisConfig.DB), []byte(secret)) if err != nil { util.Log().Panic("无法连接到 Redis:%s", err) } diff --git a/pkg/cache/redis.go b/pkg/cache/redis.go index c2b9bb7b..91e53dce 100644 --- a/pkg/cache/redis.go +++ b/pkg/cache/redis.go @@ -3,7 +3,6 @@ package cache import ( "bytes" "encoding/gob" - "strconv" "time" "github.com/cloudreve/Cloudreve/v3/pkg/util" @@ -44,7 +43,7 @@ func deserializer(value []byte) (interface{}, error) { } // NewRedisStore 创建新的redis存储 -func NewRedisStore(size int, network, address, password, database string) *RedisStore { +func NewRedisStore(size int, network, address, password string, database int) *RedisStore { return &RedisStore{ pool: &redis.Pool{ MaxIdle: size, @@ -54,15 +53,10 @@ func NewRedisStore(size int, network, address, password, database string) *Redis return err }, Dial: func() (redis.Conn, error) { - db, err := strconv.Atoi(database) - if err != nil { - return nil, err - } - c, err := redis.Dial( network, address, - redis.DialDatabase(db), + redis.DialDatabase(database), redis.DialPassword(password), ) if err != nil { diff --git a/pkg/conf/conf.go b/pkg/conf/conf.go index 5770e71f..b168e5f6 100644 --- a/pkg/conf/conf.go +++ b/pkg/conf/conf.go @@ -52,7 +52,7 @@ type redis struct { Network string Server string Password string - DB string + DB int } // 跨域配置 diff --git a/pkg/conf/defaults.go b/pkg/conf/defaults.go index ace4f755..7a66a63d 100644 --- a/pkg/conf/defaults.go +++ b/pkg/conf/defaults.go @@ -7,7 +7,7 @@ var RedisConfig = &redis{ Network: util.EnvStr("REDIS_NETWORK", "tcp"), Server: util.EnvStr("REDIS_SERVER", ""), Password: util.EnvStr("REDIS_PASSWORD", ""), - DB: util.EnvStr("REDIS_DB", "0"), + DB: util.EnvInt("REDIS_DB", 0), } // DatabaseConfig 数据库配置