api.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package router
  2. import (
  3. "github.com/gin-gonic/gin"
  4. _ "github.com/lejianwen/rustdesk-api/v2/docs/api"
  5. "github.com/lejianwen/rustdesk-api/v2/global"
  6. "github.com/lejianwen/rustdesk-api/v2/http/controller/api"
  7. "github.com/lejianwen/rustdesk-api/v2/http/middleware"
  8. swaggerFiles "github.com/swaggo/files"
  9. ginSwagger "github.com/swaggo/gin-swagger"
  10. "net/http"
  11. )
  12. func ApiInit(g *gin.Engine) {
  13. //g.Use(middleware.Cors())
  14. //swagger
  15. if global.Config.App.ShowSwagger == 1 {
  16. g.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, ginSwagger.InstanceName("api")))
  17. }
  18. // 加载 HTML 模板
  19. g.LoadHTMLGlob("resources/templates/*")
  20. frg := g.Group("/api")
  21. {
  22. i := &api.Index{}
  23. frg.GET("/", i.Index)
  24. frg.GET("/version", i.Version)
  25. frg.POST("/heartbeat", i.Heartbeat)
  26. }
  27. {
  28. l := &api.Login{}
  29. // 如果返回oidc则可以通过oidc登录
  30. frg.GET("/login-options", l.LoginOptions)
  31. frg.POST("/login", l.Login)
  32. }
  33. {
  34. o := &api.Oauth{}
  35. // [method:POST] [uri:/api/oidc/auth]
  36. frg.POST("/oidc/auth", o.OidcAuth)
  37. // [method:GET] [uri:/api/oidc/auth-query?code=abc&id=xxxxx&uuid=xxxxx]
  38. frg.GET("/oidc/auth-query", o.OidcAuthQuery)
  39. //api/oauth/callback
  40. frg.GET("/oauth/callback", o.OauthCallback)
  41. frg.GET("/oauth/login", o.OauthCallback)
  42. frg.GET("/oauth/msg", o.Message)
  43. frg.GET("/oidc/callback", o.OauthCallback)
  44. frg.GET("/oidc/login", o.OauthCallback)
  45. frg.GET("/oidc/msg", o.Message)
  46. }
  47. {
  48. pe := &api.Peer{}
  49. //提交系统信息
  50. frg.POST("/sysinfo", pe.SysInfo)
  51. frg.POST("/sysinfo_ver", pe.SysInfoVer)
  52. }
  53. if global.Config.App.WebClient == 1 {
  54. WebClientRoutes(frg)
  55. }
  56. {
  57. au := &api.Audit{}
  58. //[method:POST] [uri:/api/audit/conn]
  59. frg.POST("/audit/conn", au.AuditConn)
  60. //[method:POST] [uri:/api/audit/file]
  61. frg.POST("/audit/file", au.AuditFile)
  62. }
  63. frg.Use(middleware.RustAuth())
  64. {
  65. u := &api.User{}
  66. frg.GET("/user/info", u.Info)
  67. frg.POST("/currentUser", u.Info)
  68. }
  69. {
  70. l := &api.Login{}
  71. frg.POST("/logout", l.Logout)
  72. }
  73. {
  74. gr := &api.Group{}
  75. frg.GET("/users", gr.Users)
  76. frg.GET("/peers", gr.Peers)
  77. // /api/device-group/accessible?current=1&pageSize=100
  78. frg.GET("/device-group/accessible", gr.Device)
  79. }
  80. {
  81. ab := &api.Ab{}
  82. //获取地址
  83. frg.GET("/ab", ab.Ab)
  84. //更新地址
  85. frg.POST("/ab", ab.UpAb)
  86. }
  87. PersonalRoutes(frg)
  88. //访问静态文件
  89. g.StaticFS("/upload", http.Dir(global.Config.Gin.ResourcesPath+"/public/upload"))
  90. }
  91. func PersonalRoutes(frg *gin.RouterGroup) {
  92. {
  93. ab := &api.Ab{}
  94. frg.POST("/ab/personal", ab.Personal)
  95. //[method:POST] [uri:/api/ab/settings] Request
  96. frg.POST("/ab/settings", ab.Settings)
  97. // [method:POST] [uri:/api/ab/shared/profiles?current=1&pageSize=100]
  98. frg.POST("/ab/shared/profiles", ab.SharedProfiles)
  99. //[method:POST] [uri:/api/ab/peers?current=1&pageSize=100&ab=1]
  100. frg.POST("/ab/peers", ab.Peers)
  101. // [method:POST] [uri:/api/ab/tags/1]
  102. frg.POST("/ab/tags/:guid", ab.PTags)
  103. //[method:POST] api/ab/peer/add/1
  104. frg.POST("/ab/peer/add/:guid", ab.PeerAdd)
  105. //[method:DELETE] [uri:/api/ab/peer/1]
  106. frg.DELETE("/ab/peer/:guid", ab.PeerDel)
  107. //[method:PUT] [uri:/api/ab/peer/update/1]
  108. frg.PUT("/ab/peer/update/:guid", ab.PeerUpdate)
  109. //[method:POST] [uri:/api/ab/tag/add/1]
  110. frg.POST("/ab/tag/add/:guid", ab.TagAdd)
  111. //[method:PUT] [uri:/api/ab/tag/rename/1]
  112. frg.PUT("/ab/tag/rename/:guid", ab.TagRename)
  113. //[method:PUT] [uri:/api/ab/tag/update/1]
  114. frg.PUT("/ab/tag/update/:guid", ab.TagUpdate)
  115. //[method:DELETE] [uri:/api/ab/tag/1]
  116. frg.DELETE("/ab/tag/:guid", ab.TagDel)
  117. }
  118. }
  119. func WebClientRoutes(frg *gin.RouterGroup) {
  120. w := &api.WebClient{}
  121. {
  122. frg.POST("/shared-peer", w.SharedPeer)
  123. }
  124. {
  125. frg.POST("/server-config", middleware.RustAuth(), w.ServerConfig)
  126. frg.POST("/server-config-v2", middleware.RustAuth(), w.ServerConfigV2)
  127. }
  128. }