File tree Expand file tree Collapse file tree 2 files changed +34
-17
lines changed Expand file tree Collapse file tree 2 files changed +34
-17
lines changed Original file line number Diff line number Diff line change 99 "os"
1010 "os/exec"
1111 "syscall"
12- "time"
1312)
1413
1514// Env contains the structure of the .env file
@@ -90,7 +89,7 @@ func main() {
9089 }
9190
9291 api := NewAPI ()
93- go startWebserver (env , api )
92+ useAddress := startWebserver (env , api )
9493
9594 credentials := []SetCredentialsArg {env .PrimaryServer .toCredArg (true )}
9695 for _ , server := range env .AlternativeServers {
@@ -122,7 +121,7 @@ func main() {
122121 }
123122
124123 scraper := exec .Command (os .Args [1 ], os .Args [2 :]... )
125- scraper .Env = append (os .Environ (), "SCRAPER_ADDRESS=http://localhost:4400" )
124+ scraper .Env = append (os .Environ (), "SCRAPER_ADDRESS=" + useAddress )
126125
127126 // Piple output of scraper to stdout
128127 scraper .Stdin = os .Stdin
@@ -168,14 +167,4 @@ func testServerConnections(api *API) {
168167 log .Fatal ("provided key does not have scraper role (nr 1)" )
169168 }
170169 }
171-
172- referenceNrs := []string {}
173- err := api .connections [api .primaryConnection ].Get ("/api/v1/scraper/scannedReferenceNrs/since/days/30" , & referenceNrs )
174- if err != nil {
175- log .Fatal (err )
176- }
177-
178- for _ , nr := range referenceNrs {
179- api .SetCacheEntry (nr , time .Hour * 72 ) // 3 days
180- }
181170}
Original file line number Diff line number Diff line change @@ -2,13 +2,16 @@ package main
22
33import (
44 "encoding/json"
5+ "fmt"
56 "log"
7+ "net"
8+ "strings"
69 "time"
710
811 "github.com/valyala/fasthttp"
912)
1013
11- func startWebserver (env Env , api * API ) {
14+ func startWebserver (env Env , api * API ) string {
1215 loginUsers , err := json .Marshal (env .LoginUsers )
1316 if err != nil {
1417 log .Fatal (err )
@@ -110,9 +113,34 @@ func startWebserver(env Env, api *API) {
110113 }
111114
112115 s := & fasthttp.Server {Handler : requestHandler }
113- err = s .ListenAndServe ("127.0.0.1:4400" )
114- if err != nil {
115- log .Fatal ("Error in ListenAndServe: " + err .Error ())
116+
117+ portAttempt := 4_000
118+ for {
119+ portAttempt ++
120+ if portAttempt > 6_000 {
121+ // Give up
122+ log .Fatal ("Could not find a free port to start the webserver" )
123+ }
124+
125+ address := fmt .Sprintf ("127.0.0.1:%d" , portAttempt )
126+
127+ l , err := net .Listen ("tcp4" , address )
128+ if err != nil {
129+ if strings .Contains (err .Error (), "address already in use" ) {
130+ // Retry with a diffrent port
131+ continue
132+ }
133+ log .Fatal ("Error in Listen: " + err .Error ())
134+ }
135+
136+ go func () {
137+ err = s .Serve (l )
138+ if err != nil {
139+ log .Fatal ("Error in Serve: " + err .Error ())
140+ }
141+ }()
142+
143+ return "http://" + address
116144 }
117145}
118146
You can’t perform that action at this time.
0 commit comments