webClient.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package api
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/lejianwen/rustdesk-api/v2/global"
  5. "github.com/lejianwen/rustdesk-api/v2/http/response"
  6. "github.com/lejianwen/rustdesk-api/v2/http/response/api"
  7. "github.com/lejianwen/rustdesk-api/v2/service"
  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.ListByUserIdAndCollectionId(u.Id, 0, 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. if sr.Expire != 0 {
  63. //判断是否过期,created_at + expire > now
  64. ca := time.Time(sr.CreatedAt)
  65. if ca.Add(time.Second * time.Duration(sr.Expire)).Before(time.Now()) {
  66. response.Fail(c, 101, "share expired")
  67. return
  68. }
  69. }
  70. ab := service.AllService.AddressBookService.InfoByUserIdAndId(sr.UserId, sr.PeerId)
  71. if ab.RowId == 0 {
  72. response.Fail(c, 101, "peer not found")
  73. return
  74. }
  75. pp := &api.WebClientPeerPayload{}
  76. pp.FromShareRecord(sr)
  77. pp.Info.Username = ab.Username
  78. pp.Info.Hostname = ab.Hostname
  79. response.Success(c, gin.H{
  80. "id_server": global.Config.Rustdesk.IdServer,
  81. "key": global.Config.Rustdesk.Key,
  82. "peer": pp,
  83. })
  84. }
  85. // ServerConfigV2 服务配置
  86. // @Tags WEBCLIENT_V2
  87. // @Summary 服务配置
  88. // @Description 服务配置,给webclient提供api-server
  89. // @Accept json
  90. // @Produce json
  91. // @Success 200 {object} response.Response
  92. // @Failure 500 {object} response.Response
  93. // @Router /server-config-v2 [get]
  94. // @Security token
  95. func (i *WebClient) ServerConfigV2(c *gin.Context) {
  96. response.Success(
  97. c,
  98. gin.H{
  99. "id_server": global.Config.Rustdesk.IdServer,
  100. "key": global.Config.Rustdesk.Key,
  101. },
  102. )
  103. }