From db2a1b137233cbd7a90ba88b10e0f4452da0c6a6 Mon Sep 17 00:00:00 2001 From: paspo Date: Sat, 11 Jul 2026 00:05:44 +0200 Subject: [PATCH] healthcheck disabled by default, except in docker image --- Dockerfile | 2 +- endlessh_integration_test.go | 6 ++---- main.go | 26 ++++++++++++++------------ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7ff3af7..6450ecf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,4 +19,4 @@ HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ CMD ["/endlessh", "-healthcheck"] USER nobody ENTRYPOINT ["/endlessh"] -CMD ["-logtostderr", "-v=1"] +CMD ["-logtostderr", "-v=1", "-enable_healthcheck"] diff --git a/endlessh_integration_test.go b/endlessh_integration_test.go index 577359c..c177c96 100644 --- a/endlessh_integration_test.go +++ b/endlessh_integration_test.go @@ -46,7 +46,6 @@ func TestEndlesshIntegration_MultiplePorts(t *testing.T) { args := []string{"run", "main.go", "-interval_ms=100", "-max_clients=10", - "-healthcheck_port=0", "-logtostderr", "-v=1", } @@ -89,7 +88,7 @@ func TestEndlesshIntegration_MultiplePorts(t *testing.T) { func TestEndlesshIntegration_TarpitBehavior(t *testing.T) { var stderr bytes.Buffer - cmd := exec.Command("go", "run", "main.go", "-port=0", "-healthcheck_port=0", "-interval_ms=5000", "-max_clients=10", "-logtostderr", "-v=1") + cmd := exec.Command("go", "run", "main.go", "-port=0", "-interval_ms=5000", "-max_clients=10", "-logtostderr", "-v=1") cmd.Stderr = &stderr if err := cmd.Start(); err != nil { t.Fatalf("Failed to start server: %v", err) @@ -145,7 +144,7 @@ func TestEndlesshIntegration_TarpitBehavior(t *testing.T) { func TestEndlesshIntegration_Concurrency(t *testing.T) { maxClients := 5 var stderr bytes.Buffer - cmd := exec.Command("go", "run", "main.go", "-port=0", "-healthcheck_port=0", "-interval_ms=1000", fmt.Sprintf("-max_clients=%d", maxClients), "-logtostderr", "-v=1") + cmd := exec.Command("go", "run", "main.go", "-port=0", "-interval_ms=1000", fmt.Sprintf("-max_clients=%d", maxClients), "-logtostderr", "-v=1") cmd.Stderr = &stderr if err := cmd.Start(); err != nil { @@ -264,7 +263,6 @@ func TestEndlesshIntegration_PrometheusMetrics(t *testing.T) { cmd := exec.Command( "go", "run", "main.go", "-port=0", - "-healthcheck_port=0", "-enable_prometheus", "-prometheus_port=0", "-interval_ms=100", diff --git a/main.go b/main.go index 47e0e0e..9392536 100644 --- a/main.go +++ b/main.go @@ -138,6 +138,7 @@ func main() { connHost := flag.String("host", "0.0.0.0", "SSH listening address") flag.Var(&connPorts, "port", fmt.Sprintf("SSH listening port. You may provide multiple -port flags to listen to multiple ports. (default %q)", defaultPort)) prometheusEnabled := flag.Bool("enable_prometheus", false, "Enable prometheus") + healthcheckEnabled := flag.Bool("enable_healthcheck", false, "Enable healthcheck") prometheusHost := flag.String("prometheus_host", "0.0.0.0", "The address for prometheus") prometheusPort := flag.String("prometheus_port", "2112", "The port for prometheus") prometheusEntry := flag.String("prometheus_entry", "metrics", "Entry point for prometheus") @@ -156,10 +157,6 @@ func main() { } flag.Parse() - if *connType == "tcp6" && *healthcheckHost == "0.0.0.0" { - *healthcheckHost = "[::]" - } - if *healthcheck { if !health.Probe(*healthcheckHost, *healthcheckPort) { os.Exit(1) @@ -190,16 +187,21 @@ func main() { }) clients := startSending(*maxClients, *bannerMaxLength, records) - if *healthcheckPort == "0" || *healthcheckPort == "" { - l, err := net.Listen("tcp", *healthcheckHost+":0") - if err != nil { - glog.Fatalf("Failed to pick a free healthcheck port: %v", err) + if *healthcheckEnabled { + if *connType == "tcp6" && *healthcheckHost == "0.0.0.0" { + *healthcheckHost = "[::]" } - actualPort := l.Addr().(*net.TCPAddr).Port - *healthcheckPort = strconv.Itoa(actualPort) - l.Close() + if *healthcheckPort == "0" || *healthcheckPort == "" { + l, err := net.Listen("tcp", *healthcheckHost+":0") + if err != nil { + glog.Fatalf("Failed to pick a free healthcheck port: %v", err) + } + actualPort := l.Addr().(*net.TCPAddr).Port + *healthcheckPort = strconv.Itoa(actualPort) + l.Close() + } + health.StartListener(*healthcheckHost, *healthcheckPort) } - health.StartListener(*healthcheckHost, *healthcheckPort) interval := time.Duration(*intervalMs) * time.Millisecond // Listen for incoming connections.