From 4698ec8dee060dbc8f9316c7cee882f0ecb74f57 Mon Sep 17 00:00:00 2001 From: Adam Chalmers Date: Mon, 9 Nov 2020 19:22:03 -0600 Subject: [PATCH] TUN-3461: Show all origin services in the UI --- cmd/cloudflared/config/configuration.go | 2 +- cmd/cloudflared/tunnel/cmd.go | 2 +- cmd/cloudflared/ui/launch_ui.go | 31 +++++++++++++++---------- ingress/ingress.go | 5 ++-- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/cmd/cloudflared/config/configuration.go b/cmd/cloudflared/config/configuration.go index 9a6547e1..3ff9159a 100644 --- a/cmd/cloudflared/config/configuration.go +++ b/cmd/cloudflared/config/configuration.go @@ -246,7 +246,7 @@ type OriginRequestConfig struct { ProxyAddress *string `yaml:"proxyAddress"` // Listen port for the proxy. ProxyPort *uint `yaml:"proxyPort"` - // Valid options are 'socks', 'ssh' or empty. + // Valid options are 'socks' or empty. ProxyType *string `yaml:"proxyType"` } diff --git a/cmd/cloudflared/tunnel/cmd.go b/cmd/cloudflared/tunnel/cmd.go index 434bc9d9..940f4473 100644 --- a/cmd/cloudflared/tunnel/cmd.go +++ b/cmd/cloudflared/tunnel/cmd.go @@ -395,7 +395,7 @@ func StartServer( hostname, metricsListener.Addr().String(), // TODO (TUN-3461): Update UI to show multiple origin URLs - tunnelConfig.IngressRules.CatchAll().Service.String(), + &tunnelConfig.IngressRules, tunnelConfig.HAConnections, ) logLevels, err := logger.ParseLevelString(c.String("loglevel")) diff --git a/cmd/cloudflared/ui/launch_ui.go b/cmd/cloudflared/ui/launch_ui.go index 6fbbe0fb..bd96257b 100644 --- a/cmd/cloudflared/ui/launch_ui.go +++ b/cmd/cloudflared/ui/launch_ui.go @@ -3,8 +3,10 @@ package ui import ( "context" "fmt" + "strings" "time" + "github.com/cloudflare/cloudflared/ingress" "github.com/cloudflare/cloudflared/logger" "github.com/gdamore/tcell" @@ -34,11 +36,11 @@ type TunnelEvent struct { } type uiModel struct { - version string - edgeURL string - metricsURL string - proxyURL string - connections []connState + version string + edgeURL string + metricsURL string + localServices []string + connections []connState } type palette struct { @@ -49,13 +51,17 @@ type palette struct { reconnecting string } -func NewUIModel(version, hostname, metricsURL, proxyURL string, haConnections int) *uiModel { +func NewUIModel(version, hostname, metricsURL string, ing *ingress.Ingress, haConnections int) *uiModel { + localServices := make([]string, len(ing.Rules)) + for i, rule := range ing.Rules { + localServices[i] = rule.Service.String() + } return &uiModel{ - version: version, - edgeURL: hostname, - metricsURL: metricsURL, - proxyURL: proxyURL, - connections: make([]connState, haConnections), + version: version, + edgeURL: hostname, + metricsURL: metricsURL, + localServices: localServices, + connections: make([]connState, haConnections), } } @@ -107,7 +113,8 @@ func (data *uiModel) LaunchUI( tunnelHostText := tview.NewTextView().SetText(data.edgeURL) grid.AddItem(tunnelHostText, 0, 1, 1, 1, 0, 0, false) - grid.AddItem(NewDynamicColorTextView().SetText(fmt.Sprintf("[%s]\u2022[%s] Proxying to [%s::b]%s", palette.connected, palette.defaultText, palette.url, data.proxyURL)), 1, 1, 1, 1, 0, 0, false) + status := fmt.Sprintf("[%s]\u2022[%s] Proxying to [%s::b]%s", palette.connected, palette.defaultText, palette.url, strings.Join(data.localServices, ", ")) + grid.AddItem(NewDynamicColorTextView().SetText(status), 1, 1, 1, 1, 0, 0, false) grid.AddItem(connTable, 2, 1, 1, 1, 0, 0, false) diff --git a/ingress/ingress.go b/ingress/ingress.go index 86549a24..a8f71e71 100644 --- a/ingress/ingress.go +++ b/ingress/ingress.go @@ -114,13 +114,12 @@ func (ing Ingress) IsEmpty() bool { } // StartOrigins will start any origin services managed by cloudflared, e.g. proxy servers or Hello World. -func (ing Ingress) StartOrigins(wg *sync.WaitGroup, log logger.Service, shutdownC <-chan struct{}, errC chan error) error { +func (ing Ingress) StartOrigins(wg *sync.WaitGroup, log logger.Service, shutdownC <-chan struct{}, errC chan error) { for _, rule := range ing.Rules { if err := rule.Service.start(wg, log, shutdownC, errC, rule.Config); err != nil { - return err + log.Errorf("Error starting local service %s: %s", rule.Service, err) } } - return nil } // CatchAll returns the catch-all rule (i.e. the last rule)