Mercurial > hg > nginx-tests
annotate stream_js.t @ 1247:edf5a3c9e36a
Tests: added tests for js backtraces.
author | Dmitry Volyntsev <xeioex@nginx.com> |
---|---|
date | Mon, 20 Nov 2017 20:23:24 +0300 |
parents | 4a825ec85c8d |
children | 70192b1baf01 |
rev | line source |
---|---|
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
2 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
3 # (C) Andrey Zelenkov |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
5 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
6 # Tests for stream JavaScript module. |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
7 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
9 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
11 use strict; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
12 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
14 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
16 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
1005
557faa1782e5
Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1003
diff
changeset
|
19 use Test::Nginx::Stream qw/ dgram stream /; |
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
20 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
22 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
25 |
1005
557faa1782e5
Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1003
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/stream stream_return udp/) |
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
28 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
30 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
32 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
33 events { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
34 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
35 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
36 stream { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
37 js_set $js_addr js_addr; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
38 js_set $js_var js_var; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
39 js_set $js_log js_log; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
40 js_set $js_unk js_unk; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
41 js_set $js_sess_unk js_sess_unk; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
42 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
43 js_include functions.js; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
44 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
45 server { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
46 listen 127.0.0.1:8080; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
47 return $js_addr; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
48 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
49 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
50 server { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
51 listen 127.0.0.1:8081; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
52 return $js_log; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
53 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
54 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
55 server { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
56 listen 127.0.0.1:8082; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
57 return $js_var; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
58 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
59 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
60 server { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
61 listen 127.0.0.1:8083; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
62 return $js_unk; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
63 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
64 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
65 server { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
66 listen 127.0.0.1:8084; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
67 return $js_sess_unk; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
68 } |
1005
557faa1782e5
Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1003
diff
changeset
|
69 |
557faa1782e5
Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1003
diff
changeset
|
70 server { |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1005
diff
changeset
|
71 listen 127.0.0.1:%%PORT_8985_UDP%% udp; |
1005
557faa1782e5
Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1003
diff
changeset
|
72 return $js_addr; |
557faa1782e5
Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1003
diff
changeset
|
73 } |
1239
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
74 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
75 server { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
76 listen 127.0.0.1:8086; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
77 js_access js_access_allow; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
78 return 'OK'; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
79 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
80 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
81 server { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
82 listen 127.0.0.1:8087; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
83 js_access js_access_deny; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
84 return 'OK'; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
85 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
86 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
87 server { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
88 listen 127.0.0.1:8088; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
89 js_preread js_preread; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
90 proxy_pass 127.0.0.1:8090; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
91 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
92 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
93 server { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
94 listen 127.0.0.1:8089; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
95 js_filter js_filter; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
96 proxy_pass 127.0.0.1:8090; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
97 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
98 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
99 server { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
100 listen 127.0.0.1:8091; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
101 js_access js_access_step; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
102 js_preread js_preread_step; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
103 js_filter js_filter_step; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
104 proxy_pass 127.0.0.1:8090; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
105 } |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
106 |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
107 server { |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
108 listen 127.0.0.1:8092; |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
109 js_filter js_filter_except; |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
110 proxy_pass 127.0.0.1:8090; |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
111 } |
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
112 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
113 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
114 EOF |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
115 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
116 $t->write_file('functions.js', <<EOF); |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
117 function js_addr(sess) { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
118 return 'addr=' + sess.remoteAddress; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
119 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
120 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
121 function js_var(sess) { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
122 return 'variable=' + sess.variables.remote_addr; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
123 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
124 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
125 function js_sess_unk(sess) { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
126 return 'sess_unk=' + sess.unk; |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
127 } |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
128 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
129 function js_log(sess) { |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
130 sess.log("SEE-THIS"); |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
131 } |
1239
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
132 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
133 function js_access_allow(sess) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
134 if (sess.remoteAddress.match('127.0.0.1')) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
135 return sess.OK; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
136 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
137 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
138 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
139 function js_access_deny(sess) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
140 if (sess.remoteAddress.match('127.0.0.1')) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
141 return sess.ABORT; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
142 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
143 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
144 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
145 function js_preread(sess) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
146 var n = sess.buffer.indexOf('z'); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
147 if (n == -1) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
148 return sess.AGAIN; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
149 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
150 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
151 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
152 function js_filter(sess) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
153 if (sess.fromUpstream) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
154 var n = sess.buffer.search('y'); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
155 if (n != -1) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
156 sess.buffer = 'z'; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
157 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
158 return; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
159 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
160 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
161 n = sess.buffer.search('x'); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
162 if (n != -1) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
163 sess.buffer = 'y'; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
164 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
165 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
166 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
167 var res = ''; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
168 function js_access_step(sess) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
169 res += '1'; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
170 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
171 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
172 function js_preread_step(sess) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
173 res += '2'; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
174 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
175 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
176 function js_filter_step(sess) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
177 if (sess.eof) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
178 sess.buffer = res; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
179 return; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
180 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
181 res += '3'; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
182 } |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
183 |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
184 function js_filter_except(sess) { |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
185 sess.a.a; |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
186 } |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
187 |
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
188 EOF |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
189 |
1239
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
190 $t->run_daemon(\&stream_daemon, port(8090)); |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
191 $t->try_run('no stream njs available')->plan(13); |
1239
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
192 $t->waitforsocket('127.0.0.1:' . port(8090)); |
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
193 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
194 ############################################################################### |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
195 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
196 is(stream('127.0.0.1:' . port(8080))->read(), 'addr=127.0.0.1', |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
197 'sess.remoteAddress'); |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1005
diff
changeset
|
198 is(dgram('127.0.0.1:' . port(8985))->io('.'), 'addr=127.0.0.1', |
1005
557faa1782e5
Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1003
diff
changeset
|
199 'sess.remoteAddress udp'); |
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
200 is(stream('127.0.0.1:' . port(8081))->read(), 'undefined', 'sess.log'); |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
201 is(stream('127.0.0.1:' . port(8082))->read(), 'variable=127.0.0.1', |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
202 'sess.variables'); |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
203 is(stream('127.0.0.1:' . port(8083))->read(), '', 'stream js unknown function'); |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
204 is(stream('127.0.0.1:' . port(8084))->read(), 'sess_unk=undefined', 'sess.unk'); |
1239
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
205 is(stream('127.0.0.1:' . port(8086))->read(), 'OK', 'js_access allow'); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
206 is(stream('127.0.0.1:' . port(8087))->read(), '', 'js_access deny'); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
207 is(stream('127.0.0.1:' . port(8088))->io('xyz'), 'xyz', 'js_preread'); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
208 is(stream('127.0.0.1:' . port(8089))->io('x'), 'z', 'js_filter'); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
209 is(stream('127.0.0.1:' . port(8091))->io('0'), '01233', 'handlers order'); |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
210 stream('127.0.0.1:' . port(8092))->io('x'); |
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
211 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
212 $t->stop(); |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
213 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
214 ok(index($t->read_file('error.log'), 'SEE-THIS') > 0, 'stream js log'); |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
215 ok(index($t->read_file('error.log'), 'at js_filter_except') > 0, |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1239
diff
changeset
|
216 'stream js_filter backtrace'); |
1003
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
217 |
a86034bcbe82
Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
218 ############################################################################### |
1239
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
219 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
220 sub stream_daemon { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
221 my $server = IO::Socket::INET->new( |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
222 Proto => 'tcp', |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
223 LocalAddr => '127.0.0.1:' . port(8090), |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
224 Listen => 5, |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
225 Reuse => 1 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
226 ) |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
227 or die "Can't create listening socket: $!\n"; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
228 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
229 local $SIG{PIPE} = 'IGNORE'; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
230 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
231 while (my $client = $server->accept()) { |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
232 $client->autoflush(1); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
233 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
234 log2c("(new connection $client)"); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
235 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
236 $client->sysread(my $buffer, 65536) or next; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
237 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
238 log2i("$client $buffer"); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
239 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
240 log2o("$client $buffer"); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
241 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
242 $client->syswrite($buffer); |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
243 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
244 close $client; |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
245 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
246 } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
247 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
248 sub log2i { Test::Nginx::log_core('|| <<', @_); } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
249 sub log2o { Test::Nginx::log_core('|| >>', @_); } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
250 sub log2c { Test::Nginx::log_core('||', @_); } |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
251 |
4a825ec85c8d
Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1237
diff
changeset
|
252 ############################################################################### |