From 4624f603d79151c8d07375a27ec277a5a53e178b Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期一, 05 八月 2019 14:44:20 +0800 Subject: [PATCH] --- --- labelFilter/ruleForLabel.go | 110 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 64 insertions(+), 46 deletions(-) diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go index fe905b2..e4146a5 100644 --- a/labelFilter/ruleForLabel.go +++ b/labelFilter/ruleForLabel.go @@ -4,65 +4,81 @@ "basic.com/dbapi.git" "basic.com/pubsub/protomsg.git" "github.com/knetic/govaluate" + "os" "ruleprocess/logger" "ruleprocess/ruleserver" "strconv" "time" ) -func Judge(label *Label, result ruleserver.ResultMsg){ +func Judge(result ruleserver.ResultMsg){ + // 瑁呴厤鎴愯嚜宸卞彲浠ヨ瘑鍒殑鏁版嵁 + label := new(Label) + label.DataFormatToLabel(result) + logger.Info("label鐨勪俊鎭細",label.CameraName,label.DefenceLevel,label.Time) + if label.CameraName == "" { + logger.Error("鏃犳晥鏁版嵁锛岀洿鎺ヨ繑鍥�") + return + } //鎷垮埌鎵�鏈夎鍒欑粍 var api dbapi.EventPushApi b,allRules := api.FindAllDetails() + logger.Info("鏌ョ湅鎵�鏈夎鍒欑粍锛�",allRules) if !b { logger.Error("鏌ヨ鏃堕棿鎺ㄩ�佽鍒欏け璐ワ紒") } //閬嶅巻鎵�鏈夌殑瑙勫垯缁勶紝鐪嬬湅绗﹀悎鍝釜瑙勫垯缁勶紝灏辨妸鏁版嵁鎻掑叆鍒板摢涓鍒欑粍鐨勭洰鏍囨満鍣ㄤ笂 for _,ruleGroup := range allRules { - // 鍏堣繃鏃堕棿瑙勫垯 - timeJudge(label,ruleGroup) - result := "" - var Connector string - if ruleGroup.IsSatisfyAll { - Connector = "&&" - } else { - Connector = "||" - } - for _,rule := range ruleGroup.Rules { - // 杩囨瘡涓�涓皬瑙勫垯 - if rule.TopicType == "camera" { - result = Connector + cameraJudge(label,rule) - } - if rule.TopicType == "baseLibrary" { - result = Connector + baseJudge(label,rule) - } - if rule.TopicType == "task" { - result = Connector + taskJudge(label,rule) - } - if rule.TopicType == "person" { - result = Connector + taskJudge(label,rule) - } - if rule.TopicType == "defence" { - result = Connector + defenceJudge(label,rule) - } - } - // 寰楀嚭鎬荤殑鍒ゆ柇缁撴灉 - if result != "" { - result = result[2:] // 鎶婂墠涓や綅瀛楃鍘绘帀 - expression, err:= govaluate.NewEvaluableExpression(result); - if err != nil { - logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒") - } - result, err1:= expression.Evaluate(nil) - if err1 != nil { - logger.Error("甯﹀叆鍙傛暟鏈夎") - } - if result.(bool) { - logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細",result) - // 鎺ㄩ�佹湇鍔″櫒 - pushData(ruleGroup.IpPorts,result.(ruleserver.ResultMsg)) + if ruleGroup.Enable { // 澶ц鍒欏紑鍏冲紑鍚姸鎬� + // 鍏堣繃鏃堕棿瑙勫垯 + timeJudge(label,ruleGroup) + result := "" + var Connector string + if ruleGroup.IsSatisfyAll { + Connector = "&&" } else { - logger.Info("娌¢�氳繃瑙勫垯,琛ㄨ揪寮忎负锛�",result) + Connector = "||" + } + for _,rule := range ruleGroup.Rules { + // 杩囨瘡涓�涓皬瑙勫垯 + if rule.TopicType == "camera" { + result = Connector + cameraJudge(label,rule) + } + if rule.TopicType == "baseLibrary" { + result = Connector + baseJudge(label,rule) + } + if rule.TopicType == "task" { + result = Connector + taskJudge(label,rule) + } + if rule.TopicType == "person" { + result = Connector + taskJudge(label,rule) + } + if rule.TopicType == "defence" { + result = Connector + defenceJudge(label,rule) + } + } + // 寰楀嚭鎬荤殑鍒ゆ柇缁撴灉 + if result != "" { + logger.Info("鎬荤殑鍒ゆ柇缁撴灉锛�",result) + result = result[2:] // 鎶婂墠涓や綅瀛楃鍘绘帀 + expression, err:= govaluate.NewEvaluableExpression(result); + if err != nil { + logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒") + } + result, err1:= expression.Evaluate(nil) + if err1 != nil { + logger.Error("甯﹀叆鍙傛暟鏈夎") + } + logger.Warn("瑙勫垯鍒ゆ柇缁撴灉鏄細",) + if result.(bool) { + logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細",result) + // 鎺ㄩ�佹湇鍔″櫒 + pushData(ruleGroup.Urls,result.(ruleserver.ResultMsg)) + os.Exit(1) + } else { + logger.Info("娌¢�氳繃瑙勫垯,琛ㄨ揪寮忎负锛�",result) + os.Exit(1) + } } } } @@ -187,6 +203,8 @@ return "false" } // 璋冪敤鐩爣鏈嶅姟鍣ㄧ殑鎻掑叆鎺ュ彛 -func pushData (urls []*protomsg.PushIpPort, data ruleserver.ResultMsg){ - +func pushData (urls []*protomsg.PushUrl, data ruleserver.ResultMsg){ + for _,url := range urls { + Push(url.Url,data) + } } \ No newline at end of file -- Gitblit v1.8.0