4
4
package main
5
5
6
6
import (
7
- "errors"
8
7
"flag"
9
- "net"
10
8
"os"
11
9
"os/user"
12
10
"path/filepath"
@@ -16,9 +14,9 @@ import (
16
14
"time"
17
15
18
16
log "github.com/Sirupsen/logrus"
19
- "github.com/itsjamie/gin-cors"
20
17
"github.com/carlescere/scheduler"
21
18
"github.com/gin-gonic/gin"
19
+ "github.com/itsjamie/gin-cors"
22
20
"github.com/kardianos/osext"
23
21
"github.com/vharitonsky/iniflags"
24
22
//"github.com/sanbornm/go-selfupdate/selfupdate" #included in update.go to change heavily
@@ -77,21 +75,6 @@ func launchSelfLater() {
77
75
log .Println ("Done waiting 2 secs. Now launching..." )
78
76
}
79
77
80
- // getBindPort returns the first bindable port in the given range
81
- func getBindPort (minPort , maxPort int ) (int , error ) {
82
-
83
- for i := minPort ; i < maxPort ; i ++ {
84
- ln , _ := net .Listen ("tcp" , ":" + strconv .Itoa (i ))
85
- if ln != nil {
86
- ln .Close ()
87
- return i , nil
88
- }
89
- }
90
-
91
- return - 1 , errors .New ("Unable to bind any port in the range [" + strconv .Itoa (minPort ) + "," + strconv .Itoa (maxPort ) + ")" )
92
-
93
- }
94
-
95
78
func main () {
96
79
97
80
flag .Parse ()
@@ -232,22 +215,11 @@ func main() {
232
215
233
216
socketHandler := wsHandler ().ServeHTTP
234
217
235
- portPlain , err := getBindPort (8990 , 9001 )
236
- if err != nil {
237
- panic (err )
238
- }
239
- // All the ports p in the range 8990 <= p <= portPlain
240
- // has already been scanned and results not free.
241
- // Thus we can restrict the search range for portSSL
242
- // to [portPlain+1, 9001).
243
- portSSL , err := getBindPort (portPlain + 1 , 9001 )
244
- if err != nil {
245
- panic (err )
246
- }
247
-
248
218
extraOriginStr := "https://create.arduino.cc, http://create.arduino.cc, https://create-dev.arduino.cc, http://create-dev.arduino.cc, http://create-staging.arduino.cc, https://create-staging.arduino.cc"
249
- extraOriginStr += ", http://localhost:" + strconv .Itoa (portPlain ) + ", https://localhost:" + strconv .Itoa (portPlain )
250
- extraOriginStr += ", http://localhost:" + strconv .Itoa (portSSL ) + ", https://localhost:" + strconv .Itoa (portSSL )
219
+
220
+ for i := 8990 ; i < 9001 ; i ++ {
221
+ extraOriginStr = extraOriginStr + ", http://localhost:" + strconv .Itoa (i ) + ", https://localhost:" + strconv .Itoa (i )
222
+ }
251
223
252
224
r .Use (cors .Middleware (cors.Config {
253
225
Origins : * origins + ", " + extraOriginStr ,
@@ -275,23 +247,38 @@ func main() {
275
247
return
276
248
}
277
249
278
- portStr := ":" + strconv .Itoa (portSSL )
279
- if err := r .RunTLS (portStr , filepath .Join (dest , "cert.pem" ), filepath .Join (dest , "key.pem" )); err != nil {
280
- log .Printf ("Error trying to bind to port: %v, so exiting..." , err )
281
- } else {
282
- ip := "0.0.0.0"
283
- log .Print ("Starting server and websocket (SSL) on " + ip + "" + port )
250
+ start := 8990
251
+ end := 9000
252
+ i := start
253
+ for i < end {
254
+ i = i + 1
255
+ portSSL = ":" + strconv .Itoa (i )
256
+ if err := r .RunTLS (portSSL , filepath .Join (dest , "cert.pem" ), filepath .Join (dest , "key.pem" )); err != nil {
257
+ log .Printf ("Error trying to bind to port: %v, so exiting..." , err )
258
+ continue
259
+ } else {
260
+ ip := "0.0.0.0"
261
+ log .Print ("Starting server and websocket (SSL) on " + ip + "" + port )
262
+ break
263
+ }
284
264
}
285
265
}()
286
266
287
267
go func () {
288
-
289
- portStr := ":" + strconv .Itoa (portPlain )
290
- if err := r .Run (portStr ); err != nil {
291
- log .Printf ("Error trying to bind to port: %v, so exiting..." , err )
292
- } else {
293
- ip := "0.0.0.0"
294
- log .Print ("Starting server and websocket on " + ip + "" + port )
268
+ start := 8990
269
+ end := 9000
270
+ i := start
271
+ for i < end {
272
+ i = i + 1
273
+ port = ":" + strconv .Itoa (i )
274
+ if err := r .Run (port ); err != nil {
275
+ log .Printf ("Error trying to bind to port: %v, so exiting..." , err )
276
+ continue
277
+ } else {
278
+ ip := "0.0.0.0"
279
+ log .Print ("Starting server and websocket on " + ip + "" + port )
280
+ break
281
+ }
295
282
}
296
283
}()
297
284
0 commit comments