diff --git a/internal/configs/api_config.go b/internal/configs/api_config.go index 8554477a..abf731f4 100644 --- a/internal/configs/api_config.go +++ b/internal/configs/api_config.go @@ -12,7 +12,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"` diff --git a/internal/tasks/task_sync_api_nodes.go b/internal/tasks/task_sync_api_nodes.go index 5f332b19..f68661bd 100644 --- a/internal/tasks/task_sync_api_nodes.go +++ b/internal/tasks/task_sync_api_nodes.go @@ -58,6 +58,16 @@ func (this *SyncAPINodesTask) Loop() error { return nil } + config, err := configs.LoadAPIConfig() + if err != nil { + return err + } + + // 是否禁止自动升级 + if config.RPC.DisableUpdate { + return nil + } + // 获取所有可用的节点 rpcClient, err := rpc.SharedRPC() if err != nil { @@ -68,7 +78,7 @@ func (this *SyncAPINodesTask) Loop() error { return err } - newEndpoints := []string{} + var newEndpoints = []string{} for _, node := range resp.ApiNodes { if !node.IsOn { continue @@ -77,10 +87,6 @@ func (this *SyncAPINodesTask) Loop() error { } // 和现有的对比 - config, err := configs.LoadAPIConfig() - if err != nil { - return err - } if this.isSame(newEndpoints, config.RPC.Endpoints) { return nil } diff --git a/internal/web/actions/default/nodes/nodeutils/utils.go b/internal/web/actions/default/nodes/nodeutils/utils.go index 03fa9ec1..ab78e139 100644 --- a/internal/web/actions/default/nodes/nodeutils/utils.go +++ b/internal/web/actions/default/nodes/nodeutils/utils.go @@ -102,7 +102,8 @@ func SendMessageToCluster(ctx context.Context, clusterId int64, code string, msg apiRPCClient, err := rpc.NewRPCClient(&configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ Endpoints: apiNode.AccessAddrs, }, @@ -282,7 +283,8 @@ func SendMessageToNodeIds(ctx context.Context, nodeIds []int64, code string, msg apiRPCClient, err := rpc.NewRPCClient(&configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ Endpoints: apiNode.AccessAddrs, }, diff --git a/internal/web/actions/default/recover/updateHosts.go b/internal/web/actions/default/recover/updateHosts.go index f34a28db..b7e7fac4 100644 --- a/internal/web/actions/default/recover/updateHosts.go +++ b/internal/web/actions/default/recover/updateHosts.go @@ -36,7 +36,8 @@ func (this *UpdateHostsAction) RunPost(params struct { client, err := rpc.NewRPCClient(&configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ Endpoints: []string{params.Protocol + "://" + configutils.QuoteIP(params.Host) + ":" + params.Port}, }, @@ -167,7 +168,8 @@ func (this *UpdateHostsAction) RunPost(params struct { // 修改api.yaml var apiConfig = &configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ Endpoints: endpoints, }, diff --git a/internal/web/actions/default/recover/validateApi.go b/internal/web/actions/default/recover/validateApi.go index acb37456..dfee1732 100644 --- a/internal/web/actions/default/recover/validateApi.go +++ b/internal/web/actions/default/recover/validateApi.go @@ -43,7 +43,8 @@ func (this *ValidateApiAction) RunPost(params struct { Require("请输入节点secret") client, err := rpc.NewRPCClient(&configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ Endpoints: []string{params.Protocol + "://" + configutils.QuoteIP(params.Host) + ":" + params.Port}, }, diff --git a/internal/web/actions/default/setup/install.go b/internal/web/actions/default/setup/install.go index 2275d47b..a19cd27f 100644 --- a/internal/web/actions/default/setup/install.go +++ b/internal/web/actions/default/setup/install.go @@ -223,7 +223,8 @@ func (this *InstallAction) RunPost(params struct { // 写入API节点配置,完成安装 apiConfig := &configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ Endpoints: []string{"http://" + configutils.QuoteIP(apiNodeMap.GetString("newHost")) + ":" + apiNodeMap.GetString("newPort")}, }, @@ -285,7 +286,8 @@ func (this *InstallAction) RunPost(params struct { // 构造RPC apiConfig := &configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ Endpoints: []string{apiNodeMap.GetString("oldProtocol") + "://" + configutils.QuoteIP(apiNodeMap.GetString("oldHost")) + ":" + apiNodeMap.GetString("oldPort")}, }, diff --git a/internal/web/actions/default/setup/validateApi.go b/internal/web/actions/default/setup/validateApi.go index ddcac942..0840a982 100644 --- a/internal/web/actions/default/setup/validateApi.go +++ b/internal/web/actions/default/setup/validateApi.go @@ -85,7 +85,8 @@ func (this *ValidateApiAction) RunPost(params struct { Require("请输入节点secret") client, err := rpc.NewRPCClient(&configs.APIConfig{ RPC: struct { - Endpoints []string `yaml:"endpoints"` + Endpoints []string `yaml:"endpoints"` + DisableUpdate bool `yaml:"disableUpdate"` }{ Endpoints: []string{params.OldProtocol + "://" + configutils.QuoteIP(params.OldHost) + ":" + params.OldPort}, },