package api import ( "gitee.ltd/lxh/logger/log" "github.com/gin-gonic/gin" "golang.zx2c4.com/wireguard/wgctrl/wgtypes" "wireguard-dashboard/http/param" "wireguard-dashboard/model/entity" "wireguard-dashboard/repository" "wireguard-dashboard/utils" ) type server struct{} func Server() server { return server{} } // SaveServer // @description: 新增/更新服务端信息 // @receiver server // @param c func (server) SaveServer(c *gin.Context) { var p param.SaveServer if err := c.ShouldBind(&p); err != nil { utils.GinResponse(c).FailedWithErr("参数错误", err) return } var err error if p.Id != "" { if err = repository.Server().Update(p); err != nil { log.Errorf("更改服务端信息失败: %v", err.Error()) } } else { privateKey, err := wgtypes.GeneratePrivateKey() if err != nil { utils.GinResponse(c).FailedWithMsg("生成密钥失败") return } publicKey := privateKey.PublicKey() if err = repository.Server().Save(&entity.Server{ IpScope: p.IpScope, ListenPort: p.ListenPort, PrivateKey: privateKey.String(), PublicKey: publicKey.String(), PostUpScript: p.PostUpScript, PreDownScript: p.PreDownScript, PostDownScript: p.PostDownScript, }); err != nil { log.Errorf("新增服务端失败: %v", err.Error()) } } if err != nil { utils.GinResponse(c).FailedWithMsg("操作失败") return } } // GetServer // @description: 获取服务端信息 // @receiver wireguard // @param c func (server) GetServer(c *gin.Context) { data, err := repository.Server().GetServer() if err != nil { log.Errorf("获取服务端信息失败: %v", err.Error()) } utils.GinResponse(c).OKWithData(data) } // GetGlobalSetting // @description: 获取全局设置配置 // @receiver server // @param c func (server) GetGlobalSetting(c *gin.Context) { data, err := repository.System().GetServerSetting() if err != nil { log.Errorf("获取配置失败: %v", err.Error()) } utils.GinResponse(c).OKWithData(data) }