From 1705d1e32d91429b21f4cc5399e507dfa073f5ba Mon Sep 17 00:00:00 2001 From: cclohmar Date: Tue, 7 Jul 2026 18:06:14 +0100 Subject: [PATCH] fix: 60s lego timeout, stop on first failure, fall back to self-signed --- tools/nextwks-tool/main.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/nextwks-tool/main.go b/tools/nextwks-tool/main.go index f1a6247..6277781 100644 --- a/tools/nextwks-tool/main.go +++ b/tools/nextwks-tool/main.go @@ -1,6 +1,7 @@ package main import ( + "context" "crypto/rand" "crypto/rsa" "crypto/x509" @@ -176,12 +177,15 @@ func obtainCertsLego(domains []string, email, backupDir, legoDir, legoPath strin "-d", domain, } - cmd := exec.Command(legoPath, args...) + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + defer cancel() + cmd := exec.CommandContext(ctx, legoPath, args...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { log.Printf(" [WARN] lego failed for %s: %v", domain, err) - continue + // Don't try remaining domains — caller will generate self-signed fallbacks + return fmt.Errorf("lego failed for %s: %w", domain, err) } // Small delay so port 80 is released between runs