healthcheck disabled by default, except in docker image

This commit is contained in:
paspo
2026-07-11 00:05:44 +02:00
parent bff5ed3f7b
commit db2a1b1372
3 changed files with 17 additions and 17 deletions
+1 -1
View File
@@ -19,4 +19,4 @@ HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
CMD ["/endlessh", "-healthcheck"] CMD ["/endlessh", "-healthcheck"]
USER nobody USER nobody
ENTRYPOINT ["/endlessh"] ENTRYPOINT ["/endlessh"]
CMD ["-logtostderr", "-v=1"] CMD ["-logtostderr", "-v=1", "-enable_healthcheck"]
+2 -4
View File
@@ -46,7 +46,6 @@ func TestEndlesshIntegration_MultiplePorts(t *testing.T) {
args := []string{"run", "main.go", args := []string{"run", "main.go",
"-interval_ms=100", "-interval_ms=100",
"-max_clients=10", "-max_clients=10",
"-healthcheck_port=0",
"-logtostderr", "-logtostderr",
"-v=1", "-v=1",
} }
@@ -89,7 +88,7 @@ func TestEndlesshIntegration_MultiplePorts(t *testing.T) {
func TestEndlesshIntegration_TarpitBehavior(t *testing.T) { func TestEndlesshIntegration_TarpitBehavior(t *testing.T) {
var stderr bytes.Buffer 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 cmd.Stderr = &stderr
if err := cmd.Start(); err != nil { if err := cmd.Start(); err != nil {
t.Fatalf("Failed to start server: %v", err) t.Fatalf("Failed to start server: %v", err)
@@ -145,7 +144,7 @@ func TestEndlesshIntegration_TarpitBehavior(t *testing.T) {
func TestEndlesshIntegration_Concurrency(t *testing.T) { func TestEndlesshIntegration_Concurrency(t *testing.T) {
maxClients := 5 maxClients := 5
var stderr bytes.Buffer 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 cmd.Stderr = &stderr
if err := cmd.Start(); err != nil { if err := cmd.Start(); err != nil {
@@ -264,7 +263,6 @@ func TestEndlesshIntegration_PrometheusMetrics(t *testing.T) {
cmd := exec.Command( cmd := exec.Command(
"go", "run", "main.go", "go", "run", "main.go",
"-port=0", "-port=0",
"-healthcheck_port=0",
"-enable_prometheus", "-enable_prometheus",
"-prometheus_port=0", "-prometheus_port=0",
"-interval_ms=100", "-interval_ms=100",
+14 -12
View File
@@ -138,6 +138,7 @@ func main() {
connHost := flag.String("host", "0.0.0.0", "SSH listening address") 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)) 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") 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") prometheusHost := flag.String("prometheus_host", "0.0.0.0", "The address for prometheus")
prometheusPort := flag.String("prometheus_port", "2112", "The port for prometheus") prometheusPort := flag.String("prometheus_port", "2112", "The port for prometheus")
prometheusEntry := flag.String("prometheus_entry", "metrics", "Entry point for prometheus") prometheusEntry := flag.String("prometheus_entry", "metrics", "Entry point for prometheus")
@@ -156,10 +157,6 @@ func main() {
} }
flag.Parse() flag.Parse()
if *connType == "tcp6" && *healthcheckHost == "0.0.0.0" {
*healthcheckHost = "[::]"
}
if *healthcheck { if *healthcheck {
if !health.Probe(*healthcheckHost, *healthcheckPort) { if !health.Probe(*healthcheckHost, *healthcheckPort) {
os.Exit(1) os.Exit(1)
@@ -190,16 +187,21 @@ func main() {
}) })
clients := startSending(*maxClients, *bannerMaxLength, records) clients := startSending(*maxClients, *bannerMaxLength, records)
if *healthcheckPort == "0" || *healthcheckPort == "" { if *healthcheckEnabled {
l, err := net.Listen("tcp", *healthcheckHost+":0") if *connType == "tcp6" && *healthcheckHost == "0.0.0.0" {
if err != nil { *healthcheckHost = "[::]"
glog.Fatalf("Failed to pick a free healthcheck port: %v", err)
} }
actualPort := l.Addr().(*net.TCPAddr).Port if *healthcheckPort == "0" || *healthcheckPort == "" {
*healthcheckPort = strconv.Itoa(actualPort) l, err := net.Listen("tcp", *healthcheckHost+":0")
l.Close() 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 interval := time.Duration(*intervalMs) * time.Millisecond
// Listen for incoming connections. // Listen for incoming connections.