fix(alerts): Pro 到期后告警引擎停止评估 + 规则/通道写操作挂 RequirePro
用户指出的漏洞:免费期配完规则,到期后若引擎继续跑,告警等于免费功能,Pro 形同虚设; 重装又拿新试用继续白用。修复: - 引擎每轮先查 IsPro(),非 Pro 整轮跳过(规则与投递历史保留,重新授权即恢复) - 规则建/改、通道保存、立即检查挂 RequirePro 闸门(读列表/历史保持可见,升级引导有据可依) - 试用期内 IsPro=true 照常工作(实测建规则 200)
This commit is contained in:
1 parent
897899305f
commit
b8eca87a89
2 files changed
+11
-5
No files matched your search
@@ -143,14 +143,14 @@ func SetupRouter() *gin.Engine {
|
|||||||
alertNotify.PUT("/notify-config", middleware.AdminAuth(), alertsCtrl.UpdateNotifyConfig)
|
alertNotify.PUT("/notify-config", middleware.AdminAuth(), alertsCtrl.UpdateNotifyConfig)
|
||||||
alertNotify.POST("/notify-config/test", middleware.AdminAuth(), alertsCtrl.TestNotifyConfig)
|
alertNotify.POST("/notify-config/test", middleware.AdminAuth(), alertsCtrl.TestNotifyConfig)
|
||||||
alertNotify.GET("/rules", alertsCtrl.ListRules)
|
alertNotify.GET("/rules", alertsCtrl.ListRules)
|
||||||
alertNotify.POST("/rules", middleware.AdminAuth(), alertsCtrl.CreateRule)
|
alertNotify.POST("/rules", middleware.AdminAuth(), middleware.RequirePro(), alertsCtrl.CreateRule)
|
||||||
alertNotify.PUT("/rules/:id", middleware.AdminAuth(), alertsCtrl.UpdateRule)
|
alertNotify.PUT("/rules/:id", middleware.AdminAuth(), middleware.RequirePro(), alertsCtrl.UpdateRule)
|
||||||
alertNotify.DELETE("/rules/:id", middleware.AdminAuth(), alertsCtrl.DeleteRule)
|
alertNotify.DELETE("/rules/:id", middleware.AdminAuth(), alertsCtrl.DeleteRule)
|
||||||
alertNotify.POST("/check", middleware.AdminAuth(), alertsCtrl.CheckNow)
|
alertNotify.POST("/check", middleware.AdminAuth(), middleware.RequirePro(), alertsCtrl.CheckNow)
|
||||||
alertNotify.GET("/deliveries", alertsCtrl.Deliveries)
|
alertNotify.GET("/deliveries", alertsCtrl.Deliveries)
|
||||||
alertNotify.GET("/channels", alertsCtrl.ListChannels)
|
alertNotify.GET("/channels", alertsCtrl.ListChannels)
|
||||||
alertNotify.POST("/channels", middleware.AdminAuth(), alertsCtrl.SaveChannel)
|
alertNotify.POST("/channels", middleware.AdminAuth(), middleware.RequirePro(), alertsCtrl.SaveChannel)
|
||||||
alertNotify.PUT("/channels/:id", middleware.AdminAuth(), alertsCtrl.SaveChannel)
|
alertNotify.PUT("/channels/:id", middleware.AdminAuth(), middleware.RequirePro(), alertsCtrl.SaveChannel)
|
||||||
alertNotify.DELETE("/channels/:id", middleware.AdminAuth(), alertsCtrl.DeleteChannel)
|
alertNotify.DELETE("/channels/:id", middleware.AdminAuth(), alertsCtrl.DeleteChannel)
|
||||||
alertNotify.POST("/channels/test", middleware.AdminAuth(), alertsCtrl.TestChannel)
|
alertNotify.POST("/channels/test", middleware.AdminAuth(), alertsCtrl.TestChannel)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,6 +84,12 @@ func StartAlertEngine() {
|
|||||||
log.Printf("[alert] 上一轮检查仍在运行,跳过本轮")
|
log.Printf("[alert] 上一轮检查仍在运行,跳过本轮")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
// Pro 闸门:日志告警是 Pro 功能,免费/试用到期后引擎不再评估
|
||||||
|
// (规则与历史保留,重新授权即恢复,不删任何数据)
|
||||||
|
if !IsPro() {
|
||||||
|
alertCheckRunning.Store(false)
|
||||||
|
continue
|
||||||
|
}
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
ok := true
|
ok := true
|
||||||
func() {
|
func() {
|
||||||
|
|||||||
Reference in new issue
Block a user