🆕新增接口强制下线指定客户端
This commit is contained in:
@@ -253,12 +253,6 @@ func (clients) GenerateQrCode(c *gin.Context) {
|
||||
// @receiver clients
|
||||
// @param c
|
||||
func (clients) Status(c *gin.Context) {
|
||||
var p param.ClientStatusList
|
||||
if err := c.ShouldBind(&p); err != nil {
|
||||
utils.GinResponse(c).FailedWithErr("参数错误", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 使用sdk拉取一下客户端信息
|
||||
devices, err := client.WireguardClient.Devices()
|
||||
if err != nil {
|
||||
@@ -282,6 +276,7 @@ func (clients) Status(c *gin.Context) {
|
||||
ipAllocation = strings.TrimRight(ipAllocation, ",")
|
||||
isOnline := p.LastHandshakeTime.Minute() < 1
|
||||
data = append(data, vo.ClientStatus{
|
||||
ID: clientInfo.Id,
|
||||
Name: clientInfo.Name,
|
||||
Email: clientInfo.Email,
|
||||
IpAllocation: ipAllocation,
|
||||
@@ -296,3 +291,51 @@ func (clients) Status(c *gin.Context) {
|
||||
|
||||
utils.GinResponse(c).OKWithData(data)
|
||||
}
|
||||
|
||||
// Offline
|
||||
// @description: 强制下线指定客户端
|
||||
// @receiver clients
|
||||
// @param c
|
||||
func (clients) Offline(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
if id == "" || id == "undefined" {
|
||||
utils.GinResponse(c).FailedWithMsg("参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
// 查询一下客户端信息
|
||||
clientInfo, err := repository.Client().GetById(id)
|
||||
if err != nil {
|
||||
utils.GinResponse(c).FailedWithMsg("获取信息失败")
|
||||
return
|
||||
}
|
||||
|
||||
keys := template_data.Keys{}
|
||||
_ = json.Unmarshal([]byte(clientInfo.Keys), &keys)
|
||||
|
||||
connectInfo, err := utils.Wireguard().GetSpecClient(keys.PublicKey)
|
||||
if err != nil {
|
||||
utils.GinResponse(c).FailedWithMsg("获取客户端信息失败")
|
||||
return
|
||||
}
|
||||
|
||||
if connectInfo == nil {
|
||||
utils.GinResponse(c).FailedWithMsg("未获取到该客户端链接信息")
|
||||
return
|
||||
}
|
||||
|
||||
// 获取到了,执行踢下线操作。此处踢下线就是禁用该客户端
|
||||
if err = repository.Client().Disabled(clientInfo.Id); err != nil {
|
||||
utils.GinResponse(c).FailedWithErr("客户端下线失败: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 再同步一下配置文件
|
||||
go func() {
|
||||
if err = queues.PutAsyncWireguardConfigFile(clientInfo.ServerId); err != nil {
|
||||
log.Errorf("[下线客户端]同步配置文件失败: %v", err.Error())
|
||||
}
|
||||
}()
|
||||
|
||||
utils.GinResponse(c).OK()
|
||||
}
|
||||
|
Reference in New Issue
Block a user