HFish/view/data/view.go

89 lines
1.4 KiB
Go
Raw Normal View History

2019-09-03 17:19:06 +08:00
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
}