|  | @@ -41,6 +41,18 @@ func GetCurrentVersion(c *gin.Context) {
 | 
	
		
			
				|  |  |  	c.JSON(http.StatusOK, curVer)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +const (
 | 
	
		
			
				|  |  | +	UpgradeStatusInfo     = "info"
 | 
	
		
			
				|  |  | +	UpgradeStatusError    = "error"
 | 
	
		
			
				|  |  | +	UpgradeStatusProgress = "progress"
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +type CoreUpgradeResp struct {
 | 
	
		
			
				|  |  | +	Status   string  `json:"status"`
 | 
	
		
			
				|  |  | +	Progress float64 `json:"progress"`
 | 
	
		
			
				|  |  | +	Message  string  `json:"message"`
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  func PerformCoreUpgrade(c *gin.Context) {
 | 
	
		
			
				|  |  |  	var upGrader = websocket.Upgrader{
 | 
	
		
			
				|  |  |  		CheckOrigin: func(r *http.Request) bool {
 | 
	
	
		
			
				|  | @@ -67,49 +79,48 @@ func PerformCoreUpgrade(c *gin.Context) {
 | 
	
		
			
				|  |  |  		return
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -		"status":  "info",
 | 
	
		
			
				|  |  | -		"message": "Initialing core upgrader",
 | 
	
		
			
				|  |  | +	_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +		Status:  UpgradeStatusInfo,
 | 
	
		
			
				|  |  | +		Message: "Initialing core upgrader",
 | 
	
		
			
				|  |  |  	})
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	u, err := upgrader.NewUpgrader(control.Channel)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if err != nil {
 | 
	
		
			
				|  |  | -		_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -			"status":  "error",
 | 
	
		
			
				|  |  | -			"message": "Initial core upgrader error",
 | 
	
		
			
				|  |  | +		_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +			Status:  UpgradeStatusError,
 | 
	
		
			
				|  |  | +			Message: "Initial core upgrader error",
 | 
	
		
			
				|  |  |  		})
 | 
	
		
			
				|  |  | -		_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -			"status":  "error",
 | 
	
		
			
				|  |  | -			"message": err.Error(),
 | 
	
		
			
				|  |  | +		_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +			Status:  UpgradeStatusError,
 | 
	
		
			
				|  |  | +			Message: err.Error(),
 | 
	
		
			
				|  |  |  		})
 | 
	
		
			
				|  |  |  		logger.Error(err)
 | 
	
		
			
				|  |  |  		return
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -		"status":  "info",
 | 
	
		
			
				|  |  | -		"message": "Downloading latest release",
 | 
	
		
			
				|  |  | +	_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +		Status:  UpgradeStatusInfo,
 | 
	
		
			
				|  |  | +		Message: "Downloading latest release",
 | 
	
		
			
				|  |  |  	})
 | 
	
		
			
				|  |  |  	progressChan := make(chan float64)
 | 
	
		
			
				|  |  |  	go func() {
 | 
	
		
			
				|  |  |  		for progress := range progressChan {
 | 
	
		
			
				|  |  | -			_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -				"status":   "progress",
 | 
	
		
			
				|  |  | -				"progress": progress,
 | 
	
		
			
				|  |  | +			_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +				Status:   UpgradeStatusProgress,
 | 
	
		
			
				|  |  | +				Progress: progress,
 | 
	
		
			
				|  |  |  			})
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	tarName, err := u.DownloadLatestRelease(progressChan)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	if err != nil {
 | 
	
		
			
				|  |  | -		_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -			"status":  "error",
 | 
	
		
			
				|  |  | -			"message": "Download latest release error",
 | 
	
		
			
				|  |  | +		_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +			Status:  UpgradeStatusError,
 | 
	
		
			
				|  |  | +			Message: "Download latest release error",
 | 
	
		
			
				|  |  |  		})
 | 
	
		
			
				|  |  | -		_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -			"status":  "error",
 | 
	
		
			
				|  |  | -			"message": err.Error(),
 | 
	
		
			
				|  |  | +		_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +			Status:  UpgradeStatusError,
 | 
	
		
			
				|  |  | +			Message: err.Error(),
 | 
	
		
			
				|  |  |  		})
 | 
	
		
			
				|  |  |  		logger.Error(err)
 | 
	
		
			
				|  |  |  		return
 | 
	
	
		
			
				|  | @@ -119,9 +130,9 @@ func PerformCoreUpgrade(c *gin.Context) {
 | 
	
		
			
				|  |  |  		_ = os.Remove(tarName)
 | 
	
		
			
				|  |  |  		_ = os.Remove(tarName + ".digest")
 | 
	
		
			
				|  |  |  	}()
 | 
	
		
			
				|  |  | -	_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -		"status":  "info",
 | 
	
		
			
				|  |  | -		"message": "Performing core upgrade",
 | 
	
		
			
				|  |  | +	_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +		Status:  UpgradeStatusInfo,
 | 
	
		
			
				|  |  | +		Message: "Performing core upgrade",
 | 
	
		
			
				|  |  |  	})
 | 
	
		
			
				|  |  |  	// dry run
 | 
	
		
			
				|  |  |  	if control.DryRun || settings.ServerSettings.Demo {
 | 
	
	
		
			
				|  | @@ -132,13 +143,13 @@ func PerformCoreUpgrade(c *gin.Context) {
 | 
	
		
			
				|  |  |  	// bye, overseer will restart nginx-ui
 | 
	
		
			
				|  |  |  	err = u.PerformCoreUpgrade(u.ExPath, tarName)
 | 
	
		
			
				|  |  |  	if err != nil {
 | 
	
		
			
				|  |  | -		_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -			"status":  "error",
 | 
	
		
			
				|  |  | -			"message": "Perform core upgrade error",
 | 
	
		
			
				|  |  | +		_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +			Status:  UpgradeStatusError,
 | 
	
		
			
				|  |  | +			Message: "Perform core upgrade error",
 | 
	
		
			
				|  |  |  		})
 | 
	
		
			
				|  |  | -		_ = ws.WriteJSON(gin.H{
 | 
	
		
			
				|  |  | -			"status":  "error",
 | 
	
		
			
				|  |  | -			"message": err.Error(),
 | 
	
		
			
				|  |  | +		_ = ws.WriteJSON(CoreUpgradeResp{
 | 
	
		
			
				|  |  | +			Status:  UpgradeStatusError,
 | 
	
		
			
				|  |  | +			Message: err.Error(),
 | 
	
		
			
				|  |  |  		})
 | 
	
		
			
				|  |  |  		logger.Error(err)
 | 
	
		
			
				|  |  |  		return
 |