Skip to content

Commit 8371ddc

Browse files
committed
Assume port 80 if no port is set in address
1 parent aae842d commit 8371ddc

File tree

2 files changed

+26
-40
lines changed

2 files changed

+26
-40
lines changed

client/nginx.go

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const pathNotFoundCode = "PathNotFound"
1818

1919
const streamContext = true
2020
const httpContext = false
21+
const defaultServerPort = "80"
2122

2223
// NginxClient lets you access NGINX Plus API.
2324
type NginxClient struct {
@@ -504,6 +505,7 @@ func (client *NginxClient) GetHTTPServers(upstream string) ([]UpstreamServer, er
504505

505506
// AddHTTPServer adds the server to the upstream.
506507
func (client *NginxClient) AddHTTPServer(upstream string, server UpstreamServer) error {
508+
server.Server = addPortToServer(server.Server)
507509
id, err := client.getIDOfHTTPServer(upstream, server.Server)
508510
if err != nil {
509511
return fmt.Errorf("failed to add %v server to %v upstream: %v", server.Server, upstream, err)
@@ -523,6 +525,7 @@ func (client *NginxClient) AddHTTPServer(upstream string, server UpstreamServer)
523525

524526
// DeleteHTTPServer the server from the upstream.
525527
func (client *NginxClient) DeleteHTTPServer(upstream string, server string) error {
528+
server = addPortToServer(server)
526529
id, err := client.getIDOfHTTPServer(upstream, server)
527530
if err != nil {
528531
return fmt.Errorf("failed to remove %v server from %v upstream: %v", server, upstream, err)
@@ -752,6 +755,7 @@ func (client *NginxClient) GetStreamServers(upstream string) ([]StreamUpstreamSe
752755

753756
// AddStreamServer adds the stream server to the upstream.
754757
func (client *NginxClient) AddStreamServer(upstream string, server StreamUpstreamServer) error {
758+
server.Server = addPortToServer(server.Server)
755759
id, err := client.getIDOfStreamServer(upstream, server.Server)
756760
if err != nil {
757761
return fmt.Errorf("failed to add %v stream server to %v upstream: %v", server.Server, upstream, err)
@@ -770,6 +774,7 @@ func (client *NginxClient) AddStreamServer(upstream string, server StreamUpstrea
770774

771775
// DeleteStreamServer the server from the upstream.
772776
func (client *NginxClient) DeleteStreamServer(upstream string, server string) error {
777+
server = addPortToServer(server)
773778
id, err := client.getIDOfStreamServer(upstream, server)
774779
if err != nil {
775780
return fmt.Errorf("failed to remove %v stream server from %v upstream: %v", server, upstream, err)
@@ -1249,10 +1254,7 @@ func (client *NginxClient) deleteKeyValPairs(zone string, stream bool) error {
12491254

12501255
// UpdateHTTPServer updates the server of the upstream.
12511256
func (client *NginxClient) UpdateHTTPServer(upstream string, server UpstreamServer) error {
1252-
if !isValidAddress(server.Server) {
1253-
return fmt.Errorf("failed to update %v server to %v upstream: server must include address and port or be a unix socket", server.Server, upstream)
1254-
}
1255-
1257+
server.Server = addPortToServer(server.Server)
12561258
path := fmt.Sprintf("http/upstreams/%v/servers/%v", upstream, server.ID)
12571259
server.ID = 0
12581260
err := client.patch(path, &server, http.StatusOK)
@@ -1265,10 +1267,7 @@ func (client *NginxClient) UpdateHTTPServer(upstream string, server UpstreamServ
12651267

12661268
// UpdateStreamServer updates the stream server of the upstream.
12671269
func (client *NginxClient) UpdateStreamServer(upstream string, server StreamUpstreamServer) error {
1268-
if !isValidAddress(server.Server) {
1269-
return fmt.Errorf("failed to update %v stream server to %v upstream: server must include address and port or be a unix socket", server.Server, upstream)
1270-
}
1271-
1270+
server.Server = addPortToServer(server.Server)
12721271
path := fmt.Sprintf("stream/upstreams/%v/servers/%v", upstream, server.ID)
12731272
server.ID = 0
12741273
err := client.patch(path, &server, http.StatusOK)
@@ -1279,21 +1278,18 @@ func (client *NginxClient) UpdateStreamServer(upstream string, server StreamUpst
12791278
return nil
12801279
}
12811280

1282-
func isValidAddress(server string) bool {
1283-
// ipv4 and port
1281+
func addPortToServer(server string) string {
12841282
if len(strings.Split(server, ":")) == 2 {
1285-
return true
1283+
return server
12861284
}
12871285

1288-
// ipv6 and port
12891286
if len(strings.Split(server, "]:")) == 2 {
1290-
return true
1287+
return server
12911288
}
12921289

1293-
// unix socket
12941290
if strings.HasPrefix(server, "unix:") {
1295-
return true
1291+
return server
12961292
}
12971293

1298-
return false
1294+
return fmt.Sprintf("%v:%v", server, defaultServerPort)
12991295
}

client/nginx_test.go

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -408,64 +408,54 @@ func TestFillStreamUpstreamServerWithDefaultValues(t *testing.T) {
408408
}
409409
}
410410

411-
func TestIsValidAddress(t *testing.T) {
411+
func TestAddPortToServer(t *testing.T) {
412412
// More info about addresses http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server
413413
var tests = []struct {
414414
address string
415-
expected bool
415+
expected string
416416
msg string
417417
}{
418418
{
419-
address: "example.com:80",
420-
expected: true,
419+
address: "example.com:8080",
420+
expected: "example.com:8080",
421421
msg: "host and port",
422422
},
423423
{
424-
address: "127.0.0.1:80",
425-
expected: true,
424+
address: "127.0.0.1:8080",
425+
expected: "127.0.0.1:8080",
426426
msg: "ipv4 and port",
427427
},
428428
{
429-
address: "[::]:80",
430-
expected: true,
429+
address: "[::]:8080",
430+
expected: "[::]:8080",
431431
msg: "ipv6 and port",
432432
},
433433
{
434434
address: "unix:/path/to/socket",
435-
expected: true,
435+
expected: "unix:/path/to/socket",
436436
msg: "unix socket",
437437
},
438-
{
439-
address: "",
440-
expected: false,
441-
msg: "empty string",
442-
},
443438
{
444439
address: "example.com",
445-
expected: false,
440+
expected: "example.com:80",
446441
msg: "host without port",
447442
},
448443
{
449444
address: "127.0.0.1",
450-
expected: false,
445+
expected: "127.0.0.1:80",
451446
msg: "ipv4 without port",
452447
},
453448
{
454449
address: "[::]",
455-
expected: false,
450+
expected: "[::]:80",
456451
msg: "ipv6 without port",
457452
},
458-
{
459-
address: "invalid",
460-
expected: false,
461-
msg: "invalid address",
462-
},
463453
}
464454

465455
for _, test := range tests {
466-
result := isValidAddress(test.address)
456+
result := addPortToServer(test.address)
467457
if result != test.expected {
468-
t.Errorf("isValidAddress(%v) returned %v but expected %v for %v", test.address, result, test.expected, test.msg)
458+
t.Errorf("addPortToServer(%v) returned %v but expected %v for %v", test.address, result, test.expected, test.msg)
469459
}
470460
}
471461
}

0 commit comments

Comments
 (0)