Skip to content

Commit 509b109

Browse files
committed
Remove block mask from analyze
1 parent 1f0a171 commit 509b109

File tree

2 files changed

+26
-48
lines changed

2 files changed

+26
-48
lines changed

analyze.go

Lines changed: 16 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -155,28 +155,6 @@ func analyze(fname string, stmt *Directive, term string, ctx blockCtx, options *
155155
continue
156156
}
157157

158-
// check if the directive is a lua block
159-
////nolint:ineffassign
160-
if options.LexOptions.ExternalLexers != nil {
161-
for _, lexer := range options.LexOptions.ExternalLexers {
162-
if _, ok := lexer.(*LuaLexer); ok {
163-
if (mask&ngxConfBlock) != 0 && term != ";" { // lua block end with ; not {
164-
what = fmt.Sprintf(`Lua directive "%s" has no opening "{"`, stmt.Directive)
165-
continue
166-
}
167-
// *_by_lua_block takes ngxConfNoArgs, set_by_lua_block: ngxConfTake1
168-
// but parse takes a block as an extra argument and we need to +1
169-
if ((mask&ngxConfNoArgs) != 0 && len(stmt.Args) == 1) ||
170-
((mask&ngxConfTake1) != 0 && len(stmt.Args) == 2) {
171-
return nil
172-
} else {
173-
what = fmt.Sprintf(`invalid number of arguments in "%s" directive`, stmt.Directive)
174-
continue
175-
}
176-
}
177-
}
178-
}
179-
180158
// if the directive isn't a block but should be according to the mask
181159
if (mask&ngxConfBlock) != 0 && term != "{" {
182160
what = fmt.Sprintf(`directive "%s" has no opening "{"`, stmt.Directive)
@@ -2571,7 +2549,7 @@ var LuaDirectives = map[string][]uint{
25712549
ngxHTTPMainConf | ngxConfTake1,
25722550
},
25732551
"init_by_lua_block": {
2574-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2552+
ngxHTTPMainConf | ngxConfTake1,
25752553
},
25762554
"init_by_lua_file": {
25772555
ngxHTTPMainConf | ngxConfTake1,
@@ -2580,13 +2558,13 @@ var LuaDirectives = map[string][]uint{
25802558
ngxHTTPMainConf | ngxConfTake1,
25812559
},
25822560
"init_worker_by_lua_block": {
2583-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2561+
ngxHTTPMainConf | ngxConfTake1,
25842562
},
25852563
"init_worker_by_lua_file": {
25862564
ngxHTTPMainConf | ngxConfTake1,
25872565
},
25882566
"exit_worker_by_lua_block": {
2589-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2567+
ngxHTTPMainConf | ngxConfTake1,
25902568
},
25912569
"exit_worker_by_lua_file": {
25922570
ngxHTTPMainConf | ngxConfTake1,
@@ -2595,7 +2573,7 @@ var LuaDirectives = map[string][]uint{
25952573
ngxHTTPSrvConf | ngxHTTPSifConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConf2More,
25962574
},
25972575
"set_by_lua_block": {
2598-
ngxHTTPSrvConf | ngxHTTPSifConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1 | ngxConfBlock,
2576+
ngxHTTPSrvConf | ngxHTTPSifConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake2,
25992577
},
26002578
"set_by_lua_file": {
26012579
ngxHTTPSrvConf | ngxHTTPSifConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConf2More,
@@ -2604,13 +2582,13 @@ var LuaDirectives = map[string][]uint{
26042582
ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26052583
},
26062584
"content_by_lua_block": {
2607-
ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2585+
ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26082586
},
26092587
"content_by_lua_file": {
26102588
ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26112589
},
26122590
"server_rewrite_by_lua_block": {
2613-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfBlock | ngxConfNoArgs,
2591+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
26142592
},
26152593
"server_rewrite_by_lua_file": {
26162594
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
@@ -2619,7 +2597,7 @@ var LuaDirectives = map[string][]uint{
26192597
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26202598
},
26212599
"rewrite_by_lua_block": {
2622-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2600+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26232601
},
26242602
"rewrite_by_lua_file": {
26252603
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
@@ -2628,7 +2606,7 @@ var LuaDirectives = map[string][]uint{
26282606
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26292607
},
26302608
"access_by_lua_block": {
2631-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2609+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26322610
},
26332611
"access_by_lua_file": {
26342612
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
@@ -2637,7 +2615,7 @@ var LuaDirectives = map[string][]uint{
26372615
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26382616
},
26392617
"header_filter_by_lua_block": {
2640-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2618+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26412619
},
26422620
"header_filter_by_lua_file": {
26432621
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
@@ -2646,7 +2624,7 @@ var LuaDirectives = map[string][]uint{
26462624
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26472625
},
26482626
"body_filter_by_lua_block": {
2649-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2627+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26502628
},
26512629
"body_filter_by_lua_file": {
26522630
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
@@ -2655,13 +2633,13 @@ var LuaDirectives = map[string][]uint{
26552633
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26562634
},
26572635
"log_by_lua_block": {
2658-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2636+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26592637
},
26602638
"log_by_lua_file": {
26612639
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26622640
},
26632641
"balancer_by_lua_block": {
2664-
ngxHTTPUpsConf | ngxConfBlock | ngxConfNoArgs,
2642+
ngxHTTPUpsConf | ngxConfTake1,
26652643
},
26662644
"balancer_by_lua_file": {
26672645
ngxHTTPUpsConf | ngxConfTake1,
@@ -2670,25 +2648,25 @@ var LuaDirectives = map[string][]uint{
26702648
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfFlag,
26712649
},
26722650
"ssl_client_hello_by_lua_block": {
2673-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfBlock | ngxConfNoArgs,
2651+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
26742652
},
26752653
"ssl_client_hello_by_lua_file": {
26762654
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
26772655
},
26782656
"ssl_certificate_by_lua_block": {
2679-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfBlock | ngxConfNoArgs,
2657+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
26802658
},
26812659
"ssl_certificate_by_lua_file": {
26822660
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
26832661
},
26842662
"ssl_session_fetch_by_lua_block": {
2685-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2663+
ngxHTTPMainConf | ngxConfTake1,
26862664
},
26872665
"ssl_session_fetch_by_lua_file": {
26882666
ngxHTTPMainConf | ngxConfTake1,
26892667
},
26902668
"ssl_session_store_by_lua_block": {
2691-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2669+
ngxHTTPMainConf | ngxConfTake1,
26922670
},
26932671
"ssl_session_store_by_lua_file": {
26942672
ngxHTTPMainConf | ngxConfTake1,

analyze_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2013,7 +2013,7 @@ func TestAnalyze_lua(t *testing.T) {
20132013
"set_by_lua_block ok": {
20142014
&Directive{
20152015
Directive: "set_by_lua_block",
2016-
Args: []string{"$res", "{ return tonumber(ngx.var.foo) + 1 }"},
2016+
Args: []string{"$res", "return tonumber(ngx.var.foo) + 1"},
20172017
Line: 5,
20182018
},
20192019
blockCtx{"http", "server"},
@@ -2022,11 +2022,11 @@ func TestAnalyze_lua(t *testing.T) {
20222022
"set_by_lua_block not ok no return value": {
20232023
&Directive{
20242024
Directive: "set_by_lua_block",
2025-
Args: []string{"{ return tonumber(ngx.var.foo) + 1 }"},
2025+
Args: []string{"return tonumber(ngx.var.foo) + 1"},
20262026
Line: 5,
20272027
},
20282028
blockCtx{"http", "server"},
2029-
false,
2029+
true,
20302030
},
20312031
"content_by_lua ok": {
20322032
&Directive{
@@ -2037,31 +2037,31 @@ func TestAnalyze_lua(t *testing.T) {
20372037
blockCtx{"http", "location"},
20382038
false,
20392039
},
2040-
"content_by_lua not ok": {
2040+
"content_by_lua not ok stream": {
20412041
&Directive{
20422042
Directive: "content_by_lua",
20432043
Args: []string{"'ngx.say('I need no extra escaping here, for example: \r\nblah')'"},
20442044
Line: 5,
20452045
},
2046-
blockCtx{"http", "location"},
2046+
blockCtx{"stream"},
20472047
true,
20482048
},
20492049
"content_by_lua_block ok": {
20502050
&Directive{
20512051
Directive: "content_by_lua_block",
2052-
Args: []string{"{ngx.say('I need no extra escaping here, for example: \r\nblah')}"},
2052+
Args: []string{"ngx.say('I need no extra escaping here, for example: \r\nblah')"},
20532053
Line: 5,
20542054
},
2055-
blockCtx{"http", "server","location"},
2055+
blockCtx{"http", "location", "if"},
20562056
false,
20572057
},
2058-
"content_by_lua_block not ok": {
2058+
"content_by_lua_block not ok extra argument": {
20592059
&Directive{
20602060
Directive: "content_by_lua_block",
2061-
Args: []string{"{ngx.say('I need no extra escaping here, for example: \r\nblah')}"},
2061+
Args: []string{"1", "ngx.say('I need no extra escaping here, for example: \r\nblah')"},
20622062
Line: 5,
20632063
},
2064-
blockCtx{"http", "location"},
2064+
blockCtx{"http", "location", "if"},
20652065
true,
20662066
},
20672067
}

0 commit comments

Comments
 (0)