mirror of
https://gitee.com/lauix/HFish
synced 2025-05-12 04:48:01 +08:00
89 lines
1.4 KiB
Go
89 lines
1.4 KiB
Go
package data
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gorilla/websocket"
|
|
"net/http"
|
|
"fmt"
|
|
)
|
|
|
|
func Html(c *gin.Context) {
|
|
c.HTML(http.StatusOK, "data.html", gin.H{})
|
|
}
|
|
|
|
// 往下是 Web Socket 代码
|
|
|
|
// 存储全部客户端连接
|
|
var connClient = make(map[*websocket.Conn]bool)
|
|
|
|
// 去除跨域限制
|
|
var upGrader = websocket.Upgrader{
|
|
CheckOrigin: func(r *http.Request) bool {
|
|
return true
|
|
},
|
|
}
|
|
|
|
// 客户端连接
|
|
func Ws(c *gin.Context) {
|
|
var err error
|
|
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
|
|
|
|
if err != nil {
|
|
// 创建 WebSocket 失败
|
|
return
|
|
}
|
|
|
|
connClient[ws] = true
|
|
|
|
defer ws.Close()
|
|
|
|
for {
|
|
_, _, err := ws.ReadMessage()
|
|
if err != nil {
|
|
// 客户端断开
|
|
connClient[ws] = false
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
// 发送消息
|
|
func Send(data map[string]interface{}) {
|
|
for k, v := range connClient {
|
|
if v {
|
|
err := k.WriteJSON(data)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// 生成数据 JSON
|
|
func MakeDataJson(typex string, data map[string]interface{}) map[string]interface{} {
|
|
/**
|
|
//左侧三个:攻击类型汇总 攻击地区(国家)汇总 IP汇总
|
|
//中间两个:攻击地图 最新攻击数据
|
|
//右侧三个:最新账号密码 攻击时间段统计 集群统计
|
|
|
|
left_type
|
|
left_country
|
|
left_ip
|
|
|
|
center_map
|
|
center_data
|
|
|
|
right_account
|
|
right_time
|
|
right_colony
|
|
**/
|
|
|
|
result := map[string]interface{}{
|
|
"type": typex,
|
|
"data": data,
|
|
}
|
|
|
|
return result
|
|
}
|