webClient.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package api
  2. import (
  3. "Gwen/global"
  4. "Gwen/http/response"
  5. "Gwen/http/response/api"
  6. "Gwen/service"
  7. "github.com/gin-gonic/gin"
  8. "time"
  9. )
  10. type WebClient struct {
  11. }
  12. // ServerConfig 服务配置
  13. // @Tags WEBCLIENT
  14. // @Summary 服务配置
  15. // @Description 服务配置,给webclient提供api-server
  16. // @Accept json
  17. // @Produce json
  18. // @Success 200 {object} response.Response
  19. // @Failure 500 {object} response.Response
  20. // @Router /server-config [get]
  21. // @Security token
  22. func (i *WebClient) ServerConfig(c *gin.Context) {
  23. u := service.AllService.UserService.CurUser(c)
  24. peers := map[string]*api.WebClientPeerPayload{}
  25. abs := service.AllService.AddressBookService.ListByUserId(u.Id, 1, 100)
  26. for _, ab := range abs.AddressBooks {
  27. pp := &api.WebClientPeerPayload{}
  28. pp.FromAddressBook(ab)
  29. peers[ab.Id] = pp
  30. }
  31. response.Success(
  32. c,
  33. gin.H{
  34. "id_server": global.Config.Rustdesk.IdServer,
  35. "key": global.Config.Rustdesk.Key,
  36. "peers": peers,
  37. },
  38. )
  39. }
  40. // SharedPeer 分享的peer
  41. // @Tags WEBCLIENT
  42. // @Summary 分享的peer
  43. // @Description 分享的peer
  44. // @Accept json
  45. // @Produce json
  46. // @Success 200 {object} response.Response
  47. // @Failure 500 {object} response.Response
  48. // @Router /shared-peer [post]
  49. func (i *WebClient) SharedPeer(c *gin.Context) {
  50. j := &gin.H{}
  51. c.ShouldBindJSON(j)
  52. t := (*j)["share_token"].(string)
  53. if t == "" {
  54. response.Fail(c, 101, "share_token is required")
  55. return
  56. }
  57. sr := service.AllService.AddressBookService.SharedPeer(t)
  58. if sr == nil || sr.Id == 0 {
  59. response.Fail(c, 101, "share not found")
  60. return
  61. }
  62. //判断是否过期,created_at + expire > now
  63. ca := time.Time(sr.CreatedAt)
  64. if ca.Add(time.Second * time.Duration(sr.Expire)).Before(time.Now()) {
  65. response.Fail(c, 101, "share expired")
  66. return
  67. }
  68. ab := service.AllService.AddressBookService.InfoByUserIdAndId(sr.UserId, sr.PeerId)
  69. if ab.RowId == 0 {
  70. response.Fail(c, 101, "peer not found")
  71. return
  72. }
  73. pp := &api.WebClientPeerPayload{}
  74. pp.FromShareRecord(sr)
  75. pp.Info.Username = ab.Username
  76. pp.Info.Hostname = ab.Hostname
  77. response.Success(c, gin.H{
  78. "id_server": global.Config.Rustdesk.IdServer,
  79. "key": global.Config.Rustdesk.Key,
  80. "peer": pp,
  81. })
  82. }
  83. // ServerConfigV2 服务配置
  84. // @Tags WEBCLIENT_V2
  85. // @Summary 服务配置
  86. // @Description 服务配置,给webclient提供api-server
  87. // @Accept json
  88. // @Produce json
  89. // @Success 200 {object} response.Response
  90. // @Failure 500 {object} response.Response
  91. // @Router /server-config [get]
  92. // @Security token
  93. func (i *WebClient) ServerConfigV2(c *gin.Context) {
  94. response.Success(
  95. c,
  96. gin.H{
  97. "id_server": global.Config.Rustdesk.IdServer,
  98. "key": global.Config.Rustdesk.Key,
  99. },
  100. )
  101. }