Skip to content

Commit d31845c

Browse files
committed
Merge branch 'NLB-1784-update-geo' into 'master'
fix: add validation for geo range parameter See merge request f5/nginx/crossplane-go!33
2 parents 3fd0055 + 4bf8d9f commit d31845c

File tree

5 files changed

+50
-33
lines changed

5 files changed

+50
-33
lines changed

parse.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ func analyzeMapContents(fname string, stmt *Directive, term string) error {
443443
Line: &stmt.Line,
444444
}
445445
}
446-
if len(stmt.Args) != 1 {
446+
if len(stmt.Args) != 1 && stmt.Directive != "ranges" {
447447
return &ParseError{
448448
What: "invalid number of parameters",
449449
File: &fname,

parse_test.go

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ var parseFixtures = []parseFixture{
985985
{
986986
File: getTestConfigPath("invalid-map", "nginx.conf"),
987987
Error: &ParseError{
988-
`invalid number of the map parameters`,
988+
`invalid number of parameters`,
989989
pStr(getTestConfigPath("invalid-map", "nginx.conf")),
990990
pInt(10),
991991
nil,
@@ -995,7 +995,7 @@ var parseFixtures = []parseFixture{
995995
{
996996
File: getTestConfigPath("invalid-map", "nginx.conf"),
997997
Error: &ParseError{
998-
`invalid number of the map parameters`,
998+
`invalid number of parameters`,
999999
pStr(getTestConfigPath("invalid-map", "nginx.conf")),
10001000
pInt(14),
10011001
nil,
@@ -1019,7 +1019,7 @@ var parseFixtures = []parseFixture{
10191019
},
10201020
{
10211021
Error: &ParseError{
1022-
`invalid number of the map parameters`,
1022+
`invalid number of parameters`,
10231023
pStr(getTestConfigPath("invalid-map", "nginx.conf")),
10241024
pInt(10),
10251025
nil,
@@ -1028,7 +1028,7 @@ var parseFixtures = []parseFixture{
10281028
},
10291029
{
10301030
Error: &ParseError{
1031-
`invalid number of the map parameters`,
1031+
`invalid number of parameters`,
10321032
pStr(getTestConfigPath("invalid-map", "nginx.conf")),
10331033
pInt(14),
10341034
nil,
@@ -1083,7 +1083,7 @@ var parseFixtures = []parseFixture{
10831083
Status: "ok",
10841084
Config: []Config{
10851085
{
1086-
File: getTestConfigPath("directive-with-space", "nginx.conf"),
1086+
File: getTestConfigPath("geo", "nginx.conf"),
10871087
Status: "ok",
10881088
Parsed: Directives{
10891089
{
@@ -1108,57 +1108,63 @@ var parseFixtures = []parseFixture{
11081108
Args: []string{"$geo"},
11091109
Line: 6,
11101110
Block: Directives{
1111+
{
1112+
Directive: "ranges",
1113+
Args: []string{},
1114+
Line: 7,
1115+
Block: Directives{},
1116+
},
11111117
{
11121118
Directive: "default",
11131119
Args: []string{"0"},
1114-
Line: 7,
1120+
Line: 8,
11151121
Block: Directives{},
11161122
},
11171123
{
11181124
Directive: "192.168.1.0/24",
11191125
Args: []string{"1"},
1120-
Line: 8,
1126+
Line: 9,
11211127
Block: Directives{},
11221128
},
11231129
{
11241130
Directive: "127.0.0.1",
11251131
Args: []string{"2"},
1126-
Line: 9,
1132+
Line: 10,
11271133
Block: Directives{},
11281134
},
11291135
},
11301136
},
11311137
{
11321138
Directive: "server",
11331139
Args: []string{},
1134-
Line: 11,
1140+
Line: 12,
11351141
Block: Directives{
11361142
{
11371143
Directive: "listen",
11381144
Args: []string{"127.0.0.1:8080"},
1139-
Line: 12,
1145+
Line: 13,
11401146
Block: Directives{},
11411147
},
11421148
{
11431149
Directive: "server_name",
11441150
Args: []string{"default_server"},
1145-
Line: 13,
1151+
Line: 14,
11461152
Block: Directives{},
11471153
},
11481154
{
11491155
Directive: "location",
11501156
Args: []string{"/"},
1151-
Line: 14,
1157+
Line: 15,
11521158
Block: Directives{
11531159
{
11541160
Directive: "if",
11551161
Args: []string{"$geo", "=", "2"},
1156-
Line: 15,
1162+
Line: 16,
11571163
Block: Directives{
11581164
{
11591165
Directive: "return",
11601166
Args: []string{"403"},
1161-
Line: 16,
1167+
Line: 17,
11621168
Block: Directives{},
11631169
},
11641170
},

testdata/configs/geo/nginx.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ events {
44

55
http {
66
geo $geo {
7+
ranges;
78
default 0;
89
192.168.1.0/24 1;
910
127.0.0.1 2;

testdata/configs/geo/nginx.json

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,27 @@
3434
],
3535
"block": [
3636
{
37-
"directive": "default",
37+
"directive": "ranges",
3838
"line": 7,
39+
"args": []
40+
},
41+
{
42+
"directive": "default",
43+
"line": 8,
3944
"args": [
4045
"0"
4146
]
4247
},
4348
{
4449
"directive": "192.168.1.0/24",
45-
"line": 8,
50+
"line": 9,
4651
"args": [
4752
"1"
4853
]
4954
},
5055
{
5156
"directive": "127.0.0.1",
52-
"line": 9,
57+
"line": 10,
5358
"args": [
5459
"2"
5560
]
@@ -58,33 +63,33 @@
5863
},
5964
{
6065
"directive": "server",
61-
"line": 11,
66+
"line": 12,
6267
"args": [],
6368
"block": [
6469
{
6570
"directive": "listen",
66-
"line": 12,
71+
"line": 13,
6772
"args": [
6873
"127.0.0.1:8080"
6974
]
7075
},
7176
{
7277
"directive": "server_name",
73-
"line": 13,
78+
"line": 14,
7479
"args": [
7580
"default_server"
7681
]
7782
},
7883
{
7984
"directive": "location",
80-
"line": 14,
85+
"line": 15,
8186
"args": [
8287
"/"
8388
],
8489
"block": [
8590
{
8691
"directive": "if",
87-
"line": 15,
92+
"line": 16,
8893
"args": [
8994
"$geo",
9095
"=",
@@ -93,7 +98,7 @@
9398
"block": [
9499
{
95100
"directive": "return",
96-
"line": 16,
101+
"line": 17,
97102
"args": [
98103
"403"
99104
]

testdata/configs/geo/xp.json

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,27 @@
3434
],
3535
"block": [
3636
{
37-
"directive": "default",
37+
"directive": "ranges",
3838
"line": 7,
39+
"args": []
40+
},
41+
{
42+
"directive": "default",
43+
"line": 8,
3944
"args": [
4045
"0"
4146
]
4247
},
4348
{
4449
"directive": "192.168.1.0/24",
45-
"line": 8,
50+
"line": 9,
4651
"args": [
4752
"1"
4853
]
4954
},
5055
{
5156
"directive": "127.0.0.1",
52-
"line": 9,
57+
"line": 10,
5358
"args": [
5459
"2"
5560
]
@@ -58,33 +63,33 @@
5863
},
5964
{
6065
"directive": "server",
61-
"line": 11,
66+
"line": 12,
6267
"args": [],
6368
"block": [
6469
{
6570
"directive": "listen",
66-
"line": 12,
71+
"line": 13,
6772
"args": [
6873
"127.0.0.1:8080"
6974
]
7075
},
7176
{
7277
"directive": "server_name",
73-
"line": 13,
78+
"line": 14,
7479
"args": [
7580
"default_server"
7681
]
7782
},
7883
{
7984
"directive": "location",
80-
"line": 14,
85+
"line": 15,
8186
"args": [
8287
"/"
8388
],
8489
"block": [
8590
{
8691
"directive": "if",
87-
"line": 15,
92+
"line": 16,
8893
"args": [
8994
"$geo",
9095
"=",
@@ -93,7 +98,7 @@
9398
"block": [
9499
{
95100
"directive": "return",
96-
"line": 16,
101+
"line": 17,
97102
"args": [
98103
"403"
99104
]

0 commit comments

Comments
 (0)