@@ -2,7 +2,6 @@ package main
22
33import (
44 "encoding/json"
5- "errors"
65 "fmt"
76 "io"
87 "log/slog"
@@ -11,7 +10,6 @@ import (
1110 "net/http"
1211 "os"
1312 "os/exec"
14- "path/filepath"
1513 "strings"
1614 "sync"
1715 "time"
@@ -54,12 +52,6 @@ func main() {
5452 fmt .Printf ("Generating %d IPs\n " , numIPs )
5553 ips := generateUniquePublicIPs (numIPs )
5654
57- statePath , err := prepareStateFile (0o777 , 0o666 )
58- if err != nil {
59- slog .Error ("Failed to prepare state file" , "statePath" , statePath , "err" , err )
60- os .Exit (1 )
61- }
62-
6355 fmt .Println ("Bringing traefik/nginx online" )
6456 runCommand ("docker" , "compose" , "up" , "-d" )
6557 waitForService ("http://localhost" )
@@ -68,12 +60,7 @@ func main() {
6860
6961 fmt .Printf ("Making sure %d attempt(s) pass\n " , rateLimit )
7062 runParallelChecks (ips , rateLimit , "http://localhost" )
71-
72- statePath , err = waitForStateFile (30 * time .Second )
73- if err != nil {
74- slog .Error ("State file was not created in time" , "err" , err )
75- os .Exit (1 )
76- }
63+ statePath := "./tmp/state.json"
7764 runCommand ("jq" , "." , statePath )
7865
7966 fmt .Printf ("Making sure attempt #%d causes a redirect to the challenge page\n " , rateLimit + 1 )
@@ -160,7 +147,7 @@ func runParallelChecks(ips []string, rateLimit int, url string) {
160147 var wg sync.WaitGroup
161148 sem := make (chan struct {}, parallelism )
162149
163- for i := 0 ; i < rateLimit ; i ++ {
150+ for range rateLimit {
164151 for _ , ip := range ips {
165152 wg .Add (1 )
166153 sem <- struct {}{}
@@ -476,49 +463,3 @@ func firstUsableIPv4FromCIDRs(cidrs []string) (string, error) {
476463
477464 return "" , fmt .Errorf ("no usable IPv4 found in CIDR list" )
478465}
479-
480- func waitForStateFile (timeout time.Duration ) (string , error ) {
481- paths := []string {
482- filepath .Join ("tmp" , "state.json" ),
483- filepath .Join ("ci" , "tmp" , "state.json" ),
484- }
485-
486- deadline := time .Now ().Add (timeout )
487- for time .Now ().Before (deadline ) {
488- for _ , p := range paths {
489- info , err := os .Stat (p )
490- if err == nil && ! info .IsDir () {
491- return p , nil
492- }
493- if err != nil && ! errors .Is (err , os .ErrNotExist ) {
494- return "" , fmt .Errorf ("failed to stat %s: %w" , p , err )
495- }
496- }
497- time .Sleep (500 * time .Millisecond )
498- }
499-
500- return "" , fmt .Errorf ("state file not found; checked: %s" , strings .Join (paths , ", " ))
501- }
502-
503- func prepareStateFile (dirMode , fileMode os.FileMode ) (string , error ) {
504- p := filepath .Join ("tmp" , "state.json" )
505-
506- dir := filepath .Dir (p )
507- if err := os .MkdirAll (dir , dirMode ); err != nil {
508- return "" , fmt .Errorf ("failed to create state dir %s: %w" , dir , err )
509- }
510- if err := os .Chmod (dir , dirMode ); err != nil {
511- return "" , fmt .Errorf ("failed to chmod state dir %s: %w" , dir , err )
512- }
513-
514- f , err := os .OpenFile (p , os .O_CREATE | os .O_RDWR , fileMode )
515- if err != nil {
516- return "" , fmt .Errorf ("failed to open state file %s: %w" , p , err )
517- }
518- _ = f .Close ()
519- if err := os .Chmod (p , fileMode ); err != nil {
520- return "" , fmt .Errorf ("failed to chmod state file %s: %w" , p , err )
521- }
522-
523- return p , nil
524- }
0 commit comments