Mercurial > hg > nginx-tests
annotate stream_js_fetch_https.t @ 1888:cc13f7b098db
Tests: avoid premature stream reset in h3_limit_req.t.
STREAM and RESET_STREAM frames could be batched, which prevents the stream
from being processed and changes the status code. The fix is to wait for
the stream acknowledgment. Here we just look at the largest acknowledged,
this should be enough for simple cases.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 04 Apr 2023 00:33:54 +0400 |
parents | cdcd75657e52 |
children |
rev | line source |
---|---|
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
2 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
3 # (C) Dmitry Volyntsev |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
5 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
6 # Tests for stream njs module, fetch method, https support. |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
7 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
8 ############################################################################### |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
9 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
10 use warnings; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
11 use strict; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
12 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
13 use Test::More; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
14 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
16 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
19 use Test::Nginx::Stream qw/ stream /; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
20 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
21 ############################################################################### |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
22 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
25 |
1858
cdcd75657e52
Tests: added has_feature() tests for IO::Socket::SSL.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1811
diff
changeset
|
26 my $t = Test::Nginx->new() |
cdcd75657e52
Tests: added has_feature() tests for IO::Socket::SSL.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1811
diff
changeset
|
27 ->has(qw/http http_ssl rewrite stream stream_return socket_ssl/) |
cdcd75657e52
Tests: added has_feature() tests for IO::Socket::SSL.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1811
diff
changeset
|
28 ->has_daemon('openssl') |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
29 ->write_file_expand('nginx.conf', <<'EOF'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
30 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
31 %%TEST_GLOBALS%% |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
32 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
33 daemon off; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
34 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
35 events { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
36 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
37 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
38 http { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
39 %%TEST_GLOBALS_HTTP%% |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
40 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
41 js_import test.js; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
42 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
43 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
44 listen 127.0.0.1:8080; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
45 server_name localhost; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
46 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
47 location /njs { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
48 js_content test.njs; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
49 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
50 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
51 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
52 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
53 listen 127.0.0.1:8081 ssl default; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
54 server_name default.example.com; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
55 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
56 ssl_certificate default.example.com.chained.crt; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
57 ssl_certificate_key default.example.com.key; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
58 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
59 location /loc { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
60 return 200 "You are at default.example.com."; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
61 } |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
62 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
63 location /success { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
64 return 200; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
65 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
66 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
67 location /fail { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
68 return 403; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
69 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
70 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
71 location /backend { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
72 return 200 "BACKEND OK"; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
73 } |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
74 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
75 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
76 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
77 listen 127.0.0.1:8081 ssl; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
78 server_name 1.example.com; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
79 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
80 ssl_certificate 1.example.com.chained.crt; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
81 ssl_certificate_key 1.example.com.key; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
82 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
83 location /loc { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
84 return 200 "You are at 1.example.com."; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
85 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
86 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
87 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
88 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
89 stream { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
90 %%TEST_GLOBALS_STREAM%% |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
91 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
92 js_import test.js; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
93 js_var $message; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
94 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
95 resolver 127.0.0.1:%%PORT_8981_UDP%%; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
96 resolver_timeout 1s; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
97 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
98 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
99 listen 127.0.0.1:8082; |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
100 js_preread test.preread; |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
101 return "default CA $message"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
102 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
103 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
104 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
105 listen 127.0.0.1:8083; |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
106 js_preread test.preread; |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
107 return "my CA $message"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
108 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
109 js_fetch_ciphers HIGH:!aNull:!MD5; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
110 js_fetch_protocols TLSv1.1 TLSv1.2; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
111 js_fetch_trusted_certificate myca.crt; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
112 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
113 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
114 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
115 listen 127.0.0.1:8084; |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
116 js_preread test.preread; |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
117 return "my CA with verify_depth=0 $message"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
118 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
119 js_fetch_verify_depth 0; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
120 js_fetch_trusted_certificate myca.crt; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
121 } |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
122 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
123 server { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
124 listen 127.0.0.1:8085; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
125 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
126 js_access test.access_ok; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
127 ssl_preread on; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
128 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
129 js_fetch_ciphers HIGH:!aNull:!MD5; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
130 js_fetch_protocols TLSv1.1 TLSv1.2; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
131 js_fetch_trusted_certificate myca.crt; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
132 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
133 proxy_pass 127.0.0.1:8081; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
134 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
135 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
136 server { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
137 listen 127.0.0.1:8086; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
138 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
139 js_access test.access_nok; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
140 ssl_preread on; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
141 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
142 js_fetch_ciphers HIGH:!aNull:!MD5; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
143 js_fetch_protocols TLSv1.1 TLSv1.2; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
144 js_fetch_trusted_certificate myca.crt; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
145 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
146 proxy_pass 127.0.0.1:8081; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
147 } |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
148 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
149 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
150 EOF |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
151 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
152 my $p1 = port(8081); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
153 my $p2 = port(8082); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
154 my $p3 = port(8083); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
155 my $p4 = port(8084); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
156 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
157 $t->write_file('test.js', <<EOF); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
158 function test_njs(r) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
159 r.return(200, njs.version); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
160 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
161 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
162 function preread(s) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
163 s.on('upload', function (data, flags) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
164 if (data.startsWith('GO')) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
165 s.off('upload'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
166 ngx.fetch('https://' + data.substring(2) + ':$p1/loc') |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
167 .then(reply => { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
168 s.variables.message = 'https OK - ' + reply.status; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
169 s.done(); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
170 }) |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
171 .catch(e => { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
172 s.variables.message = 'https NOK - ' + e.message; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
173 s.done(); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
174 }) |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
175 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
176 } else if (data.length) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
177 s.deny(); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
178 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
179 }); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
180 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
181 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
182 async function access_ok(s) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
183 let r = await ngx.fetch('https://default.example.com:$p1/success', |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
184 {body: s.remoteAddress}); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
185 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
186 (r.status == 200) ? s.allow(): s.deny(); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
187 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
188 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
189 async function access_nok(s) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
190 let r = await ngx.fetch('https://default.example.com:$p1/fail', |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
191 {body: s.remoteAddress}); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
192 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
193 (r.status == 200) ? s.allow(): s.deny(); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
194 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
195 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
196 export default {njs: test_njs, preread, access_ok, access_nok}; |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
197 EOF |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
198 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
199 my $d = $t->testdir(); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
200 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
201 $t->write_file('openssl.conf', <<EOF); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
202 [ req ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
203 default_bits = 2048 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
204 encrypt_key = no |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
205 distinguished_name = req_distinguished_name |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
206 [ req_distinguished_name ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
207 EOF |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
208 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
209 $t->write_file('myca.conf', <<EOF); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
210 [ ca ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
211 default_ca = myca |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
212 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
213 [ myca ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
214 new_certs_dir = $d |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
215 database = $d/certindex |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
216 default_md = sha256 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
217 policy = myca_policy |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
218 serial = $d/certserial |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
219 default_days = 1 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
220 x509_extensions = myca_extensions |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
221 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
222 [ myca_policy ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
223 commonName = supplied |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
224 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
225 [ myca_extensions ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
226 basicConstraints = critical,CA:TRUE |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
227 EOF |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
228 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
229 system('openssl req -x509 -new ' |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
230 . "-config $d/openssl.conf -subj /CN=myca/ " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
231 . "-out $d/myca.crt -keyout $d/myca.key " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
232 . ">>$d/openssl.out 2>&1") == 0 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
233 or die "Can't create self-signed certificate for CA: $!\n"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
234 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
235 foreach my $name ('intermediate', 'default.example.com', '1.example.com') { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
236 system("openssl req -new " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
237 . "-config $d/openssl.conf -subj /CN=$name/ " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
238 . "-out $d/$name.csr -keyout $d/$name.key " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
239 . ">>$d/openssl.out 2>&1") == 0 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
240 or die "Can't create certificate signing req for $name: $!\n"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
241 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
242 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
243 $t->write_file('certserial', '1000'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
244 $t->write_file('certindex', ''); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
245 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
246 system("openssl ca -batch -config $d/myca.conf " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
247 . "-keyfile $d/myca.key -cert $d/myca.crt " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
248 . "-subj /CN=intermediate/ -in $d/intermediate.csr " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
249 . "-out $d/intermediate.crt " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
250 . ">>$d/openssl.out 2>&1") == 0 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
251 or die "Can't sign certificate for intermediate: $!\n"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
252 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
253 foreach my $name ('default.example.com', '1.example.com') { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
254 system("openssl ca -batch -config $d/myca.conf " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
255 . "-keyfile $d/intermediate.key -cert $d/intermediate.crt " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
256 . "-subj /CN=$name/ -in $d/$name.csr -out $d/$name.crt " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
257 . ">>$d/openssl.out 2>&1") == 0 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
258 or die "Can't sign certificate for $name $!\n"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
259 $t->write_file("$name.chained.crt", $t->read_file("$name.crt") |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
260 . $t->read_file('intermediate.crt')); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
261 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
262 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
263 $t->try_run('no njs.fetch')->plan(6); |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
264 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
265 $t->run_daemon(\&dns_daemon, port(8981), $t); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
266 $t->waitforfile($t->testdir . '/' . port(8981)); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
267 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
268 ############################################################################### |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
269 |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
270 local $TODO = 'not yet' unless has_version('0.7.0'); |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
271 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
272 like(stream("127.0.0.1:$p2")->io('GOdefault.example.com'), |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
273 qr/connect failed/s, 'stream non trusted CA'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
274 like(stream("127.0.0.1:$p3")->io('GOdefault.example.com'), |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
275 qr/https OK/s, 'stream trusted CA'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
276 like(stream("127.0.0.1:$p3")->io('GOlocalhost'), |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
277 qr/connect failed/s, 'stream wrong CN'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
278 like(stream("127.0.0.1:$p4")->io('GOdefaul.example.com'), |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
279 qr/connect failed/s, 'stream verify_depth too small'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
280 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
281 like(https_get('default.example.com', port(8085), '/backend'), |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
282 qr!BACKEND OK!, 'access https fetch'); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
283 is(https_get('default.example.com', port(8086), '/backend'), '<conn failed>', |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
284 'access https fetch not'); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
285 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
286 ############################################################################### |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
287 |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
288 sub has_version { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
289 my $need = shift; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
290 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
291 http_get('/njs') =~ /^([.0-9]+)$/m; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
292 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
293 my @v = split(/\./, $1); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
294 my ($n, $v); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
295 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
296 for $n (split(/\./, $need)) { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
297 $v = shift @v || 0; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
298 return 0 if $n > $v; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
299 return 1 if $v > $n; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
300 } |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
301 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
302 return 1; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
303 } |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
304 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
305 ############################################################################### |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
306 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
307 sub get_ssl_socket { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
308 my ($host, $port) = @_; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
309 my $s; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
310 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
311 eval { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
312 local $SIG{ALRM} = sub { die "timeout\n" }; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
313 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
314 alarm(8); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
315 $s = IO::Socket::SSL->new( |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
316 Proto => 'tcp', |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
317 PeerAddr => '127.0.0.1:' . $port, |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
318 SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE(), |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
319 SSL_error_trap => sub { die $_[1] } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
320 ); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
321 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
322 alarm(0); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
323 }; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
324 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
325 alarm(0); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
326 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
327 if ($@) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
328 log_in("died: $@"); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
329 return undef; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
330 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
331 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
332 return $s; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
333 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
334 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
335 sub https_get { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
336 my ($host, $port, $url) = @_; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
337 my $s = get_ssl_socket($host, $port); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
338 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
339 if (!$s) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
340 return '<conn failed>'; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
341 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
342 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
343 return http(<<EOF, socket => $s); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
344 GET $url HTTP/1.0 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
345 Host: $host |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
346 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
347 EOF |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
348 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
349 |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
350 ############################################################################### |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
351 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
352 sub reply_handler { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
353 my ($recv_data, $port, %extra) = @_; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
354 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
355 my (@name, @rdata); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
356 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
357 use constant NOERROR => 0; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
358 use constant A => 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
359 use constant IN => 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
360 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
361 # default values |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
362 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
363 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
364 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
365 # decode name |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
366 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
367 my ($len, $offset) = (undef, 12); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
368 while (1) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
369 $len = unpack("\@$offset C", $recv_data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
370 last if $len == 0; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
371 $offset++; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
372 push @name, unpack("\@$offset A$len", $recv_data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
373 $offset += $len; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
374 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
375 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
376 $offset -= 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
377 my ($id, $type, $class) = unpack("n x$offset n2", $recv_data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
378 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
379 my $name = join('.', @name); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
380 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
381 if ($type == A) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
382 push @rdata, rd_addr($ttl, '127.0.0.1'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
383 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
384 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
385 $len = @name; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
386 pack("n6 (C/a*)$len x n2", $id, $hdr | $rcode, 1, scalar @rdata, |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
387 0, 0, @name, $type, $class) . join('', @rdata); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
388 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
389 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
390 sub rd_addr { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
391 my ($ttl, $addr) = @_; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
392 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
393 my $code = 'split(/\./, $addr)'; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
394 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
395 return pack 'n3N', 0xc00c, A, IN, $ttl if $addr eq ''; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
396 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
397 pack 'n3N nC4', 0xc00c, A, IN, $ttl, eval "scalar $code", eval($code); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
398 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
399 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
400 sub dns_daemon { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
401 my ($port, $t) = @_; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
402 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
403 my ($data, $recv_data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
404 my $socket = IO::Socket::INET->new( |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
405 LocalAddr => '127.0.0.1', |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
406 LocalPort => $port, |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
407 Proto => 'udp', |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
408 ) |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
409 or die "Can't create listening socket: $!\n"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
410 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
411 local $SIG{PIPE} = 'IGNORE'; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
412 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
413 # signal we are ready |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
414 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
415 open my $fh, '>', $t->testdir() . '/' . $port; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
416 close $fh; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
417 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
418 while (1) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
419 $socket->recv($recv_data, 65536); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
420 $data = reply_handler($recv_data, $port); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
421 $socket->send($data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
422 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
423 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
424 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
425 ############################################################################### |