🎨客户端链接信息

This commit is contained in:
coward
2024-08-09 11:06:58 +08:00
parent 8f28f790e0
commit 864cf2f3f8
4 changed files with 75 additions and 2 deletions

View File

@@ -3,6 +3,8 @@ package api
import (
"fmt"
"github.com/gin-gonic/gin"
"time"
"wireguard-ui/component"
"wireguard-ui/http/param"
"wireguard-ui/http/response"
"wireguard-ui/http/vo"
@@ -52,3 +54,59 @@ func (DashboardApi) DailyPoetry(c *gin.Context) {
}
response.R(c).OkWithData(data)
}
// ConnectionList
// @description: 客户端链接信息列表
// @receiver DashboardApi
// @param c
func (DashboardApi) ConnectionList(c *gin.Context) {
var connections []vo.DataTraffic
peers, err := component.Wireguard().GetClients()
if err != nil {
if len(connections) == 0 {
for i := 0; i < 10; i++ {
var online bool
if i%2 == 0 {
online = true
}
connections = append(connections, vo.DataTraffic{
Name: fmt.Sprintf("客户端: %d", i+1),
Email: fmt.Sprintf("%d@qq.com", i+1),
IpAllocation: fmt.Sprintf("10.100.25.%d/32", i+1),
Online: online,
ReceiveBytes: utils.FlowCalculation().Parse(12212),
TransmitBytes: utils.FlowCalculation().Parse(322212),
ConnectEndpoint: "1.14.30.133",
LastHandAt: time.Now().Format("2006-01-02 15:04:05"),
})
}
response.R(c).OkWithData(connections)
return
}
return
}
for _, peer := range peers {
// 获取客户端链接信息
clientInfo, err := service.Client().GetByPublicKey(peer.PublicKey.String())
if err != nil {
continue
}
var ipAllocation string
for _, iaip := range peer.AllowedIPs {
ipAllocation += iaip.String() + ","
}
connections = append(connections, vo.DataTraffic{
Name: clientInfo.Name,
Email: clientInfo.Email,
IpAllocation: clientInfo.IpAllocation,
Online: time.Since(peer.LastHandshakeTime).Minutes() < 3,
ReceiveBytes: utils.FlowCalculation().Parse(peer.TransmitBytes),
TransmitBytes: utils.FlowCalculation().Parse(peer.ReceiveBytes),
ConnectEndpoint: ipAllocation,
LastHandAt: peer.LastHandshakeTime.Format("2006-01-02 15:04:05"),
})
}
response.R(c).OkWithData(connections)
}