123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856 |
- // version
- package admin
- import (
- "encoding/json"
- "fmt"
- "github.com/gin-contrib/sessions"
- "github.com/gin-gonic/gin"
- "gopkg.in/mgo.v2/bson"
- "jy/extract"
- . "jy/mongodbutil"
- "net/http"
- "net/url"
- "qfw/util"
- "strings"
- "sync"
- "time"
- )
- func init() {
- Admin.GET("/site_management", func(c *gin.Context) {
- vid, _ := c.GetQuery("vid")
- c.HTML(
- http.StatusOK, "site_management.html",
- gin.H{"vid": vid},
- )
- })
- //初始化版本站点列表
- Admin.POST("/site_management/dataForVid", func(c *gin.Context) {
- vid, _ := c.GetQuery("vid")
- if vid == "" {
- data, _ := Mgo.Find("site_management", nil, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data})
- } else {
- data, _ := Mgo.Find("site_management", bson.M{"vid": vid}, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data})
- }
- }) //版本站点列表
- Admin.POST("/site_management/byId", func(c *gin.Context) {
- _id := c.PostForm("_id")
- if !bson.IsObjectIdHex(_id) {
- c.JSON(400, gin.H{"rep": false})
- return
- }
- data, _ := Mgo.FindById("site_management", _id, bson.M{})
- c.JSON(200, gin.H{"rep": true, "data": data})
- })
- //站点信息保存
- Admin.POST("/site_management/save", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- data := GetPostForm(c)
- if data["site_name"] == nil || data["site_href"] == nil {
- c.JSON(400, gin.H{"rep": false})
- return
- }
- u, _ := url.Parse(data["site_href"].(string))
- if u != nil && u.Scheme == "" {
- data["site_href"] = "http://" + strings.TrimSpace(data["site_href"].(string))
- }
- if scripts, ok := data["site_script"].(string); ok {
- if _id != "" {
- tt, _ := Mgo.FindById("site_management", _id, `{"site_script":1}`)
- if dbv, ok := (*tt)["site_script"].([]interface{}); ok {
- for _, vv := range dbv {
- extract.Luacodes.Delete(vv)
- }
- } else if dbv, ok := (*tt)["site_script"].(interface{}); ok {
- extract.Luacodes.Delete(dbv)
- }
- }
- luacodes := strings.Split(scripts, ",")
- for _, v := range luacodes {
- extract.Luacodes.Store(v, true)
- }
- data["site_script"] = luacodes
- }
- if data["isuse"] == nil {
- data["isuse"] = "true"
- }
- if data["vid"] != nil && bson.IsObjectIdHex(data["vid"].(string)) {
- if aa, b := Mgo.Find("version", bson.M{"_id": bson.ObjectIdHex(data["vid"].(string))}, nil, bson.M{"version": 1}, true, -1, -1); b {
- data["version"] = (*aa)[0]["version"]
- }
- }
- if _id != "" {
- Mgo.UpdateById("site_management", _id, map[string]interface{}{"$set": data})
- c.JSON(200, gin.H{"rep": true})
- } else {
- Mgo.Save("site_management", data)
- c.JSON(200, gin.H{"rep": true, "vid": data["vid"]})
- }
- })
- //站点信息删除
- Admin.POST("/site_management/delete", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- if _id == "" || !bson.IsObjectIdHex(_id) {
- c.JSON(400, gin.H{"rep": false})
- } else {
- tt, _ := Mgo.FindById("site_management", _id, `{"site_script":1}`)
- if dbv, ok := (*tt)["site_script"].([]interface{}); ok {
- for _, vv := range dbv {
- extract.Luacodes.Delete(vv)
- }
- } else if dbv, ok := (*tt)["site_script"].(interface{}); ok {
- extract.Luacodes.Delete(dbv)
- }
- Mgo.Del("site_management", bson.M{"_id": bson.ObjectIdHex(_id)})
- c.JSON(200, gin.H{"rep": true})
- }
- })
- //开关按钮
- Admin.POST("/site_management/use", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- isuse, _ := c.GetPostForm("isuse")
- b := Mgo.UpdateById("site_management", _id, `{"$set":{"isuse":`+isuse+`}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- //属性
- Admin.GET("/site_management/info", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- c.HTML(
- http.StatusOK, "site_versioninfo.html",
- gin.H{"vid": vid, "pid": pid},
- )
- })
- //属性配置
- Admin.POST("/site_management/infodata", func(c *gin.Context) {
- vid := c.PostForm("vid")
- pid := c.PostForm("pid")
- list, _ := Mgo.Find("site_versioninfo", `{"vid":"`+vid+`","pid":"`+pid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": list, "vid": vid, "pid": pid})
- })
- //属性保存
- Admin.POST("/site_management/infosave", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- data := GetPostForm(c)
- if _id != "" {
- Mgo.UpdateById("site_versioninfo", _id, map[string]interface{}{"$set": data})
- c.JSON(200, gin.H{"rep": true})
- } else {
- s_field, _ := c.GetPostForm("s_field")
- vid, _ := c.GetPostForm("vid")
- tmp, _ := Mgo.FindOne("site_versioninfo", `{"s_field":"`+s_field+`","vid":"`+vid+`","delete":false}`)
- if len(*tmp) > 0 {
- c.JSON(200, gin.H{"rep": false})
- } else {
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- data["l_lasttime"] = time.Now().Unix()
- data["delete"] = false
- pid := Mgo.Save("site_versioninfo", data)
- fromvid, _ := data["s_pversionid"].(string)
- if fromvid != "" {
- copyFieldRules(vid, pid, s_field, fromvid, sessions.Default(c).Get("username").(string), true)
- }
- c.JSON(200, gin.H{"rep": true})
- }
- }
- })
- //属性use按钮
- Admin.POST("/site_management/infouse", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- isuse, _ := c.GetPostForm("isuse")
- b := Mgo.UpdateById("site_versioninfo", _id, `{"$set":{"isuse":`+isuse+`}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- //属性删除按钮
- Admin.POST("/site_management/infodel", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.UpdateById("site_versioninfo", _id, `{"$set":{"delete":true}}`)
- v, _ := Mgo.FindById("site_versioninfo", _id, `{"vid":1}`)
- go DelLogic(util.ObjToString((*v)["vid"]), _id, true)
- //b := Mgo.Del("site_versioninfo", `{"_id":"`+_id+`"}`)
- c.JSON(200, gin.H{"rep": b})
- })
- //逻辑页面
- Admin.GET("/site_management/rulelogic", func(c *gin.Context) {
- vid := c.Query("vid")
- p_pid := c.Query("p_pid")
- pid := c.Query("pid")
- c.HTML(200, "site_rule_logiclist.html", gin.H{"vid": vid, "pid": pid, "p_pid": p_pid})
- })
- //逻辑页面数据展示
- Admin.POST("/site_management/rulelogic/data", func(c *gin.Context) {
- vid, _ := c.GetPostForm("vid")
- pid, _ := c.GetPostForm("pid")
- data, _ := Mgo.Find("site_rule_logic", `{"vid":"`+vid+`","pid":"`+pid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data, "vid": vid, "pid": pid})
- })
- //逻辑页面数据保存
- Admin.POST("/site_management/rulelogic/save", func(c *gin.Context) {
- data := GetPostForm(c)
- _id, _ := c.GetPostForm("_id")
- b := false
- if _id == "" {
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- data["delete"] = false
- b = Mgo.Save("site_rule_logic", data) != ""
- } else {
- data["l_lasttime"] = time.Now().Unix()
- b = Mgo.Update("site_rule_logic", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": data,
- }, true, false)
- }
- c.JSON(200, gin.H{"rep": b})
- })
- //逻辑页面删除按钮
- Admin.POST("/site_management/rulelogic/del", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- //b := Mgo.Del("rule_logic", `{"_id":"`+_id+`"}`)
- b := Mgo.UpdateById("site_rule_logic", _id, `{"$set":{"delete":true}}`)
- go DelLogicPre(_id, true)
- go DelLogicCore(_id, true)
- go DelLogicBack(_id, true)
- c.JSON(200, gin.H{"rep": b})
- })
- //逻辑页面启用按钮
- Admin.POST("/site_management/rulelogic/use", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- isuse, _ := c.GetPostForm("isuse")
- b := Mgo.UpdateById("site_rule_logic", _id, `{"$set":{"isuse":`+isuse+`}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- //前置规则
- Admin.GET("/site_management/logicpre", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- c.HTML(200, "site_rule_logicprelist.html", gin.H{"vid": vid, "pid": pid, "sid": sid})
- })
- Admin.POST("/site_management/logicpre/data", func(c *gin.Context) {
- vid, _ := c.GetPostForm("vid")
- pid, _ := c.GetPostForm("pid")
- sid, _ := c.GetPostForm("sid")
- data, _ := Mgo.Find("site_rule_logicpre", `{"sid":"`+sid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data, "vid": vid, "pid": pid, "sid": sid})
- })
- Admin.POST("/site_management/logicpre/save", func(c *gin.Context) {
- data := GetPostForm(c)
- _id, _ := c.GetPostForm("_id")
- b := false
- if _id == "" {
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- data["delete"] = false
- s_type := data["s_type"]
- code := ""
- if s_type == "0" { //抽取前置正则E_FE
- code = getSyncIndex(E_FE)
- } else { //抽取前置脚本
- code = getSyncIndex(E_FL)
- }
- data["s_code"] = code
- b = Mgo.Save("site_rule_logicpre", data) != ""
- } else {
- data["l_lasttime"] = time.Now().Unix()
- b = Mgo.Update("site_rule_logicpre", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": data,
- }, true, false)
- }
- c.JSON(200, gin.H{"rep": b})
- })
- Admin.POST("/site_management/logicpre/del", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- //b := Mgo.Del("rule_logicpre", `{"_id":"`+_id+`"}`)
- b := Mgo.UpdateById("site_rule_logicpre", _id, `{"$set":{"delete":true}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- Admin.GET("/site_management/logicore", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- //查询属性字段
- tmp, _ := Mgo.FindById("site_versioninfo", pid, `{"s_field":1}`)
- c.HTML(200, "site_rule_logicore.html", gin.H{"vid": vid, "pid": pid, "sid": sid, "field": (*tmp)["s_field"]})
- })
- //抽取规则
- Admin.POST("/site_management/logicore/data", func(c *gin.Context) {
- vid, _ := c.GetPostForm("vid")
- pid, _ := c.GetPostForm("pid")
- sid, _ := c.GetPostForm("sid")
- data, _ := Mgo.Find("site_rule_logicore", `{"sid":"`+sid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data, "vid": vid, "pid": pid, "sid": sid})
- })
- Admin.POST("/site_management/logicore/save", func(c *gin.Context) {
- data := GetPostForm(c)
- _id, _ := c.GetPostForm("_id")
- b := false
- if _id == "" {
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- data["delete"] = false
- s_type := data["s_type"]
- code := ""
- if s_type == "0" { //抽取逻辑正则
- code = getSyncIndex(E_CE)
- } else { //抽取逻辑脚本
- code = getSyncIndex(E_CL)
- }
- data["s_code"] = code
- b = Mgo.Save("site_rule_logicore", data) != ""
- } else {
- data["l_lasttime"] = time.Now().Unix()
- b = Mgo.Update("site_rule_logicore", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": data,
- }, true, false)
- }
- c.JSON(200, gin.H{"rep": b})
- })
- Admin.POST("/site_management/logicore/del", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- //b := Mgo.Del("rule_logicore", `{"_id":"`+_id+`"}`)
- b := Mgo.UpdateById("site_rule_logicore", _id, `{"$set":{"delete":true}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- Admin.POST("/site_management/logicore/use", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- isuse, _ := c.GetPostForm("isuse")
- b := Mgo.UpdateById("site_rule_logicore", _id, `{"$set":{"isuse":`+isuse+`}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- //后置规则
- Admin.GET("/site_management/logicback", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- //查询属性字段
- tmp, _ := Mgo.FindById("site_versioninfo", pid, `{"s_field":1}`)
- c.HTML(200, "site_rule_logicbacklist.html", gin.H{"vid": vid, "pid": pid, "sid": sid, "field": (*tmp)["s_field"]})
- })
- Admin.POST("/site_management/logicback/data", func(c *gin.Context) {
- vid, _ := c.GetPostForm("vid")
- pid, _ := c.GetPostForm("pid")
- sid, _ := c.GetPostForm("sid")
- data, _ := Mgo.Find("site_rule_logicback", `{"sid":"`+sid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data, "vid": vid, "pid": pid, "sid": sid})
- })
- Admin.POST("/site_management/logicback/save", func(c *gin.Context) {
- data := GetPostForm(c)
- _id, _ := c.GetPostForm("_id")
- b := false
- if _id == "" {
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- data["delete"] = false
- s_type := data["s_type"]
- code := ""
- if s_type == "0" { //抽取后置正则E_FE
- code = getSyncIndex(E_BE)
- } else { //抽取后置脚本
- code = getSyncIndex(E_BL)
- }
- data["s_code"] = code
- b = Mgo.Save("site_rule_logicback", data) != ""
- } else {
- data["l_lasttime"] = time.Now().Unix()
- b = Mgo.Update("site_rule_logicback", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": data,
- }, true, false)
- }
- c.JSON(200, gin.H{"rep": b})
- })
- Admin.POST("/site_management/logicback/del", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.UpdateById("site_rule_logicback", _id, `{"$set":{"delete":true}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- //站点后置规则
- Admin.GET("/site_management/ruleback", func(c *gin.Context) {
- version := c.Query("version")
- vid := c.Query("vid")
- c.HTML(200, "site_rule_backlist.html", gin.H{"version": version, "vid": vid})
- })
- Admin.POST("/site_management/ruleback/data", func(c *gin.Context) {
- version, _ := c.GetPostForm("version")
- data, _ := Mgo.Find("site_rule_back", `{"s_version":"`+version+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- c.JSON(200, gin.H{"data": data, "version": version})
- })
- Admin.POST("/site_management/ruleback/save", func(c *gin.Context) {
- data := GetPostForm(c)
- _id, _ := c.GetPostForm("_id")
- b := false
- if _id == "" {
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- data["delete"] = false
- s_type := data["s_type"]
- code := ""
- if s_type == "0" { //前置正则
- code = getSyncIndex(B_E)
- } else { //前置lua脚本
- code = getSyncIndex(B_L)
- }
- data["s_code"] = code
- b = Mgo.Save("site_rule_back", data) != ""
- } else {
- data["l_lasttime"] = time.Now().Unix()
- b = Mgo.Update("site_rule_back", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": data,
- }, true, false)
- }
- c.JSON(200, gin.H{"rep": b})
- })
- Admin.POST("/site_management/ruleback/searchbyid", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- data, _ := Mgo.FindById("/site_rule_back", _id, nil)
- c.JSON(200, gin.H{"rep": data})
- })
- Admin.POST("/site_management/ruleback/del", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- //b := Mgo.Del("rule_back", `{"_id":"`+_id+`"}`)
- b := Mgo.UpdateById("site_rule_back", _id, `{"$set":{"delete":true}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- //tag
- Admin.GET("/site_management/tag", func(c *gin.Context) {
- version := c.Query("version")
- vid := c.Query("vid")
- c.HTML(200, "site_taglist.html", gin.H{"version": version, "vid": vid})
- })
- Admin.POST("/site_management/tag/data", TagDataSite)
- Admin.POST("/site_management/tag/save", TagSaveSite)
- Admin.POST("/site_management/tag/del", TagDelSite)
- //onetag
- Admin.GET("/site_management/onetag", func(c *gin.Context) {
- version := c.Query("version")
- tagname := c.Query("tagname")
- tp := c.Query("tp")
- parentid := c.Query("parentid")
- c.HTML(200, "site_onetag.html", gin.H{"version": version, "tagname": tagname, "tp": tp, "parentid": parentid})
- })
- Admin.POST("/site_management/onetag/data", OneTagDataSite)
- Admin.POST("/site_management/onetag/create", OneTagCreateSite)
- Admin.POST("/site_management/onetag/del", OneTagDelSite)
- Admin.POST("/site_management/onetag/editsave", OneTagEditSaveSite)
- Admin.POST("/site_management/onetag/searchone", OneTagSearchSite)
- //清理函数
- Admin.GET("/site_management/clear", func(c *gin.Context) {
- version := c.Query("version")
- field, _ := Mgo.Find("fields", nil, `{"_id":-1}`, nil, false, -1, -1)
- c.HTML(200, "site_clear.html", gin.H{"version": version, "field": field})
- })
- Admin.POST("/site_management/clear/data", func(c *gin.Context) {
- version, _ := c.GetPostForm("version")
- data, _ := Mgo.Find("site_cleanup", `{"s_version":"`+version+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- for _, d := range *data {
- timeStr := time.Unix(d["l_intime"].(int64), 0).Format(Date_Short_Layout)
- d["l_intime"] = timeStr
- }
- c.JSON(200, gin.H{"data": data})
- }) //加载数据
- Admin.POST("/site_management/clear/save", func(c *gin.Context) {
- clearTmpArr := make([]string, 0)
- clear := make([]string, 0)
- clearInfo := make([]string, 0)
- save := make(map[string]interface{})
- clearJsonStr, _ := c.GetPostForm("clearJsonStr")
- err := json.Unmarshal([]byte(clearJsonStr), &clearTmpArr)
- if err == nil && len(clearTmpArr) > 0 {
- for _, v := range clearTmpArr {
- clearTmpSplitArr := strings.Split(v, "+")
- clearInfo = append(clearInfo, clearTmpSplitArr[0])
- clear = append(clear, clearTmpSplitArr[1])
- }
- } else {
- c.JSON(200, gin.H{"rep": false})
- return
- }
- _id, _ := c.GetPostForm("_id")
- if _id == "" { //保存
- version, _ := c.GetPostForm("version")
- username, _ := c.GetPostForm("username")
- fieldname, _ := c.GetPostForm("fieldname")
- fieldArr := strings.Split(fieldname, "+")
- data, _ := Mgo.FindOne("site_cleanup", `{"s_version":"`+version+`","s_field":"`+fieldArr[1]+`","delete":false}`)
- if len(*data) > 0 { //创建判重
- c.JSON(200, gin.H{"rep": false})
- return
- }
- save = map[string]interface{}{
- "s_version": version,
- "s_creater": username,
- "l_intime": time.Now().Unix(),
- "s_field": fieldArr[1],
- "s_name": fieldArr[0],
- "clear": clear,
- "clearInfo": clearInfo,
- "delete": false,
- }
- b := Mgo.Save("site_cleanup", save)
- if b != "" {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- } else { //更新
- save = map[string]interface{}{
- "clear": clear,
- "clearInfo": clearInfo,
- "l_intime": time.Now().Unix(),
- }
- f := Mgo.Update("site_cleanup", `{"_id":"`+_id+`"}`, map[string]interface{}{"$set": save}, true, false)
- if f {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
- }) //保存数据
- Admin.POST("/site_management/clear/del", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.Update("site_cleanup", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": map[string]interface{}{"delete": true},
- }, false, false)
- if b {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }) //删除数据
- //校验
- //正则规则验证
- Admin.POST("/site_management/check/prerule", func(c *gin.Context) {
- rule, _ := c.GetPostForm("s_rule")
- con, _ := c.GetPostForm("s_testcon")
- str := checkPreReg(con, rule)
- c.JSON(200, gin.H{"rep": str})
- })
- Admin.POST("/site_management/check/extrule", func(c *gin.Context) {
- rule, _ := c.GetPostForm("s_rule")
- con, _ := c.GetPostForm("s_testcon")
- field, _ := c.GetPostForm("s_field")
- tmp := checkCoreReg(field, con, rule)
- c.JSON(200, gin.H{"rep": tmp})
- })
- Admin.POST("/site_management/check/backrule", func(c *gin.Context) {
- rule, _ := c.GetPostForm("s_rule")
- con, _ := c.GetPostForm("s_testcon")
- str := checkBackReg(con, rule)
- c.JSON(200, gin.H{"rep": str})
- })
- //lua脚本验证
- //通用前置验证
- Admin.GET("/site_management/check/lua/pre", func(c *gin.Context) {
- version := c.Query("version")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("site_rule_pre", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = util.BsonIdToSId((*rule)["_id"])
- c.HTML(200, "site_check_luapre.html", gin.H{"version": version, "code": s_code, "rule": &rule, "infos": getCheckInfos()})
- })
- Admin.POST("/site_management/check/lua/prerule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- extinfo := checkPreScript(code, name, infoid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //通用后置验证
- Admin.GET("/site_management/check/lua/back", func(c *gin.Context) {
- version := c.Query("version")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("site_rule_back", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = util.BsonIdToSId((*rule)["_id"])
- c.HTML(200, "site_check_luaback.html", gin.H{"version": version, "code": s_code, "rule": &rule, "infos": getCheckInfos()})
- })
- Admin.POST("/site_management/check/lua/backrule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- version, _ := c.GetPostForm("s_version")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- extinfo := checkBackScript("site_rule_back", code, name, version, infoid, luascript, true)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //抽取前置验证
- Admin.GET("/site_management/check/lua/corepre", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("site_rule_logicpre", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = util.BsonIdToSId((*rule)["_id"])
- c.HTML(200,
- "site_check_luacorepre.html",
- gin.H{"code": s_code, "rule": &rule, "infos": getCheckInfos(),
- "pid": pid, "vid": vid, "sid": sid},
- )
- })
- Admin.POST("/site_management/check/lua/coreprerule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- extinfo := checkPreScript(code, name, infoid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //抽取验证
- Admin.GET("/site_management/check/lua/core", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("site_rule_logicore", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = util.BsonIdToSId((*rule)["_id"])
- c.HTML(200,
- "site_check_luacore.html",
- gin.H{"code": s_code, "rule": &rule, "infos": getCheckInfos(),
- "pid": pid, "vid": vid, "sid": sid},
- )
- })
- Admin.POST("/site_management/check/lua/corerule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- extinfo := checkCoreScript(code, name, infoid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //抽取后置验证
- Admin.GET("/site_management/check/lua/coreback", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("site_rule_logicback", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = util.BsonIdToSId((*rule)["_id"])
- c.HTML(200,
- "site_check_luacoreback.html",
- gin.H{"code": s_code, "rule": &rule, "infos": getCheckInfos(),
- "pid": pid, "vid": vid, "sid": sid},
- )
- })
- Admin.POST("/site_management/check/lua/corebackrule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- vid, _ := c.GetPostForm("vid")
- version, _ := Mgo.FindById("version", vid, `{"version":1}`)
- extinfo := checkBackScript("rule_back", code, name, util.ObjToString((*version)["version"]), infoid, luascript, true)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //清理逻辑脚本验证
- Admin.GET("/site_management/check/lua/clearlogic", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("site_clearulelogic", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = util.BsonIdToSId((*rule)["_id"])
- c.HTML(200,
- "site_check_luaclearlogic.html",
- gin.H{"code": s_code, "rule": &rule, "infos": getCheckInfos(),
- "pid": pid, "vid": vid},
- )
- })
- Admin.POST("/site_management/check/lua/checkclearlua", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- rid, _ := c.GetPostForm("rid")
- resultcoll, _ := c.GetPostForm("resultcoll")
- if rid == "" || resultcoll == "" {
- c.JSON(200, gin.H{"rep": nil})
- } else {
- extinfo := checkClearScript(code, name, resultcoll, rid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- }
- })
- }
- //标签库列表
- func TagDataSite(c *gin.Context) {
- version, _ := c.GetPostForm("version")
- data, _ := Mgo.Find("site_tag", `{"s_version":"`+version+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- for _, d := range *data {
- timeStr := time.Unix(d["l_intime"].(int64), 0).Format(Date_Short_Layout)
- d["l_intime"] = timeStr
- }
- c.JSON(200, gin.H{"data": data})
- }
- //添加标签
- func TagSaveSite(c *gin.Context) {
- tagname, _ := c.GetPostForm("tagname")
- version, _ := c.GetPostForm("version")
- username, _ := c.GetPostForm("username")
- tp, _ := c.GetPostForm("tp")
- data, _ := Mgo.FindOne("site_tag", `{"s_tagname":"`+tagname+`","s_version":"`+version+`","delete":false}`)
- if len(*data) > 0 { //判重,防止添加name相同的标签
- c.JSON(200, gin.H{"rep": false})
- return
- }
- save := map[string]interface{}{
- "s_tagname": tagname,
- "s_version": version,
- "s_creater": username,
- "s_type": tp,
- "l_intime": time.Now().Unix(),
- "delete": false,
- }
- b := Mgo.Save("site_tag", save)
- if b != "" {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
- //删除标签
- func TagDelSite(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.Update("site_tag", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": map[string]interface{}{"delete": true},
- }, false, false)
- data, _ := Mgo.Find("site_tagdetailinfo", `{"s_parentid":"`+_id+`"}`, `{"_id":-1}`, nil, false, -1, -1)
- if len(*data) > 0 { //删除父标签下所有详细标签
- for _, d := range *data {
- cid := d["_id"].(bson.ObjectId).Hex()
- //Mgo.Del("tagdetailinfo", `{"_id":"`+cid+`"}`)
- Mgo.Update("site_tagdetailinfo", `{"_id":"`+cid+`"}`, map[string]interface{}{
- "$set": map[string]interface{}{"delete": true},
- }, false, false)
- }
- }
- if b {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
- //查找某个tag的信息
- func OneTagDataSite(c *gin.Context) {
- version, _ := c.GetPostForm("version")
- parentid, _ := c.GetPostForm("parentid")
- data, _ := Mgo.Find("site_tagdetailinfo", `{"s_version":"`+version+`","s_parentid":"`+parentid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
- for _, d := range *data {
- timeStr := time.Unix(d["l_intime"].(int64), 0).Format(Date_Short_Layout)
- d["l_intime"] = timeStr
- }
- c.JSON(200, gin.H{"data": data})
- }
- //添加详细标签
- func OneTagCreateSite(c *gin.Context) {
- name, _ := c.GetPostForm("name")
- version, _ := c.GetPostForm("version")
- parentid, _ := c.GetPostForm("parentid")
- data, _ := Mgo.FindOne("site_tagdetailinfo", `{"s_name":"`+name+`","s_parentid":"`+parentid+`","s_version":"`+version+`","delete":false}`)
- if len(*data) > 0 { //判重
- c.JSON(200, gin.H{"rep": false})
- return
- }
- tp, _ := c.GetPostForm("tp")
- field, _ := c.GetPostForm("field")
- content, _ := c.GetPostForm("content")
- username, _ := c.GetPostForm("username")
- pratagname, _ := c.GetPostForm("pratagname")
- var jsondata interface{}
- err := json.Unmarshal([]byte(content), &jsondata)
- if err != nil { //不是json格式
- c.JSON(200, gin.H{"rep": false})
- return
- }
- save := make(map[string]interface{})
- save = map[string]interface{}{
- "s_pratagname": pratagname,
- "s_name": name,
- "s_field": field,
- "s_version": version,
- "s_creater": username,
- "s_type": tp,
- "l_intime": time.Now().Unix(),
- "content": jsondata,
- "s_parentid": parentid,
- "delete": false,
- }
- b := Mgo.Save("site_tagdetailinfo", save)
- if b != "" {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
- //删除某个详细标签
- func OneTagDelSite(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.Update("site_tagdetailinfo", `{"_id":"`+_id+`"}`, map[string]interface{}{
- "$set": map[string]interface{}{"delete": true},
- }, false, false)
- if b {
- c.JSON(200, gin.H{"rep": true})
- } else {
- c.JSON(200, gin.H{"rep": false})
- }
- }
- //修改某个详细标签
- func OneTagEditSaveSite(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- content, _ := c.GetPostForm("content")
- var jsondata interface{}
- err := json.Unmarshal([]byte(content), &jsondata)
- if err != nil { //不是json格式
- c.JSON(200, gin.H{"rep": false})
- return
- }
- set := make(map[string]interface{})
- set["content"] = jsondata
- if jsondata != nil {
- b := Mgo.Update("site_tagdetailinfo", `{"_id":"`+_id+`"}`, map[string]interface{}{"$set": 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})
- }
- }
- //根据id查找某个标签
- func OneTagSearchSite(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- data, _ := Mgo.FindOne("site_tagdetailinfo", `{"_id":"`+_id+`"}`)
- c.JSON(200, gin.H{"data": data})
- }
- var sysn sync.RWMutex
- func getSyncIndex(code string) string {
- tmp := ""
- sysn.Lock()
- Mgo.Update("site_rule_code", `{"code":"`+code+`"}`, bson.M{"$inc": bson.M{"index": 1}}, true, false)
- data, _ := Mgo.FindOne("site_rule_code", `{"code":"`+code+`"}`)
- sysn.Unlock()
- if len(*data) > 0 {
- tmp = code + "_" + fmt.Sprint((*data)["index"])
- }
- return tmp
- }
|