123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- // rule
- package admin
- import (
- . "jy/mongodbutil"
- "regexp"
- "strings"
- "time"
- "github.com/gin-gonic/gin"
- )
- var Date_Short_Layout = "2006-01-02"
- func init() {
- //rulepre
- Admin.GET("/rulepre", func(c *gin.Context) {
- version := c.Query("version")
- c.HTML(200, "rule_prelist.html", gin.H{"version": version})
- })
- Admin.POST("/rulepre/data", RulePreData)
- Admin.POST("/rulepre/save", RulePreSave)
- Admin.POST("/rulepre/searchbyid", RulePreSearchById)
- Admin.POST("/rulepre/del", RulePreDel)
- Admin.GET("/rulepre/newlua", RulePreNewLua)
- //ruletag
- Admin.GET("/ruletag", func(c *gin.Context) {
- version := c.Query("version")
- c.HTML(200, "rule_taglist.html", gin.H{"version": version})
- })
- Admin.POST("/ruletag/data", RuleTagData)
- Admin.POST("/ruletag/save", RuleTagSave)
- Admin.POST("/ruletag/del", RuleTagDel)
- Admin.POST("/ruletag/editsave", RuleTagEditSave)
- }
- //前置规则列表
- func RulePreData(c *gin.Context) {
- version, _ := c.GetPostForm("version")
- data, _ := Mgo.Find("rule_pre", `{"version":"`+version+`"}`, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data, "version": version})
- }
- //前置规则创建
- func RulePreSave(c *gin.Context) {
- stype, _ := c.GetPostForm("type")
- name, _ := c.GetPostForm("name")
- version, _ := c.GetPostForm("version")
- descript, _ := c.GetPostForm("descript")
- username, _ := c.GetPostForm("username")
- field, _ := c.GetPostForm("field")
- rule, _ := c.GetPostForm("rule")
- luastr, _ := c.GetPostForm("luastr")
- if stype == "0" { //正则
- if name == "" || rule == "" {
- c.JSON(200, gin.H{"rep": false, "msg": "表单不完整"})
- return
- }
- } else { //lua脚本
- if luastr == "" {
- c.JSON(200, gin.H{"rep": false, "msg": "表单不完整"})
- return
- }
- }
- data := map[string]interface{}{
- "name": name,
- "version": version,
- "type": stype,
- "descript": descript,
- "username": username,
- "rule": rule,
- "field": field,
- "luastr": luastr,
- "intime": time.Now().Unix(),
- }
- b := Mgo.Update("rule_pre", `{"name":"`+name+`","version":"`+version+`"}`, data, true, false)
- if b {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
- func RulePreSearchById(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- data, _ := Mgo.FindById("rule_pre", _id, nil)
- c.JSON(200, gin.H{"rep": data})
- }
- func RulePreDel(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.Del("rule_pre", `{"_id":"`+_id+`"}`)
- c.JSON(200, gin.H{"rep": b})
- }
- func RulePreNewLua(c *gin.Context) {
- version := c.Query("version")
- _id := c.Query("_id")
- data := map[string]interface{}{}
- if _id != "" {
- tmp, _ := Mgo.FindById("rule_pre", _id, nil)
- data = *tmp
- }
- c.HTML(200, "rule_prelua.html", gin.H{"version": version, "data": data})
- }
- //标签库列表
- func RuleTagData(c *gin.Context) {
- version, _ := c.GetPostForm("version")
- data, _ := Mgo.Find("rule_tag", `{"version":"`+version+`"}`, `{"_id":-1}`, nil, false, -1, -1)
- for _, d := range *data {
- timeStr := time.Unix(d["intime"].(int64), 0).Format(Date_Short_Layout)
- d["intime"] = timeStr
- }
- c.JSON(200, gin.H{"data": data})
- }
- //添加标签
- func RuleTagSave(c *gin.Context) {
- name, _ := c.GetPostForm("name")
- version, _ := c.GetPostForm("version")
- contentStr, _ := c.GetPostForm("content")
- username, _ := c.GetPostForm("username")
- tp, _ := c.GetPostForm("tp")
- content := strings.Split(contentStr, ",")
- data, _ := Mgo.FindOne("rule_tag", `{"name":"`+name+`"}`)
- if len(*data) > 0 { //判重,防止添加name相同的标签
- c.JSON(200, gin.H{"rep": false})
- return
- }
- if tp == "正则" { //验证是否是正则
- for _, ct := range content {
- _, err := regexp.Compile(ct)
- if err != nil {
- c.JSON(200, gin.H{"rep": false})
- return
- }
- }
- }
- save := map[string]interface{}{
- "name": name,
- "version": version,
- "content": content,
- "creater": username,
- "intime": time.Now().Unix(),
- "type": tp,
- }
- b := Mgo.Save("rule_tag", save)
- if b != "" {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
- //删除标签
- func RuleTagDel(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.Del("rule_tag", `{"_id":"`+_id+`"}`)
- if b {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
- //编辑保存
- func RuleTagEditSave(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- contentStr, _ := c.GetPostForm("content")
- content := strings.Split(contentStr, ",")
- data, _ := Mgo.FindOne("rule_tag", `{"_id":"`+_id+`"}`)
- if (*data)["type"] == "正则" { //验证是否是正则
- for _, ct := range content {
- _, err := regexp.Compile(ct)
- if err != nil {
- c.JSON(200, gin.H{"rep": false})
- return
- }
- }
- }
- if len(*data) > 0 {
- set := map[string]interface{}{
- "name": (*data)["name"],
- "version": (*data)["version"],
- "creater": (*data)["creater"],
- "intime": (*data)["intime"],
- "type": (*data)["type"],
- "content": content,
- }
- b := Mgo.Update("rule_tag", `{"_id":"`+_id+`"}`, set, false, false)
- if b {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
|