mirror of
https://github.com/shizunge/endlessh-go.git
synced 2026-08-07 07:15:02 +00:00
healthcheck disabled by default, except in docker image
This commit is contained in:
+1
-1
@@ -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"]
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user