HFish/view/fish/view.go

203 lines
5.4 KiB
Go
Raw Normal View History

2019-08-07 13:16:23 +08:00
package fish
import (
"github.com/gin-gonic/gin"
"net/http"
"HFish/core/dbUtil"
"HFish/error"
"HFish/utils/page"
"strconv"
"strings"
2019-08-07 13:16:23 +08:00
)
2019-08-11 20:14:28 +08:00
// 蜜罐 页面
2019-08-07 13:16:23 +08:00
func Html(c *gin.Context) {
c.HTML(http.StatusOK, "fish.html", gin.H{})
}
2019-08-11 20:14:28 +08:00
// 获取蜜罐列表
2019-08-07 13:16:23 +08:00
func GetFishList(c *gin.Context) {
p, _ := c.GetQuery("page")
pageSize, _ := c.GetQuery("pageSize")
typex, _ := c.GetQuery("type")
colony, _ := c.GetQuery("colony")
soText, _ := c.GetQuery("so_text")
pInt, _ := strconv.ParseInt(p, 10, 64)
pageSizeInt, _ := strconv.ParseInt(pageSize, 10, 64)
pageStart := page.Start(pInt, pageSizeInt)
sql := `select id,type,project_name,agent,ip,country,region,city,create_time,info from hfish_info where 1=1`
sqlx := `select count(1) as sum from hfish_info where 1=1`
sqlStatus := 0
if typex != "all" {
sql = sql + ` and type=?`
sqlx = sqlx + ` and type=?`
sqlStatus = 1
}
if colony != "all" {
sql = sql + ` and agent=?`
sqlx = sqlx + ` and agent=?`
if sqlStatus == 1 {
sqlStatus = 3
} else {
sqlStatus = 2
}
}
if soText != "" {
sql = sql + ` and (project_name like ? or ip like ?)`
sqlx = sqlx + ` and type=?`
if sqlStatus == 1 {
sqlStatus = 4
} else if sqlStatus == 2 {
sqlStatus = 5
} else if sqlStatus == 3 {
sqlStatus = 6
} else {
sqlStatus = 7
}
}
sql = sql + ` ORDER BY id desc LIMIT ?,?;`
if sqlStatus == 0 {
result := dbUtil.Query(sql, pageStart, pageSizeInt)
resultx := dbUtil.Query(sqlx)
totalCount := resultx[0]["sum"].(int64)
pageCount := page.TotalPage(totalCount, pageSizeInt)
c.JSON(http.StatusOK, gin.H{
"data": result,
"pageCount": pageCount,
"totalCount": totalCount,
"page": p,
})
} else if sqlStatus == 1 {
result := dbUtil.Query(sql, typex, pageStart, pageSizeInt)
resultx := dbUtil.Query(sqlx, typex)
totalCount := resultx[0]["sum"].(int64)
pageCount := page.TotalPage(totalCount, pageSizeInt)
c.JSON(http.StatusOK, gin.H{
"data": result,
"pageCount": pageCount,
"totalCount": totalCount,
"page": p,
})
} else if sqlStatus == 2 {
result := dbUtil.Query(sql, colony, pageStart, pageSizeInt)
resultx := dbUtil.Query(sqlx, colony)
totalCount := resultx[0]["sum"].(int64)
pageCount := page.TotalPage(totalCount, pageSizeInt)
c.JSON(http.StatusOK, gin.H{
"data": result,
"pageCount": pageCount,
"totalCount": totalCount,
"page": p,
})
} else if sqlStatus == 3 {
result := dbUtil.Query(sql, typex, colony, pageStart, pageSizeInt)
resultx := dbUtil.Query(sqlx, typex, colony)
totalCount := resultx[0]["sum"].(int64)
pageCount := page.TotalPage(totalCount, pageSizeInt)
c.JSON(http.StatusOK, gin.H{
"data": result,
"pageCount": pageCount,
"totalCount": totalCount,
"page": p,
})
} else if sqlStatus == 4 {
result := dbUtil.Query(sql, typex, "%"+soText+"%", "%"+soText+"%", pageStart, pageSizeInt)
resultx := dbUtil.Query(sqlx, typex, "%"+soText+"%", "%"+soText+"%")
totalCount := resultx[0]["sum"].(int64)
pageCount := page.TotalPage(totalCount, pageSizeInt)
c.JSON(http.StatusOK, gin.H{
"data": result,
"pageCount": pageCount,
"totalCount": totalCount,
"page": p,
})
} else if sqlStatus == 5 {
result := dbUtil.Query(sql, colony, "%"+soText+"%", "%"+soText+"%", pageStart, pageSizeInt)
resultx := dbUtil.Query(sqlx, colony, "%"+soText+"%", "%"+soText+"%")
totalCount := resultx[0]["sum"].(int64)
pageCount := page.TotalPage(totalCount, pageSizeInt)
c.JSON(http.StatusOK, gin.H{
"data": result,
"pageCount": pageCount,
"totalCount": totalCount,
"page": p,
})
} else if sqlStatus == 6 {
result := dbUtil.Query(sql, typex, colony, "%"+soText+"%", "%"+soText+"%", pageStart, pageSizeInt)
resultx := dbUtil.Query(sqlx, typex, colony, "%"+soText+"%", "%"+soText+"%")
totalCount := resultx[0]["sum"].(int64)
pageCount := page.TotalPage(totalCount, pageSizeInt)
c.JSON(http.StatusOK, gin.H{
"data": result,
"pageCount": pageCount,
"totalCount": totalCount,
"page": p,
})
} else if sqlStatus == 7 {
result := dbUtil.Query(sql, "%"+soText+"%", "%"+soText+"%", pageStart, pageSizeInt)
resultx := dbUtil.Query(sqlx, "%"+soText+"%", "%"+soText+"%")
totalCount := resultx[0]["sum"].(int64)
pageCount := page.TotalPage(totalCount, pageSizeInt)
c.JSON(http.StatusOK, gin.H{
"data": result,
"pageCount": pageCount,
"totalCount": totalCount,
"page": p,
})
}
2019-08-07 13:16:23 +08:00
}
2019-08-11 20:14:28 +08:00
// 删除蜜罐
2019-08-07 13:16:23 +08:00
func PostFishDel(c *gin.Context) {
id := c.PostForm("id")
idx := strings.Split(id, ",")
// 暂时此种方式,待优化
for _, x := range idx {
sqlDel := `delete from hfish_info where id in (?);`
dbUtil.Delete(sqlDel, x)
}
2019-08-07 13:16:23 +08:00
c.JSON(http.StatusOK, error.ErrSuccessNull())
}
2019-08-11 20:14:28 +08:00
// 获取蜜罐信息
2019-08-07 13:16:23 +08:00
func GetFishInfo(c *gin.Context) {
id, _ := c.GetQuery("id")
sql := `select info from hfish_info where id=?;`
result := dbUtil.Query(sql, id)
c.JSON(http.StatusOK, error.ErrSuccess(result))
}
// 获取蜜罐分类信息,集群信息
func GetFishTypeInfo(c *gin.Context) {
sqlInfoType := `select type from hfish_info GROUP BY type;`
resultInfoType := dbUtil.Query(sqlInfoType)
sqlColonyName := `select agent_name from hfish_colony GROUP BY agent_name;`
resultColonyName := dbUtil.Query(sqlColonyName)
c.JSON(http.StatusOK, gin.H{
"resultInfoType": resultInfoType,
"resultColonyName": resultColonyName,
})
}