upgrade.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package system
  2. import (
  3. "net/http"
  4. "github.com/0xJacky/Nginx-UI/internal/helper"
  5. "github.com/0xJacky/Nginx-UI/internal/upgrader"
  6. "github.com/0xJacky/Nginx-UI/internal/version"
  7. "github.com/gin-gonic/gin"
  8. "github.com/gorilla/websocket"
  9. "github.com/uozi-tech/cosy"
  10. "github.com/uozi-tech/cosy/logger"
  11. )
  12. func GetRelease(c *gin.Context) {
  13. data, err := version.GetRelease(c.Query("channel"))
  14. if err != nil {
  15. cosy.ErrHandler(c, err)
  16. return
  17. }
  18. runtimeInfo, err := version.GetRuntimeInfo()
  19. if err != nil {
  20. cosy.ErrHandler(c, err)
  21. return
  22. }
  23. type resp struct {
  24. version.TRelease
  25. version.RuntimeInfo
  26. }
  27. c.JSON(http.StatusOK, resp{
  28. data, runtimeInfo,
  29. })
  30. }
  31. func GetCurrentVersion(c *gin.Context) {
  32. c.JSON(http.StatusOK, version.GetVersionInfo())
  33. }
  34. const (
  35. UpgradeStatusInfo = "info"
  36. UpgradeStatusError = "error"
  37. UpgradeStatusProgress = "progress"
  38. )
  39. type CoreUpgradeResp struct {
  40. Status string `json:"status"`
  41. Progress float64 `json:"progress"`
  42. Message string `json:"message"`
  43. }
  44. func PerformCoreUpgrade(c *gin.Context) {
  45. var upGrader = websocket.Upgrader{
  46. CheckOrigin: func(r *http.Request) bool {
  47. return true
  48. },
  49. }
  50. // upgrade http to websocket
  51. ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
  52. if err != nil {
  53. logger.Error(err)
  54. return
  55. }
  56. defer ws.Close()
  57. var control upgrader.Control
  58. err = ws.ReadJSON(&control)
  59. if err != nil {
  60. logger.Error(err)
  61. return
  62. }
  63. if helper.InNginxUIOfficialDocker() {
  64. upgrader.DockerUpgrade(ws, &control)
  65. } else {
  66. upgrader.BinaryUpgrade(ws, &control)
  67. }
  68. }