Skip to content

Commit a6d063b

Browse files
feature: don't export ngx.ESC_XXX constants
1 parent 3603a5b commit a6d063b

File tree

7 files changed

+35
-87
lines changed

7 files changed

+35
-87
lines changed

README.markdown

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3192,7 +3192,6 @@ Nginx API for Lua
31923192
* [HTTP method constants](#http-method-constants)
31933193
* [HTTP status constants](#http-status-constants)
31943194
* [Nginx log level constants](#nginx-log-level-constants)
3195-
* [Nginx escape type constants](#nginx-escape-type-constants)
31963195
* [print](#print)
31973196
* [ngx.ctx](#ngxctx)
31983197
* [ngx.location.capture](#ngxlocationcapture)
@@ -3597,27 +3596,6 @@ These constants are usually used by the [ngx.log](#ngxlog) method.
35973596

35983597
[Back to TOC](#nginx-api-for-lua)
35993598

3600-
Nginx escape type constants
3601-
---------------------------
3602-
3603-
**context:** *init_by_lua*, init_worker_by_lua*, set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*, ssl_certificate_by_lua*, ssl_session_fetch_by_lua*, ssl_session_store_by_lua**
3604-
3605-
```lua
3606-
3607-
ngx.ESCAPE_URI
3608-
ngx.ESCAPE_ARGS
3609-
ngx.ESCAPE_URI_COMPONENT
3610-
ngx.ESCAPE_HTML
3611-
ngx.ESCAPE_REFRESH
3612-
ngx.ESCAPE_MEMCACHED
3613-
ngx.ESCAPE_MAIL_AUTH
3614-
```
3615-
3616-
3617-
These constants are usually used by the [ngx.escape_uri](#ngxescape_uri) method.
3618-
3619-
[Back to TOC](#nginx-api-for-lua)
3620-
36213599
print
36223600
-----
36233601

@@ -5610,7 +5588,13 @@ ngx.escape_uri
56105588
Escape `str` as a URI component.
56115589

56125590
Since `v0.10.16rc6`, this function accepts an optional `type` argument.
5613-
Note that this method accepts all [Nginx escape type constants](#nginx-escape-type-constants) as input.
5591+
```lua
5592+
5593+
type = 0 (Escape <code>str</code> as a URI)
5594+
type = 2 (Escape <code>str</code> as a URI component)
5595+
```
5596+
when type set to 0, " ", "#", "%", "?", 0x00-0x1F, 0x7F-0xFF will be escaped.
5597+
when type set to 2, all characters excepter ALPHA, DIGIT, "-", ".", "_", "~" will be escaped.
56145598

56155599
[Back to TOC](#nginx-api-for-lua)
56165600

doc/HttpLuaModule.wiki

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2929,23 +2929,6 @@ These constants are usually used in [[#ngx.location.capture|ngx.location.capture
29292929
29302930
These constants are usually used by the [[#ngx.log|ngx.log]] method.
29312931
2932-
== Nginx escape type constants ==
2933-
2934-
'''context:''' ''init_by_lua*, init_worker_by_lua*, set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*, ssl_certificate_by_lua*, ssl_session_fetch_by_lua*, ssl_session_store_by_lua*''
2935-
2936-
<geshi lang="lua">
2937-
ngx.ESCAPE_URI
2938-
ngx.ESCAPE_ARGS
2939-
ngx.ESCAPE_URI_COMPONENT
2940-
ngx.ESCAPE_HTML
2941-
ngx.ESCAPE_REFRESH
2942-
ngx.ESCAPE_MEMCACHED
2943-
ngx.ESCAPE_MAIL_AUTH
2944-
</geshi>
2945-
2946-
2947-
These constants are usually used by the [[#ngx.escape_uri|ngx.escape_uri]] method.
2948-
29492932
== print ==
29502933
29512934
'''syntax:''' ''print(...)''
@@ -4710,7 +4693,12 @@ This method was introduced in the <code>0.5.0rc30</code> release.
47104693
Escape <code>str</code> as a URI component.
47114694
47124695
Since `v0.10.16rc6`, this function accepts an optional <code>type</code> argument.
4713-
Note that this method accepts all [[#Nginx escape type constants|Nginx escape type constants]] as input.
4696+
<geshi lang="lua">
4697+
type = 0 (Escape <code>str</code> as a URI)
4698+
type = 2 (Escape <code>str</code> as a URI component)
4699+
</geshi>
4700+
when type set to 0, " ", "#", "%", "?", 0x00-0x1F, 0x7F-0xFF will be escaped.
4701+
when type set to 2, all characters excepter ALPHA, DIGIT, "-", ".", "_", "~" will be escaped.
47144702
47154703
== ngx.unescape_uri ==
47164704

src/ngx_http_lua_consts.c

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,6 @@
1313

1414
#include "ngx_http_lua_consts.h"
1515

16-
void
17-
ngx_http_lua_inject_escape_consts(lua_State *L)
18-
{
19-
/* {{{ escape constants */
20-
lua_pushinteger(L, NGX_ESCAPE_URI);
21-
lua_setfield(L, -2, "ESCAPE_URI");
22-
23-
lua_pushinteger(L, NGX_ESCAPE_ARGS);
24-
lua_setfield(L, -2, "ESCAPE_ARGS");
25-
26-
lua_pushinteger(L, NGX_ESCAPE_URI_COMPONENT);
27-
lua_setfield(L, -2, "ESCAPE_URI_COMPONENT");
28-
29-
lua_pushinteger(L, NGX_ESCAPE_HTML);
30-
lua_setfield(L, -2, "ESCAPE_HTML");
31-
32-
lua_pushinteger(L, NGX_ESCAPE_REFRESH);
33-
lua_setfield(L, -2, "ESCAPE_REFRESH");
34-
35-
lua_pushinteger(L, NGX_ESCAPE_MEMCACHED);
36-
lua_setfield(L, -2, "ESCAPE_MEMCACHED");
37-
38-
lua_pushinteger(L, NGX_ESCAPE_MAIL_AUTH);
39-
lua_setfield(L, -2, "ESCAPE_MAIL_AUTH");
40-
41-
/* }}} */
42-
}
43-
4416

4517
void
4618
ngx_http_lua_inject_core_consts(lua_State *L)

src/ngx_http_lua_consts.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
void ngx_http_lua_inject_http_consts(lua_State *L);
1515
void ngx_http_lua_inject_core_consts(lua_State *L);
16-
void ngx_http_lua_inject_escape_consts(lua_State *L);
1716

1817

1918
#endif /* _NGX_HTTP_LUA_CONSTS_H_INCLUDED_ */

src/ngx_http_lua_string.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,9 @@ size_t
436436
ngx_http_lua_ffi_uri_escaped_length(const u_char *src, size_t len,
437437
int type)
438438
{
439+
if (type < NGX_ESCAPE_URI || type > NGX_ESCAPE_MAIL_AUTH) {
440+
return -1;
441+
}
439442
return len + 2 * ngx_http_lua_escape_uri(NULL, (u_char *) src, len, type);
440443
}
441444

@@ -444,6 +447,9 @@ void
444447
ngx_http_lua_ffi_escape_uri(const u_char *src, size_t len, u_char *dst,
445448
int type)
446449
{
450+
if (type < NGX_ESCAPE_URI || type > NGX_ESCAPE_MAIL_AUTH) {
451+
return;
452+
}
447453
ngx_http_lua_escape_uri(dst, (u_char *) src, len, type);
448454
}
449455

src/ngx_http_lua_util.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,6 @@ ngx_http_lua_inject_ngx_api(lua_State *L, ngx_http_lua_main_conf_t *lmcf,
726726

727727
ngx_http_lua_inject_arg_api(L);
728728

729-
ngx_http_lua_inject_escape_consts(L);
730729
ngx_http_lua_inject_http_consts(L);
731730
ngx_http_lua_inject_core_consts(L);
732731

t/006-escape.t

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,11 @@ GET /lua
204204
--- config
205205
location /lua {
206206
content_by_lua_block {
207-
ngx.say(ngx.escape_uri("https://www.google.com", ngx.ESCAPE_URI))
208-
ngx.say(ngx.escape_uri("https://www.google.com/query?q=test", ngx.ESCAPE_URI))
209-
ngx.say(ngx.escape_uri("https://www.google.com/query?\r\nq=test", ngx.ESCAPE_URI))
210-
ngx.say(ngx.escape_uri("-_.~!*'();:@&=+$,/?#", ngx.ESCAPE_URI))
211-
ngx.say(ngx.escape_uri("<>[]{}\\\" ", ngx.ESCAPE_URI))
207+
ngx.say(ngx.escape_uri("https://www.google.com", 0))
208+
ngx.say(ngx.escape_uri("https://www.google.com/query?q=test", 0))
209+
ngx.say(ngx.escape_uri("https://www.google.com/query?\r\nq=test", 0))
210+
ngx.say(ngx.escape_uri("-_.~!*'();:@&=+$,/?#", 0))
211+
ngx.say(ngx.escape_uri("<>[]{}\\\" ", 0))
212212
}
213213
}
214214
--- request
@@ -228,13 +228,13 @@ https://www.google.com/query%3F%0D%0Aq=test
228228
--- config
229229
location /lua {
230230
content_by_lua_block {
231-
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", ngx.ESCAPE_URI))
232-
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", ngx.ESCAPE_ARGS))
233-
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", ngx.ESCAPE_URI_COMPONENT))
234-
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", ngx.ESCAPE_HTML))
235-
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", ngx.ESCAPE_REFRESH))
236-
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", ngx.ESCAPE_MEMCACHED))
237-
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", ngx.ESCAPE_MAIL_AUTH))
231+
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", 0))
232+
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", 1))
233+
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", 2))
234+
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", 3))
235+
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", 4))
236+
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", 5))
237+
ngx.say(ngx.escape_uri("https://www.google.com/?t=abc@ :", 6))
238238
}
239239
}
240240
--- request
@@ -263,22 +263,22 @@ https://www.google.com/?t=abc@%20:
263263
GET /lua
264264
--- error_code: 500
265265
--- error_log eval
266-
qr/\[error\] \d+#\d+: \*\d+ lua entry thread aborted: runtime error: "esc_type" \-1 out of range/
266+
qr/\[error\] \d+#\d+: \*\d+ lua entry thread aborted: runtime error: "type" \-1 out of range/
267267
268268
269269
270270
=== TEST 18: escape type out of range
271271
--- config
272272
location /lua {
273273
content_by_lua_block {
274-
ngx.say(ngx.escape_uri("https://www.google.com", 100))
274+
ngx.say(ngx.escape_uri("https://www.google.com", 10))
275275
}
276276
}
277277
--- request
278278
GET /lua
279279
--- error_code: 500
280280
--- error_log eval
281-
qr/\[error\] \d+#\d+: \*\d+ lua entry thread aborted: runtime error: "esc_type" 100 out of range/
281+
qr/\[error\] \d+#\d+: \*\d+ lua entry thread aborted: runtime error: "type" 10 out of range/
282282
283283
284284
@@ -293,4 +293,4 @@ qr/\[error\] \d+#\d+: \*\d+ lua entry thread aborted: runtime error: "esc_type"
293293
GET /lua
294294
--- error_code: 500
295295
--- error_log eval
296-
qr/\[error\] \d+#\d+: \*\d+ lua entry thread aborted: runtime error: "esc_type" is not number/
296+
qr/\[error\] \d+#\d+: \*\d+ lua entry thread aborted: runtime error: "type" is not number/

0 commit comments

Comments
 (0)