From 031d773855fb40ea7b6d9cffd860ba1006ef6af4 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期五, 16 八月 2019 17:55:18 +0800 Subject: [PATCH] 暂时写死sdkId与soName测试 --- ruleserver/ruleToformula.go | 9 ++++ algorithm/static/static.go | 65 ++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletions(-) diff --git a/algorithm/static/static.go b/algorithm/static/static.go new file mode 100644 index 0000000..774d97a --- /dev/null +++ b/algorithm/static/static.go @@ -0,0 +1,65 @@ +package main + +import ( + "basic.com/pubsub/protomsg.git" + "github.com/knetic/govaluate" + "ruleprocess/logger" + "ruleprocess/ruleserver" + "ruleprocess/structure" + "strconv" +) +//涓綋闈欐绠楁硶 +func Entrance(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult { + for _,obj := range am.FilterData { + var flag bool = true + for k, _ := range ruleserver.TimeEleList { + if k == rule.Id+""+strconv.Itoa(int(obj.Id)) { + flag = false // 鏈夊氨缃负false + logger.Info("鏈夎繖涓畾鏃跺櫒锛屼笉鍐嶅垱寤轰簡锛�") + } + } + if flag { + timeEle := ruleserver.TimeElement{N: 10, InitN: 10, AlarmFlag: false, BufferFlag: 5} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌 + ruleserver.TimeEleList[rule.Id+""+strconv.Itoa(int(obj.Id))] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互灏忚鍒檌d鍜岀洰鏍噄d涓洪敭 + } + } + return structure.LittleRuleResult{} +} + +// 杩囨护瑙勫垯鍏堢瓫閫夊嚭绗﹀悎鏉′欢鐨勭洰鏍囨暟閲� +func filterRule(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult { + // 澶勭悊鐨勯兘鏄痽olo鏁版嵁 + var args []*structure.Arg + if rule.RuleWithPre == "&&" { + args = am.FilterData + } else { + args = am.Args + } + // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁 + am.FilterData = am.FilterData[0:0] + //logger.Debug("鐪嬬湅args锛氾細锛氾細锛�", args) + for _, arg := range args { + var formula string + if rule.SdkArgAlias == "score" { + formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� + logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula) + } else if rule.SdkArgAlias == "proportion" { + formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� + logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula) + } else { + formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� + logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula) + } + expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡 + result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� + if result.(bool) { + am.FilterData = append(am.FilterData, arg) // 寰楀埌绗﹀悎鏉′欢鐨勮繃婊ゆ暟鎹� + } + } + am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁 + if am.TargetNum > 0 { + return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort} + } else { + return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort} + } +} \ No newline at end of file diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 1305b1a..7f42130 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -117,7 +117,14 @@ func CallSo(sdkId string,rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult{ // 鏍规嵁sdkId鏌ュ嚭鍏跺搴旂殑sdk鐨剆oName锛岃皟鐢ㄧ浉搴攕o鐨凟ntrance鏂规硶 - var soName = "intrusion.so" + var soName = "" + if sdkId == "812b674b-2375-4589-919a-5c1c3278a97e" { + soName = "face.so" + } else if sdkId == "812b674b-2375-4589-919a-5c1c3278a975"{ + soName = "intrusion.so" + } else if sdkId == "812b674b-2375-4589-919a-5c1c3278a976" { + soName = "personUnsual.so" + } p,err := plugin.Open("../algorithm/"+soName) if err != nil { panic(err) -- Gitblit v1.8.0