From fc4daa74bd4ddecbbd3da9b635034d151b960fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Tue, 26 Jan 2021 20:29:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E9=85=8D=E7=BD=AE=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E9=94=99=E8=AF=AF=E5=90=8E=E4=BB=8D=E7=84=B6=E7=BB=A7?= =?UTF-8?q?=E7=BB=AD=E8=A7=A3=E6=9E=90=EF=BC=8C=E4=B8=8D=E5=86=8D=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/nodeconfigs/node_config.go | 10 ++++++++-- pkg/serverconfigs/server_config.go | 9 +++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pkg/nodeconfigs/node_config.go b/pkg/nodeconfigs/node_config.go index 49cffd0..643cea6 100644 --- a/pkg/nodeconfigs/node_config.go +++ b/pkg/nodeconfigs/node_config.go @@ -7,8 +7,10 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/Tea" + "github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/maps" "io/ioutil" + "strconv" ) var sharedNodeConfig *NodeConfig = nil @@ -76,7 +78,8 @@ func (this *NodeConfig) Init() error { for _, server := range this.Servers { err := server.Init() if err != nil { - return err + // 这里不返回错误,而是继续往下,防止单个服务错误而影响其他服务 + logs.Println("[INIT]server '" + strconv.FormatInt(server.Id, 10) + "' init failed: " + err.Error()) } } @@ -118,6 +121,9 @@ func (this *NodeConfig) Init() error { this.firewallPolicies = append(this.firewallPolicies, this.HTTPFirewallPolicy) } for _, server := range this.Servers { + if !server.IsOk() || !server.IsOn { + continue + } if server.Web != nil { this.lookupWeb(server.Web) } @@ -130,7 +136,7 @@ func (this *NodeConfig) Init() error { func (this *NodeConfig) AvailableGroups() []*serverconfigs.ServerGroup { groupMapping := map[string]*serverconfigs.ServerGroup{} // protocol://addr => Server Group for _, server := range this.Servers { - if !server.IsOn { + if !server.IsOk() || !server.IsOn { continue } for _, addr := range server.FullAddresses() { diff --git a/pkg/serverconfigs/server_config.go b/pkg/serverconfigs/server_config.go index 9eb14d8..9a6a164 100644 --- a/pkg/serverconfigs/server_config.go +++ b/pkg/serverconfigs/server_config.go @@ -30,6 +30,8 @@ type ServerConfig struct { // 反向代理配置 ReverseProxyRef *ReverseProxyRef `yaml:"reverseProxyRef" json:"reverseProxyRef"` ReverseProxy *ReverseProxyConfig `yaml:"reverseProxy" json:"reverseProxy"` + + isOk bool } // 从JSON中解析Server配置 @@ -107,9 +109,16 @@ func (this *ServerConfig) Init() error { } } + this.isOk = true + return nil } +// 配置是否正确 +func (this *ServerConfig) IsOk() bool { + return this.isOk +} + func (this *ServerConfig) FullAddresses() []string { result := []string{} if this.HTTP != nil && this.HTTP.IsOn {