From b5971b854c405e8a03f0427cb0a46497c7077ef2 Mon Sep 17 00:00:00 2001 From: zijiren233 Date: Fri, 11 Oct 2024 14:29:26 +0800 Subject: [PATCH] fix: room ttl setting bound check --- internal/op/op.go | 5 +++++ internal/settings/var.go | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/internal/op/op.go b/internal/op/op.go index f6309c4..ce30555 100644 --- a/internal/op/op.go +++ b/internal/op/op.go @@ -3,11 +3,16 @@ package op import ( "time" + log "github.com/sirupsen/logrus" "github.com/zijiren233/gencontainer/synccache" ) func Init(size int) error { roomCache = synccache.NewSyncCache[string, *Room](time.Minute*5, synccache.WithDeletedCallback[string, *Room](func(v *Room) { + log.WithFields(log.Fields{ + "rid": v.ID, + "rn": v.Name, + }).Debugf("room ttl expired, closing") v.close() })) userCache = synccache.NewSyncCache[string, *User](time.Minute * 5) diff --git a/internal/settings/var.go b/internal/settings/var.go index 23da0ff..3da4636 100644 --- a/internal/settings/var.go +++ b/internal/settings/var.go @@ -12,8 +12,13 @@ var ( RoomMustNeedPwd BoolSetting RoomMustNoNeedPwd BoolSetting CreateRoomNeedReview = NewBoolSetting("create_room_need_review", false, model.SettingGroupRoom) - // 48 hours - RoomTTL = NewInt64Setting("room_ttl", 48, model.SettingGroupRoom) + // default 48 hours + RoomTTL = NewInt64Setting("room_ttl", 48, model.SettingGroupRoom, WithBeforeSetInt64(func(is Int64Setting, i int64) (int64, error) { + if i < 1 { + return 0, errors.New("room ttl must be greater than 0") + } + return i, nil + })) ) func init() {