mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-05 01:20:25 +08:00
69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
package models
|
||
|
||
import (
|
||
"encoding/json"
|
||
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
||
"time"
|
||
)
|
||
|
||
// 安装状态
|
||
func (this *Node) DecodeInstallStatus() (*NodeInstallStatus, error) {
|
||
if len(this.InstallStatus) == 0 || this.InstallStatus == "null" {
|
||
return NewNodeInstallStatus(), nil
|
||
}
|
||
status := &NodeInstallStatus{}
|
||
err := json.Unmarshal([]byte(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
|
||
}
|
||
|
||
// 节点状态
|
||
func (this *Node) DecodeStatus() (*nodeconfigs.NodeStatus, error) {
|
||
if len(this.Status) == 0 || this.Status == "null" {
|
||
return nil, nil
|
||
}
|
||
status := &nodeconfigs.NodeStatus{}
|
||
err := json.Unmarshal([]byte(this.Status), status)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return status, nil
|
||
}
|
||
|
||
// 所有的DNS线路
|
||
func (this *Node) DNSRoutes() (map[int64]string, error) {
|
||
routes := map[int64]string{} // domainId => route
|
||
if len(this.DnsRoutes) == 0 || this.DnsRoutes == "null" {
|
||
return routes, nil
|
||
}
|
||
err := json.Unmarshal([]byte(this.DnsRoutes), &routes)
|
||
if err != nil {
|
||
return map[int64]string{}, err
|
||
}
|
||
return routes, nil
|
||
}
|
||
|
||
// DNS线路
|
||
func (this *Node) DNSRoute(dnsDomainId int64) (string, error) {
|
||
routes := map[int64]string{} // domainId => route
|
||
if len(this.DnsRoutes) == 0 || this.DnsRoutes == "null" {
|
||
return "", nil
|
||
}
|
||
err := json.Unmarshal([]byte(this.DnsRoutes), &routes)
|
||
if err != nil {
|
||
return "", err
|
||
}
|
||
route, _ := routes[dnsDomainId]
|
||
return route, nil
|
||
}
|