From eaa651ca380922a74bcbea09cd0893e0cf6696fa Mon Sep 17 00:00:00 2001 From: Steven Martin Date: Tue, 9 May 2023 09:52:55 -0400 Subject: [PATCH] check for correct kube and ssh listen address in starting message (#25780) * check for correct kube listen address in starting message * fix for ssh proxy and usage of String function * remove consolef output and simplify output * remove consolef output * Remove consolef from services for startup * fix imports * remove all consolef usage --- lib/service/desktop.go | 6 ------ lib/service/kubernetes.go | 7 ------- lib/service/service.go | 27 +++++++++++---------------- lib/utils/cli.go | 16 ---------------- lib/utils/cli_test.go | 13 ------------- tool/tctl/common/tctl.go | 5 ++--- 6 files changed, 13 insertions(+), 61 deletions(-) diff --git a/lib/service/desktop.go b/lib/service/desktop.go index e184f1773fd..b621c45a6fb 100644 --- a/lib/service/desktop.go +++ b/lib/service/desktop.go @@ -243,14 +243,8 @@ func (process *TeleportProcess) initWindowsDesktopServiceRegistered(log *logrus. process.RegisterCriticalFunc("windows_desktop.serve", func() error { if useTunnel { log.Info("Starting Windows desktop service via proxy reverse tunnel.") - utils.Consolef(cfg.Console, log, teleport.ComponentWindowsDesktop, - "Windows desktop service %s:%s is starting via proxy reverse tunnel.", - teleport.Version, teleport.Gitref) } else { log.Infof("Starting Windows desktop service on %v.", listener.Addr()) - utils.Consolef(cfg.Console, log, teleport.ComponentWindowsDesktop, - "Windows desktop service %s:%s is starting on %v.", - teleport.Version, teleport.Gitref, listener.Addr()) } process.BroadcastEvent(Event{Name: WindowsDesktopReady, Payload: nil}) err := srv.Serve(listener) diff --git a/lib/service/kubernetes.go b/lib/service/kubernetes.go index a43a3335ab2..b3a4419cd53 100644 --- a/lib/service/kubernetes.go +++ b/lib/service/kubernetes.go @@ -32,7 +32,6 @@ import ( "github.com/gravitational/teleport/lib/labels" "github.com/gravitational/teleport/lib/reversetunnel" "github.com/gravitational/teleport/lib/services" - "github.com/gravitational/teleport/lib/utils" ) func (process *TeleportProcess) initKubernetes() { @@ -261,14 +260,8 @@ func (process *TeleportProcess) initKubernetesService(log *logrus.Entry, conn *C process.RegisterCriticalFunc("kube.serve", func() error { if conn.UseTunnel() { log.Info("Starting Kube service via proxy reverse tunnel.") - utils.Consolef(cfg.Console, log, teleport.ComponentKube, - "Kubernetes service %s:%s is starting via proxy reverse tunnel.", - teleport.Version, teleport.Gitref) } else { log.Infof("Starting Kube service on %v.", listener.Addr()) - utils.Consolef(cfg.Console, log, teleport.ComponentKube, - "Kubernetes service %s:%s is starting on %v.", - teleport.Version, teleport.Gitref, listener.Addr()) } process.BroadcastEvent(Event{Name: KubernetesReady, Payload: nil}) err := kubeServer.Serve(listener) diff --git a/lib/service/service.go b/lib/service/service.go index 261ff5b060a..5ab97f1d2ae 100644 --- a/lib/service/service.go +++ b/lib/service/service.go @@ -1794,8 +1794,7 @@ func (process *TeleportProcess) initAuthService() error { return trace.Wrap(err) } process.RegisterCriticalFunc("auth.tls", func() error { - utils.Consolef(cfg.Console, log, teleport.ComponentAuth, "Auth service %s:%s is starting on %v.", - teleport.Version, teleport.Gitref, authAddr) + log.Infof("Auth service %s:%s is starting on %v.", teleport.Version, teleport.Gitref, authAddr) // since tlsServer.Serve is a blocking call, we emit this even right before // the service has started @@ -2471,8 +2470,6 @@ func (process *TeleportProcess) initSSH() error { warnOnErr(process.closeImportedDescriptors(teleport.ComponentNode), log) log.Infof("Service %s:%s is starting on %v %v.", teleport.Version, teleport.Gitref, cfg.SSH.Addr.Addr, process.Config.CachePolicy) - utils.Consolef(cfg.Console, log, teleport.ComponentNode, "Service %s:%s is starting on %v.", - teleport.Version, teleport.Gitref, cfg.SSH.Addr.Addr) go s.Serve(limiter.WrapListener(listener)) } else { @@ -3630,8 +3627,6 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { return trace.Wrap(err) } process.RegisterCriticalFunc("proxy.reversetunnel.server", func() error { - utils.Consolef(cfg.Console, log, teleport.ComponentProxy, "Reverse tunnel service %s:%s is starting on %v.", - teleport.Version, teleport.Gitref, cfg.Proxy.ReverseTunnelListenAddr.Addr) log.Infof("Starting %s:%s on %v using %v", teleport.Version, teleport.Gitref, cfg.Proxy.ReverseTunnelListenAddr.Addr, process.Config.CachePolicy) if err := tsrv.Start(); err != nil { log.Error(err) @@ -3800,8 +3795,6 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { } process.RegisterCriticalFunc("proxy.web", func() error { - utils.Consolef(cfg.Console, log, teleport.ComponentProxy, "Web proxy service %s:%s is starting on %v.", - teleport.Version, teleport.Gitref, cfg.Proxy.WebAddr.Addr) log.Infof("Web proxy service %s:%s is starting on %v.", teleport.Version, teleport.Gitref, cfg.Proxy.WebAddr.Addr) defer webHandler.Close() process.BroadcastEvent(Event{Name: ProxyWebServerReady, Payload: webHandler}) @@ -3988,9 +3981,11 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { transportpb.RegisterTransportServiceServer(sshGRPCServer, transportService) process.RegisterCriticalFunc("proxy.ssh", func() error { - utils.Consolef(cfg.Console, log, teleport.ComponentProxy, "SSH proxy service %s:%s is starting on %v.", - teleport.Version, teleport.Gitref, cfg.Proxy.SSHAddr.Addr) - log.Infof("SSH proxy service %s:%s is starting on %v", teleport.Version, teleport.Gitref, cfg.Proxy.SSHAddr) + sshListenerAddr := listeners.ssh.Addr().String() + if cfg.Proxy.SSHAddr.Addr != "" { + sshListenerAddr = cfg.Proxy.SSHAddr.Addr + } + log.Infof("SSH proxy service %s:%s is starting on %v", teleport.Version, teleport.Gitref, sshListenerAddr) // start ssh server go func() { @@ -4124,7 +4119,11 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { trace.Component: component, }) - log.Infof("Starting Kube proxy on %v.", cfg.Proxy.Kube.ListenAddr.Addr) + kubeListenAddr := listeners.kube.Addr().String() + if cfg.Proxy.Kube.ListenAddr.Addr != "" { + kubeListenAddr = cfg.Proxy.Kube.ListenAddr.Addr + } + log.Infof("Starting Kube proxy on %v.", kubeListenAddr) err := kubeServer.Serve(listeners.kube) if err != nil && err != http.ErrServerClosed { log.Warningf("Kube TLS server exited with error: %v.", err) @@ -4465,10 +4464,6 @@ func (process *TeleportProcess) initMinimalReverseTunnel(listeners *proxyListene } process.RegisterCriticalFunc("proxy.reversetunnel.web", func() error { - utils.Consolef( - cfg.Console, log, teleport.ComponentProxy, - "Minimal web proxy service %s:%s is starting on %v.", - teleport.Version, teleport.Gitref, cfg.Proxy.ReverseTunnelListenAddr.Addr) log.Infof("Minimal web proxy service %s:%s is starting on %v.", teleport.Version, teleport.Gitref, cfg.Proxy.ReverseTunnelListenAddr.Addr) defer minimalWebHandler.Close() if err := minimalWebServer.Serve(minimalListener.Web()); err != nil && err != http.ErrServerClosed { diff --git a/lib/utils/cli.go b/lib/utils/cli.go index 06a7023c933..fd2d8f1f69f 100644 --- a/lib/utils/cli.go +++ b/lib/utils/cli.go @@ -24,7 +24,6 @@ import ( "fmt" "io" stdlog "log" - "math" "os" "runtime" "strconv" @@ -279,21 +278,6 @@ func Color(color int, v interface{}) string { return fmt.Sprintf("\x1b[%dm%v\x1b[0m", color, v) } -// Consolef prints the same message to a 'ui console' (if defined) and also to -// the logger with INFO priority -func Consolef(w io.Writer, log logrus.FieldLogger, component, msg string, params ...interface{}) { - msg = fmt.Sprintf(msg, params...) - log.Info(msg) - if w != nil { - component := strings.ToUpper(component) - // 13 is the length of "[KUBERNETES]", which is the longest component - // name prefix we have *today*. Use a Max function here to avoid - // negative spacing, in case we add longer component names. - spacing := int(math.Max(float64(12-len(component)), 0)) - fmt.Fprintf(w, "[%v]%v %v\n", strings.ToUpper(component), strings.Repeat(" ", spacing), msg) - } -} - // InitCLIParser configures kingpin command line args parser with // some defaults common for all Teleport CLI tools func InitCLIParser(appName, appHelp string) (app *kingpin.Application) { diff --git a/lib/utils/cli_test.go b/lib/utils/cli_test.go index 442b2c7187f..69fa3528c11 100644 --- a/lib/utils/cli_test.go +++ b/lib/utils/cli_test.go @@ -19,12 +19,10 @@ package utils import ( "crypto/x509" "fmt" - "io" "strings" "testing" "github.com/gravitational/trace" - "github.com/sirupsen/logrus" "github.com/stretchr/testify/require" ) @@ -60,17 +58,6 @@ func TestUserMessageFromError(t *testing.T) { } } -// Regressions test - Consolef used to panic when component name was longer -// than 8 bytes. -func TestConsolefLongComponent(t *testing.T) { - t.Parallel() - - require.NotPanics(t, func() { - component := strings.Repeat("na ", 10) + "batman!" - Consolef(io.Discard, logrus.New(), component, "test message") - }) -} - // TestEscapeControl tests escape control func TestEscapeControl(t *testing.T) { t.Parallel() diff --git a/tool/tctl/common/tctl.go b/tool/tctl/common/tctl.go index f30312c968e..4adf7d7878a 100644 --- a/tool/tctl/common/tctl.go +++ b/tool/tctl/common/tctl.go @@ -198,9 +198,8 @@ func TryRun(commands []CLICommand, args []string) error { if utils.IsUntrustedCertErr(err) { err = trace.WrapWithMessage(err, utils.SelfSignedCertsMsg) } - utils.Consolef(os.Stderr, log.WithField(trace.Component, teleport.ComponentClient), teleport.ComponentClient, - "Cannot connect to the auth server: %v.\nIs the auth server running on %q?", - err, cfg.AuthServerAddresses()[0].Addr) + log.Errorf("Cannot connect to the auth server. Is the auth server running on %q? %v", + cfg.AuthServerAddresses()[0].Addr, err) return trace.NewAggregate(&common.ExitCodeError{Code: 1}, err) }