webClient.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. }