mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-29 03:20:24 +08:00
在节点详情中显示API节点地址
This commit is contained in:
6
internal/db/models/ns_node_dao_test.go
Normal file
6
internal/db/models/ns_node_dao_test.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package models_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
_ "github.com/iwind/TeaGo/bootstrap"
|
||||||
|
)
|
||||||
@@ -22,6 +22,7 @@ type NSNode struct {
|
|||||||
InactiveNotifiedAt uint64 `field:"inactiveNotifiedAt"` // 离线通知时间
|
InactiveNotifiedAt uint64 `field:"inactiveNotifiedAt"` // 离线通知时间
|
||||||
ConnectedAPINodes dbs.JSON `field:"connectedAPINodes"` // 当前连接的API节点
|
ConnectedAPINodes dbs.JSON `field:"connectedAPINodes"` // 当前连接的API节点
|
||||||
DdosProtection dbs.JSON `field:"ddosProtection"` // DDoS防护设置
|
DdosProtection dbs.JSON `field:"ddosProtection"` // DDoS防护设置
|
||||||
|
ApiNodeAddrs dbs.JSON `field:"apiNodeAddrs"` // API节点地址
|
||||||
}
|
}
|
||||||
|
|
||||||
type NSNodeOperator struct {
|
type NSNodeOperator struct {
|
||||||
@@ -43,6 +44,7 @@ type NSNodeOperator struct {
|
|||||||
InactiveNotifiedAt any // 离线通知时间
|
InactiveNotifiedAt any // 离线通知时间
|
||||||
ConnectedAPINodes any // 当前连接的API节点
|
ConnectedAPINodes any // 当前连接的API节点
|
||||||
DdosProtection any // DDoS防护设置
|
DdosProtection any // DDoS防护设置
|
||||||
|
ApiNodeAddrs any // API节点地址
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNSNodeOperator() *NSNodeOperator {
|
func NewNSNodeOperator() *NSNodeOperator {
|
||||||
|
|||||||
@@ -1,79 +1 @@
|
|||||||
package models
|
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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -546,7 +546,7 @@ func (this *NodeService) FindEnabledNode(ctx context.Context, req *pb.FindEnable
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
installStatusResult := &pb.NodeInstallStatus{}
|
var installStatusResult = &pb.NodeInstallStatus{}
|
||||||
if installStatus != nil {
|
if installStatus != nil {
|
||||||
installStatusResult = &pb.NodeInstallStatus{
|
installStatusResult = &pb.NodeInstallStatus{
|
||||||
IsRunning: installStatus.IsRunning,
|
IsRunning: installStatus.IsRunning,
|
||||||
@@ -678,6 +678,7 @@ func (this *NodeService) FindEnabledNode(ctx context.Context, req *pb.FindEnable
|
|||||||
LnAddrs: node.DecodeLnAddrs(),
|
LnAddrs: node.DecodeLnAddrs(),
|
||||||
DnsRoutes: pbRoutes,
|
DnsRoutes: pbRoutes,
|
||||||
EnableIPLists: node.EnableIPLists,
|
EnableIPLists: node.EnableIPLists,
|
||||||
|
ApiNodeAddrsJSON: node.ApiNodeAddrs,
|
||||||
}}, nil
|
}}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user