mirror of
https://github.com/Ed1s0nZ/PrivHunterAI.git
synced 2025-05-05 18:27:25 +00:00
107 lines
2.1 KiB
Go
107 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
var Resp []Result // 数据存储在全局切片中
|
|
|
|
func Index() {
|
|
r := gin.Default()
|
|
|
|
// 提供前端静态文件服务
|
|
r.LoadHTMLFiles("index.html") // 加载前端页面
|
|
r.Static("/static", "./static") // 为前端静态资源提供服务
|
|
|
|
r.GET("/", func(c *gin.Context) {
|
|
c.HTML(http.StatusOK, "index.html", nil)
|
|
})
|
|
|
|
// 分页数据接口
|
|
r.GET("/data", func(c *gin.Context) {
|
|
// 获取分页参数
|
|
page, err1 := strconv.Atoi(c.Query("page"))
|
|
pageSize, err2 := strconv.Atoi(c.Query("pageSize"))
|
|
resultFilter := c.Query("result")
|
|
|
|
if err1 != nil || page < 1 {
|
|
page = 1
|
|
}
|
|
if err2 != nil || pageSize < 1 {
|
|
pageSize = 10
|
|
}
|
|
|
|
// 应用筛选条件
|
|
var filteredData []Result
|
|
for _, item := range Resp {
|
|
if resultFilter == "" || item.Result == resultFilter {
|
|
filteredData = append(filteredData, item)
|
|
}
|
|
}
|
|
|
|
// 计算分页数据
|
|
total := len(filteredData)
|
|
offset := (page - 1) * pageSize
|
|
var data []Result
|
|
if offset < total {
|
|
if offset+pageSize > total {
|
|
data = filteredData[offset:]
|
|
} else {
|
|
data = filteredData[offset : offset+pageSize]
|
|
}
|
|
}
|
|
|
|
// 返回响应
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"data": data,
|
|
"total": total,
|
|
"currentPage": page,
|
|
"pageSize": pageSize,
|
|
"totalPages": (total + pageSize - 1) / pageSize,
|
|
})
|
|
})
|
|
|
|
// 统计数据接口
|
|
r.GET("/stats", func(c *gin.Context) {
|
|
total := len(Resp)
|
|
vulnerable := 0
|
|
unknown := 0
|
|
safe := 0
|
|
|
|
for _, item := range Resp {
|
|
switch item.Result {
|
|
case "true":
|
|
vulnerable++
|
|
case "unknown":
|
|
unknown++
|
|
case "false":
|
|
safe++
|
|
}
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"total": total,
|
|
"vulnerable": vulnerable,
|
|
"unknown": unknown,
|
|
"safe": safe,
|
|
})
|
|
})
|
|
|
|
// 添加数据接口
|
|
r.POST("/update", func(c *gin.Context) {
|
|
var newData Result
|
|
if err := c.ShouldBindJSON(&newData); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
Resp = append(Resp, newData)
|
|
c.JSON(http.StatusOK, gin.H{"message": "Data updated successfully"})
|
|
})
|
|
|
|
// 启动服务
|
|
r.Run(":8222")
|
|
}
|