From a319957f3ef0da69c6c6ca81fe56e2718057b23a Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 14 Feb 2025 05:48:28 +0800 Subject: [PATCH] fix duplicated routes not being shown --- agent/pkg/agent/config.go | 2 +- internal/config/config.go | 2 +- internal/route/reverse_proxy.go | 3 +++ internal/route/stream.go | 3 +++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/agent/pkg/agent/config.go b/agent/pkg/agent/config.go index ad2824b..79d8004 100644 --- a/agent/pkg/agent/config.go +++ b/agent/pkg/agent/config.go @@ -163,7 +163,7 @@ func (cfg *AgentConfig) Name() string { } func (cfg *AgentConfig) String() string { - return "agent@" + cfg.Addr + return cfg.name + "@" + cfg.Addr } func (cfg *AgentConfig) MarshalJSON() ([]byte, error) { diff --git a/internal/config/config.go b/internal/config/config.go index 4127188..a0b6987 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -170,7 +170,7 @@ func (cfg *Config) StartAutoCert() { } func (cfg *Config) StartProxyProviders() { - errs := cfg.providers.CollectErrorsParallel( + errs := cfg.providers.CollectErrors( func(_ string, p *proxy.Provider) error { return p.Start(cfg.task) }) diff --git a/internal/route/reverse_proxy.go b/internal/route/reverse_proxy.go index 8281642..5af3774 100755 --- a/internal/route/reverse_proxy.go +++ b/internal/route/reverse_proxy.go @@ -97,6 +97,9 @@ func (r *ReveseProxyRoute) String() string { // Start implements task.TaskStarter. func (r *ReveseProxyRoute) Start(parent task.Parent) E.Error { + if existing, ok := routes.GetHTTPRoute(r.TargetName()); ok { + return E.Errorf("route already exists: from provider %s and %s", existing.ProviderName(), r.ProviderName()) + } r.task = parent.Subtask("http."+r.TargetName(), false) switch { diff --git a/internal/route/stream.go b/internal/route/stream.go index c132aa7..3ec3112 100755 --- a/internal/route/stream.go +++ b/internal/route/stream.go @@ -47,6 +47,9 @@ func (r *StreamRoute) String() string { // Start implements task.TaskStarter. func (r *StreamRoute) Start(parent task.Parent) E.Error { + if existing, ok := routes.GetStreamRoute(r.TargetName()); ok { + return E.Errorf("route already exists: from provider %s and %s", existing.ProviderName(), r.ProviderName()) + } r.task = parent.Subtask("stream." + r.TargetName()) r.Stream = NewStream(r) parent.OnCancel("finish", func() {