rustdesk.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package admin
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/lejianwen/rustdesk-api/v2/global"
  5. "github.com/lejianwen/rustdesk-api/v2/http/request/admin"
  6. "github.com/lejianwen/rustdesk-api/v2/http/response"
  7. "github.com/lejianwen/rustdesk-api/v2/model"
  8. "github.com/lejianwen/rustdesk-api/v2/service"
  9. )
  10. type Rustdesk struct {
  11. }
  12. type RustdeskCmd struct {
  13. Cmd string `json:"cmd"`
  14. Option string `json:"option"`
  15. Target string `json:"target"`
  16. }
  17. func (r *Rustdesk) CmdList(c *gin.Context) {
  18. q := &admin.PageQuery{}
  19. if err := c.ShouldBindQuery(q); err != nil {
  20. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error())
  21. return
  22. }
  23. res := service.AllService.ServerCmdService.List(q.Page, 9999)
  24. //在列表前添加系统命令
  25. list := make([]*model.ServerCmd, 0)
  26. list = append(list, model.SysIdServerCmds...)
  27. list = append(list, model.SysRelayServerCmds...)
  28. list = append(list, res.ServerCmds...)
  29. res.ServerCmds = list
  30. response.Success(c, res)
  31. }
  32. func (r *Rustdesk) CmdDelete(c *gin.Context) {
  33. f := &model.ServerCmd{}
  34. if err := c.ShouldBindJSON(f); err != nil {
  35. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error())
  36. return
  37. }
  38. if f.Id == 0 {
  39. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError"))
  40. return
  41. }
  42. ex := service.AllService.ServerCmdService.Info(f.Id)
  43. if ex.Id == 0 {
  44. response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
  45. return
  46. }
  47. err := service.AllService.ServerCmdService.Delete(ex)
  48. if err != nil {
  49. response.Fail(c, 101, err.Error())
  50. return
  51. }
  52. response.Success(c, nil)
  53. }
  54. func (r *Rustdesk) CmdCreate(c *gin.Context) {
  55. f := &model.ServerCmd{}
  56. if err := c.ShouldBindJSON(f); err != nil {
  57. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error())
  58. return
  59. }
  60. errList := global.Validator.ValidStruct(c, f)
  61. if len(errList) > 0 {
  62. response.Fail(c, 101, errList[0])
  63. return
  64. }
  65. err := service.AllService.ServerCmdService.Create(f)
  66. if err != nil {
  67. response.Fail(c, 101, err.Error())
  68. return
  69. }
  70. response.Success(c, nil)
  71. }
  72. func (r *Rustdesk) CmdUpdate(c *gin.Context) {
  73. f := &model.ServerCmd{}
  74. if err := c.ShouldBindJSON(f); err != nil {
  75. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error())
  76. return
  77. }
  78. errList := global.Validator.ValidStruct(c, f)
  79. if len(errList) > 0 {
  80. response.Fail(c, 101, errList[0])
  81. return
  82. }
  83. ex := service.AllService.ServerCmdService.Info(f.Id)
  84. if ex.Id == 0 {
  85. response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
  86. return
  87. }
  88. err := service.AllService.ServerCmdService.Update(f)
  89. if err != nil {
  90. response.Fail(c, 101, err.Error())
  91. return
  92. }
  93. response.Success(c, nil)
  94. }
  95. func (r *Rustdesk) SendCmd(c *gin.Context) {
  96. rc := &RustdeskCmd{}
  97. if err := c.ShouldBindJSON(rc); err != nil {
  98. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error())
  99. return
  100. }
  101. if rc.Cmd == "" {
  102. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError"))
  103. return
  104. }
  105. if rc.Target == "" {
  106. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError"))
  107. return
  108. }
  109. if rc.Target != model.ServerCmdTargetIdServer && rc.Target != model.ServerCmdTargetRelayServer {
  110. response.Fail(c, 101, response.TranslateMsg(c, "ParamsError"))
  111. return
  112. }
  113. res, err := service.AllService.ServerCmdService.SendCmd(rc.Target, rc.Cmd, rc.Option)
  114. if err != nil {
  115. response.Fail(c, 101, err.Error())
  116. return
  117. }
  118. response.Success(c, res)
  119. }