2025-05-07 15:03:19 +08:00
|
|
|
package smdl
|
|
|
|
|
|
|
|
import (
|
|
|
|
"admin/apps/game/domain/entity"
|
|
|
|
"admin/apps/game/model"
|
|
|
|
"admin/apps/game/model/dto"
|
|
|
|
"admin/internal/errcode"
|
|
|
|
"admin/lib/httpclient"
|
|
|
|
"net/url"
|
|
|
|
)
|
|
|
|
|
|
|
|
type WhitelistHook struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (hook *WhitelistHook) Create(projectInfo *entity.Project, resource string, dtoObj dto.CommonDtoValues) error {
|
|
|
|
alisrvAddr := projectInfo.GetApiAddr()
|
|
|
|
if alisrvAddr == "" {
|
|
|
|
return errcode.New(errcode.ServerError, "项目%v没有配置api服务器地址", projectInfo.Po.Name)
|
|
|
|
}
|
|
|
|
|
2025-05-09 18:28:15 +08:00
|
|
|
et := (&entity.CommonResource{}).FromPo(&model.WhiteList{}).FromDto(dtoObj)
|
2025-05-07 15:03:19 +08:00
|
|
|
whiteInfo := et.ToPo().(*model.WhiteList)
|
|
|
|
|
|
|
|
params := &url.Values{}
|
|
|
|
params.Add("cmd_data", "OpWhitelist")
|
|
|
|
params.Add("type", whiteInfo.WType)
|
|
|
|
params.Add("value", whiteInfo.Value)
|
|
|
|
params.Add("op", "add")
|
|
|
|
|
2025-05-14 18:09:20 +08:00
|
|
|
if len(whiteInfo.ServerConfID) == 0 {
|
|
|
|
// 所有区服
|
|
|
|
serverList, err := getAllRunningServers(projectInfo)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
for _, v := range serverList {
|
|
|
|
params.Set("server", v.ServerId)
|
|
|
|
rsp := make(map[string]any)
|
|
|
|
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
|
|
|
if err != nil {
|
|
|
|
return errcode.New(errcode.ServerError, "发送新增白名单请求:%+v错误:%v", whiteInfo, err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// 指定区服
|
|
|
|
for _, v := range whiteInfo.ServerConfID {
|
|
|
|
params.Set("server", v)
|
|
|
|
rsp := make(map[string]any)
|
|
|
|
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
|
|
|
if err != nil {
|
|
|
|
return errcode.New(errcode.ServerError, "发送新增白名单请求:%+v错误:%v", whiteInfo, err)
|
|
|
|
}
|
|
|
|
}
|
2025-05-07 15:03:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (hook *WhitelistHook) Delete(projectInfo *entity.Project, resource string, dtoObj dto.CommonDtoValues) error {
|
|
|
|
alisrvAddr := projectInfo.GetApiAddr()
|
|
|
|
if alisrvAddr == "" {
|
|
|
|
return errcode.New(errcode.ServerError, "项目%v没有配置api服务器地址", projectInfo.Po.Name)
|
|
|
|
}
|
|
|
|
|
2025-05-09 18:28:15 +08:00
|
|
|
et := (&entity.CommonResource{}).FromPo(&model.WhiteList{}).FromDto(dtoObj)
|
2025-05-07 15:03:19 +08:00
|
|
|
whiteInfo := et.ToPo().(*model.WhiteList)
|
|
|
|
|
|
|
|
params := &url.Values{}
|
|
|
|
params.Add("cmd_data", "OpWhitelist")
|
|
|
|
params.Add("type", whiteInfo.WType)
|
|
|
|
params.Add("value", whiteInfo.Value)
|
|
|
|
params.Add("op", "remove")
|
|
|
|
|
2025-05-14 18:09:20 +08:00
|
|
|
if len(whiteInfo.ServerConfID) == 0 {
|
|
|
|
// 所有区服
|
|
|
|
serverList, err := getAllRunningServers(projectInfo)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
for _, v := range serverList {
|
|
|
|
params.Set("server", v.ServerId)
|
|
|
|
rsp := make(map[string]any)
|
|
|
|
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
|
|
|
if err != nil {
|
|
|
|
return errcode.New(errcode.ServerError, "发送新增白名单请求:%+v错误:%v", whiteInfo, err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// 指定区服
|
|
|
|
for _, v := range whiteInfo.ServerConfID {
|
|
|
|
params.Set("server", v)
|
|
|
|
rsp := make(map[string]any)
|
|
|
|
err := httpclient.Request(alisrvAddr+"/gm", "get", params, &rsp)
|
|
|
|
if err != nil {
|
|
|
|
return errcode.New(errcode.ServerError, "发送新增白名单请求:%+v错误:%v", whiteInfo, err)
|
|
|
|
}
|
|
|
|
}
|
2025-05-07 15:03:19 +08:00
|
|
|
}
|
2025-05-14 18:09:20 +08:00
|
|
|
|
2025-05-07 15:03:19 +08:00
|
|
|
return nil
|
|
|
|
}
|