diff --git a/internal/configs/api_config.go b/internal/configs/api_config.go index ab49df3..83cf967 100644 --- a/internal/configs/api_config.go +++ b/internal/configs/api_config.go @@ -9,7 +9,8 @@ import ( // APIConfig 节点API配置 type APIConfig struct { RPC struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` } `yaml:"rpc"` NodeId string `yaml:"nodeId"` Secret string `yaml:"secret"` @@ -30,7 +31,7 @@ func LoadAPIConfig() (*APIConfig, error) { return config, nil } -// 保存到文件 +// WriteFile 保存到文件 func (this *APIConfig) WriteFile(path string) error { data, err := yaml.Marshal(this) if err != nil { diff --git a/internal/configs/api_config_test.go b/internal/configs/api_config_test.go index 795550e..d1c4bfb 100644 --- a/internal/configs/api_config_test.go +++ b/internal/configs/api_config_test.go @@ -1,11 +1,15 @@ -package configs +package configs_test -import "testing" +import ( + "github.com/TeaOSLab/EdgeNode/internal/configs" + _ "github.com/iwind/TeaGo/bootstrap" + "testing" +) func TestLoadAPIConfig(t *testing.T) { - config, err := LoadAPIConfig() + config, err := configs.LoadAPIConfig() if err != nil { t.Fatal(err) } - t.Log(config) + t.Logf("%+v", config) } diff --git a/internal/configs/cluster_config.go b/internal/configs/cluster_config.go index 94b23d5..0eff4d1 100644 --- a/internal/configs/cluster_config.go +++ b/internal/configs/cluster_config.go @@ -1,10 +1,11 @@ package configs -// 集群配置 +// ClusterConfig 集群配置 type ClusterConfig struct { RPC struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` } `yaml:"rpc"` ClusterId string `yaml:"clusterId"` - Secret string `yaml:"secret"` + Secret string `yaml:"secret"` } diff --git a/internal/nodes/node.go b/internal/nodes/node.go index 9566ccf..a348049 100644 --- a/internal/nodes/node.go +++ b/internal/nodes/node.go @@ -635,11 +635,13 @@ func (this *Node) checkClusterConfig() error { if len(resp.Endpoints) == 0 { resp.Endpoints = []string{} } - apiConfig := &configs.APIConfig{ + var apiConfig = &configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ - Endpoints: resp.Endpoints, + Endpoints: resp.Endpoints, + DisableUpdate: false, }, NodeId: resp.UniqueId, Secret: resp.Secret, diff --git a/internal/nodes/task_sync_api_nodes.go b/internal/nodes/task_sync_api_nodes.go index a2c6140..dbc8a92 100644 --- a/internal/nodes/task_sync_api_nodes.go +++ b/internal/nodes/task_sync_api_nodes.go @@ -63,6 +63,16 @@ func (this *SyncAPINodesTask) Stop() { } func (this *SyncAPINodesTask) Loop() error { + config, err := configs.LoadAPIConfig() + if err != nil { + return err + } + + // 是否禁止自动升级 + if config.RPC.DisableUpdate { + return nil + } + var tr = trackers.Begin("SYNC_API_NODES") defer tr.End() @@ -76,7 +86,7 @@ func (this *SyncAPINodesTask) Loop() error { return err } - newEndpoints := []string{} + var newEndpoints = []string{} for _, node := range resp.ApiNodes { if !node.IsOn { continue @@ -85,16 +95,12 @@ func (this *SyncAPINodesTask) Loop() error { } // 和现有的对比 - config, err := configs.LoadAPIConfig() - if err != nil { - return err - } if this.isSame(newEndpoints, config.RPC.Endpoints) { return nil } // 测试是否有API节点可用 - hasOk := this.testEndpoints(newEndpoints) + var hasOk = this.testEndpoints(newEndpoints) if !hasOk { return nil }