mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package models
 | 
						||
 | 
						||
import (
 | 
						||
	"encoding/json"
 | 
						||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
						||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/ddosconfigs"
 | 
						||
	"time"
 | 
						||
)
 | 
						||
 | 
						||
// DecodeInstallStatus 安装状态
 | 
						||
func (this *NSNode) DecodeInstallStatus() (*NodeInstallStatus, error) {
 | 
						||
	if len(this.InstallStatus) == 0 {
 | 
						||
		return NewNodeInstallStatus(), nil
 | 
						||
	}
 | 
						||
	status := &NodeInstallStatus{}
 | 
						||
	err := json.Unmarshal(this.InstallStatus, status)
 | 
						||
	if err != nil {
 | 
						||
		return NewNodeInstallStatus(), err
 | 
						||
	}
 | 
						||
 | 
						||
	// 如果N秒钟没有更新状态,则认为不在运行
 | 
						||
	if status.IsRunning && status.UpdatedAt < time.Now().Unix()-10 {
 | 
						||
		status.IsRunning = false
 | 
						||
		status.IsFinished = true
 | 
						||
		status.Error = "timeout"
 | 
						||
	}
 | 
						||
 | 
						||
	return status, nil
 | 
						||
}
 | 
						||
 | 
						||
// DecodeStatus 节点状态
 | 
						||
func (this *NSNode) DecodeStatus() (*nodeconfigs.NodeStatus, error) {
 | 
						||
	if len(this.Status) == 0 {
 | 
						||
		return nil, nil
 | 
						||
	}
 | 
						||
	status := &nodeconfigs.NodeStatus{}
 | 
						||
	err := json.Unmarshal(this.Status, status)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	return status, nil
 | 
						||
}
 | 
						||
 | 
						||
// DecodeDDoSProtection 解析DDoS Protection设置
 | 
						||
func (this *NSNode) DecodeDDoSProtection() *ddosconfigs.ProtectionConfig {
 | 
						||
	if IsNull(this.DdosProtection) {
 | 
						||
		return nil
 | 
						||
	}
 | 
						||
 | 
						||
	var result = &ddosconfigs.ProtectionConfig{}
 | 
						||
	err := json.Unmarshal(this.DdosProtection, &result)
 | 
						||
	if err != nil {
 | 
						||
		// ignore err
 | 
						||
	}
 | 
						||
	return result
 | 
						||
}
 | 
						||
 | 
						||
// HasDDoSProtection 检查是否有DDOS设置
 | 
						||
func (this *NSNode) HasDDoSProtection() bool {
 | 
						||
	var config = this.DecodeDDoSProtection()
 | 
						||
	if config != nil {
 | 
						||
		return !config.IsPriorEmpty()
 | 
						||
	}
 | 
						||
	return false
 | 
						||
}
 | 
						||
 | 
						||
// DecodeConnectedAPINodes 解析连接的API节点列表
 | 
						||
func (this *NSNode) DecodeConnectedAPINodes() []int64 {
 | 
						||
	if IsNull(this.ConnectedAPINodes) {
 | 
						||
		return nil
 | 
						||
	}
 | 
						||
 | 
						||
	var result = []int64{}
 | 
						||
	err := json.Unmarshal(this.ConnectedAPINodes, &result)
 | 
						||
	if err != nil {
 | 
						||
		// ignore err
 | 
						||
	}
 | 
						||
	return result
 | 
						||
}
 |