v1.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package route
  2. import (
  3. "crypto/ecdsa"
  4. "os"
  5. "github.com/IceWhaleTech/CasaOS-Common/external"
  6. "github.com/IceWhaleTech/CasaOS-Common/middleware"
  7. "github.com/IceWhaleTech/CasaOS-Common/utils/jwt"
  8. "github.com/IceWhaleTech/CasaOS/common"
  9. "github.com/IceWhaleTech/CasaOS/pkg/config"
  10. v1 "github.com/IceWhaleTech/CasaOS/route/v1"
  11. "github.com/gin-contrib/gzip"
  12. "github.com/gin-gonic/gin"
  13. )
  14. func InitV1Router() *gin.Engine {
  15. ginMode := gin.ReleaseMode
  16. if config.ServerInfo.RunMode != "" {
  17. ginMode = config.ServerInfo.RunMode
  18. }
  19. if os.Getenv(gin.EnvGinMode) != "" {
  20. ginMode = os.Getenv(gin.EnvGinMode)
  21. }
  22. gin.SetMode(ginMode)
  23. r := gin.New()
  24. r.Use(gin.Recovery())
  25. r.Use(middleware.Cors())
  26. r.Use(gzip.Gzip(gzip.DefaultCompression))
  27. if ginMode != gin.ReleaseMode {
  28. r.Use(middleware.WriteLog())
  29. }
  30. r.GET("/v1/sys/debug", v1.GetSystemConfigDebug) // //debug
  31. r.GET("/v1/sys/version/check", v1.GetSystemCheckVersion)
  32. r.GET("/v1/sys/version/current", func(ctx *gin.Context) {
  33. ctx.String(200, common.VERSION)
  34. })
  35. r.GET("/ping", func(ctx *gin.Context) {
  36. ctx.String(200, "pong")
  37. })
  38. r.GET("/v1/recover/:type", v1.GetRecoverStorage)
  39. v1Group := r.Group("/v1")
  40. // r.Any("/v1/test", v1.CheckNetwork)
  41. v1Group.Use(jwt.ExceptLocalhost(func() (*ecdsa.PublicKey, error) { return external.GetPublicKey(config.CommonInfo.RuntimePath) }))
  42. {
  43. v1SysGroup := v1Group.Group("/sys")
  44. v1SysGroup.Use()
  45. {
  46. v1SysGroup.GET("/version", v1.GetSystemCheckVersion) // version/check
  47. v1SysGroup.POST("/update", v1.SystemUpdate)
  48. v1SysGroup.GET("/hardware", v1.GetSystemHardwareInfo) // hardware/info
  49. v1SysGroup.GET("/wsssh", v1.WsSsh)
  50. v1SysGroup.POST("/ssh-login", v1.PostSshLogin)
  51. // v1SysGroup.GET("/config", v1.GetSystemConfig) //delete
  52. // v1SysGroup.POST("/config", v1.PostSetSystemConfig)
  53. v1SysGroup.GET("/logs", v1.GetCasaOSErrorLogs) // error/logs
  54. // v1SysGroup.GET("/widget/config", v1.GetWidgetConfig)//delete
  55. // v1SysGroup.POST("/widget/config", v1.PostSetWidgetConfig)//delete
  56. v1SysGroup.POST("/stop", v1.PostKillCasaOS)
  57. v1SysGroup.GET("/utilization", v1.GetSystemUtilization)
  58. // v1SysGroup.GET("/cpu", v1.GetSystemCupInfo)
  59. // v1SysGroup.GET("/mem", v1.GetSystemMemInfo)
  60. // v1SysGroup.GET("/disk", v1.GetSystemDiskInfo)
  61. // v1SysGroup.GET("/network", v1.GetSystemNetInfo)
  62. v1SysGroup.GET("/server-info", nil)
  63. v1SysGroup.PUT("/server-info", nil)
  64. // v1SysGroup.GET("/port", v1.GetCasaOSPort)
  65. // v1SysGroup.PUT("/port", v1.PutCasaOSPort)
  66. v1SysGroup.GET("/proxy", v1.GetSystemProxy)
  67. v1SysGroup.PUT("/state/:state", v1.PutSystemState)
  68. v1SysGroup.GET("/entry", v1.GetSystemEntry)
  69. }
  70. v1PortGroup := v1Group.Group("/port")
  71. v1PortGroup.Use()
  72. {
  73. v1PortGroup.GET("/", v1.GetPort) // app/port
  74. v1PortGroup.GET("/state/:port", v1.PortCheck) // app/check/:port
  75. }
  76. v1FileGroup := v1Group.Group("/file")
  77. v1FileGroup.Use()
  78. {
  79. v1FileGroup.GET("", v1.GetDownloadSingleFile) // download/:path
  80. v1FileGroup.POST("", v1.PostCreateFile)
  81. v1FileGroup.PUT("", v1.PutFileContent)
  82. v1FileGroup.PUT("/name", v1.RenamePath)
  83. // file/rename
  84. v1FileGroup.GET("/content", v1.GetFilerContent) // file/read
  85. // File uploads need to be handled separately, and will not be modified here
  86. //v1FileGroup.POST("/upload", v1.PostFileUpload)
  87. v1FileGroup.POST("/upload", v1.PostFileUpload)
  88. v1FileGroup.GET("/upload", v1.GetFileUpload)
  89. // v1FileGroup.GET("/download", v1.UserFileDownloadCommonService)
  90. v1FileGroup.GET("/ws", v1.ConnectWebSocket)
  91. v1FileGroup.GET("/peers", v1.GetPeers)
  92. }
  93. v1CloudGroup := v1Group.Group("/cloud")
  94. v1CloudGroup.Use()
  95. {
  96. v1CloudGroup.GET("", v1.ListStorages)
  97. v1CloudGroup.DELETE("", v1.UmountStorage)
  98. }
  99. v1DriverGroup := v1Group.Group("/driver")
  100. v1DriverGroup.Use()
  101. {
  102. v1DriverGroup.GET("", v1.ListDriverInfo)
  103. }
  104. v1FolderGroup := v1Group.Group("/folder")
  105. v1FolderGroup.Use()
  106. {
  107. v1FolderGroup.PUT("/name", v1.RenamePath)
  108. v1FolderGroup.GET("", v1.DirPath) ///file/dirpath
  109. v1FolderGroup.POST("", v1.MkdirAll) ///file/mkdir
  110. v1FolderGroup.GET("/size", v1.GetSize)
  111. v1FolderGroup.GET("/count", v1.GetFileCount)
  112. }
  113. v1BatchGroup := v1Group.Group("/batch")
  114. v1BatchGroup.Use()
  115. {
  116. v1BatchGroup.DELETE("", v1.DeleteFile) // file/delete
  117. v1BatchGroup.DELETE("/:id/task", v1.DeleteOperateFileOrDir)
  118. v1BatchGroup.POST("/task", v1.PostOperateFileOrDir) // file/operate
  119. v1BatchGroup.GET("", v1.GetDownloadFile)
  120. }
  121. v1ImageGroup := v1Group.Group("/image")
  122. v1ImageGroup.Use()
  123. {
  124. v1ImageGroup.GET("", v1.GetFileImage)
  125. }
  126. v1SambaGroup := v1Group.Group("/samba")
  127. v1SambaGroup.Use()
  128. {
  129. v1ConnectionsGroup := v1SambaGroup.Group("/connections")
  130. v1ConnectionsGroup.Use()
  131. {
  132. v1ConnectionsGroup.GET("", v1.GetSambaConnectionsList)
  133. v1ConnectionsGroup.POST("", v1.PostSambaConnectionsCreate)
  134. v1ConnectionsGroup.DELETE("/:id", v1.DeleteSambaConnections)
  135. }
  136. v1SharesGroup := v1SambaGroup.Group("/shares")
  137. v1SharesGroup.Use()
  138. {
  139. v1SharesGroup.GET("", v1.GetSambaSharesList)
  140. v1SharesGroup.POST("", v1.PostSambaSharesCreate)
  141. v1SharesGroup.DELETE("/:id", v1.DeleteSambaShares)
  142. v1SharesGroup.GET("/status", v1.GetSambaStatus)
  143. }
  144. }
  145. v1NotifyGroup := v1Group.Group("/notify")
  146. v1NotifyGroup.Use()
  147. {
  148. v1NotifyGroup.POST("/:path", v1.PostNotifyMessage)
  149. // merge to system
  150. v1NotifyGroup.POST("/system_status", v1.PostSystemStatusNotify)
  151. }
  152. v1OtherGroup := v1Group.Group("/other")
  153. v1OtherGroup.Use()
  154. {
  155. v1OtherGroup.GET("/search", v1.GetSearchResult)
  156. }
  157. v1ZerotierGroup := v1Group.Group("/zt")
  158. v1ZerotierGroup.Use()
  159. {
  160. v1ZerotierGroup.Any("/*url", v1.ZerotierProxy)
  161. }
  162. }
  163. return r
  164. }