Mercurial > hg > nginx-tests
annotate stream_js_fetch_https.t @ 1847:a9704b9ed7a2
Tests: removed multiple server certificates from ssl_ocsp.t.
Multiple server certificates are not needed to test OCSP verification of
client certificates (in contrast to OCSP stapling, where server certificates
are verified, and different staples should be correctly returned with
different server certificates). And using multiple server certificates
causes issues when testing with LibreSSL due to broken sigalgs-based
server certificate selection in LibreSSL with TLSv1.3.
Accordingly, the test is simplified to do not use multiple server
certificates.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 23 Mar 2023 19:50:26 +0300 |
parents | 520fb74cce4c |
children | cdcd75657e52 |
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 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
26 eval { require IO::Socket::SSL; }; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
27 plan(skip_all => 'IO::Socket::SSL not installed') if $@; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
28 eval { 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
|
29 plan(skip_all => 'IO::Socket::SSL too old') if $@; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
30 |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
31 my $t = Test::Nginx->new()->has(qw/http http_ssl rewrite stream stream_return/) |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
32 ->write_file_expand('nginx.conf', <<'EOF'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
33 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
34 %%TEST_GLOBALS%% |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
35 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
36 daemon off; |
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 events { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
39 } |
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 http { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
42 %%TEST_GLOBALS_HTTP%% |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
43 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
44 js_import test.js; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
45 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
46 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
47 listen 127.0.0.1:8080; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
48 server_name localhost; |
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 location /njs { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
51 js_content test.njs; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
52 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
53 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
54 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
55 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
56 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
|
57 server_name default.example.com; |
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 ssl_certificate default.example.com.chained.crt; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
60 ssl_certificate_key default.example.com.key; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
61 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
62 location /loc { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
63 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
|
64 } |
1806
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 location /success { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
67 return 200; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
68 } |
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 location /fail { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
71 return 403; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
72 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
73 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
74 location /backend { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
75 return 200 "BACKEND OK"; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
76 } |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
77 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
78 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
79 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
80 listen 127.0.0.1:8081 ssl; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
81 server_name 1.example.com; |
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 ssl_certificate 1.example.com.chained.crt; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
84 ssl_certificate_key 1.example.com.key; |
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 location /loc { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
87 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
|
88 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
89 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
90 } |
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 stream { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
93 %%TEST_GLOBALS_STREAM%% |
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 js_import test.js; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
96 js_var $message; |
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 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
|
99 resolver_timeout 1s; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
100 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
101 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
102 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
|
103 js_preread test.preread; |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
104 return "default CA $message"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
105 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
106 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
107 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
108 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
|
109 js_preread test.preread; |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
110 return "my CA $message"; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
111 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
112 js_fetch_ciphers HIGH:!aNull:!MD5; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
113 js_fetch_protocols TLSv1.1 TLSv1.2; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
114 js_fetch_trusted_certificate myca.crt; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
115 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
116 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
117 server { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
118 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
|
119 js_preread test.preread; |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
120 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
|
121 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
122 js_fetch_verify_depth 0; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
123 js_fetch_trusted_certificate myca.crt; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
124 } |
1806
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 server { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
127 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
|
128 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
129 js_access test.access_ok; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
130 ssl_preread on; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
131 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
132 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
|
133 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
|
134 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
|
135 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
136 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
|
137 } |
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 server { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
140 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
|
141 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
142 js_access test.access_nok; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
143 ssl_preread on; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
144 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
145 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
|
146 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
|
147 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
|
148 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
149 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
|
150 } |
1736
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 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
153 EOF |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
154 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
155 my $p1 = port(8081); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
156 my $p2 = port(8082); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
157 my $p3 = port(8083); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
158 my $p4 = port(8084); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
159 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
160 $t->write_file('test.js', <<EOF); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
161 function test_njs(r) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
162 r.return(200, njs.version); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
163 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
164 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
165 function preread(s) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
166 s.on('upload', function (data, flags) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
167 if (data.startsWith('GO')) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
168 s.off('upload'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
169 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
|
170 .then(reply => { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
171 s.variables.message = 'https OK - ' + reply.status; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
172 s.done(); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
173 }) |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
174 .catch(e => { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
175 s.variables.message = 'https NOK - ' + e.message; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
176 s.done(); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
177 }) |
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 } else if (data.length) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
180 s.deny(); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
181 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
182 }); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
183 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
184 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
185 async function access_ok(s) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
186 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
|
187 {body: s.remoteAddress}); |
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 (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
|
190 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
191 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
192 async function access_nok(s) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
193 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
|
194 {body: s.remoteAddress}); |
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 (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
|
197 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
198 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
199 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
|
200 EOF |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
201 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
202 my $d = $t->testdir(); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
203 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
204 $t->write_file('openssl.conf', <<EOF); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
205 [ req ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
206 default_bits = 2048 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
207 encrypt_key = no |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
208 distinguished_name = req_distinguished_name |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
209 [ req_distinguished_name ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
210 EOF |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
211 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
212 $t->write_file('myca.conf', <<EOF); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
213 [ ca ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
214 default_ca = myca |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
215 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
216 [ myca ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
217 new_certs_dir = $d |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
218 database = $d/certindex |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
219 default_md = sha256 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
220 policy = myca_policy |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
221 serial = $d/certserial |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
222 default_days = 1 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
223 x509_extensions = myca_extensions |
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_policy ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
226 commonName = supplied |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
227 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
228 [ myca_extensions ] |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
229 basicConstraints = critical,CA:TRUE |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
230 EOF |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
231 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
232 system('openssl req -x509 -new ' |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
233 . "-config $d/openssl.conf -subj /CN=myca/ " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
234 . "-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
|
235 . ">>$d/openssl.out 2>&1") == 0 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
236 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
|
237 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
238 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
|
239 system("openssl req -new " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
240 . "-config $d/openssl.conf -subj /CN=$name/ " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
241 . "-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
|
242 . ">>$d/openssl.out 2>&1") == 0 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
243 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
|
244 } |
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 $t->write_file('certserial', '1000'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
247 $t->write_file('certindex', ''); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
248 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
249 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
|
250 . "-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
|
251 . "-subj /CN=intermediate/ -in $d/intermediate.csr " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
252 . "-out $d/intermediate.crt " |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
253 . ">>$d/openssl.out 2>&1") == 0 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
254 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
|
255 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
256 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
|
257 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
|
258 . "-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
|
259 . "-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
|
260 . ">>$d/openssl.out 2>&1") == 0 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
261 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
|
262 $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
|
263 . $t->read_file('intermediate.crt')); |
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 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
266 $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
|
267 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
268 $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
|
269 $t->waitforfile($t->testdir . '/' . port(8981)); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
270 |
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 |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
273 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
|
274 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
275 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
|
276 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
|
277 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
|
278 qr/https OK/s, 'stream trusted CA'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
279 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
|
280 qr/connect failed/s, 'stream wrong CN'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
281 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
|
282 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
|
283 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
284 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
|
285 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
|
286 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
|
287 'access https fetch not'); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
288 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
289 ############################################################################### |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
290 |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
291 sub has_version { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
292 my $need = shift; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
293 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
294 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
|
295 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
296 my @v = split(/\./, $1); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
297 my ($n, $v); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
298 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
299 for $n (split(/\./, $need)) { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
300 $v = shift @v || 0; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
301 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
|
302 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
|
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 return 1; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
306 } |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
307 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
308 ############################################################################### |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1806
diff
changeset
|
309 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
310 sub get_ssl_socket { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
311 my ($host, $port) = @_; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
312 my $s; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
313 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
314 eval { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
315 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
|
316 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
|
317 alarm(8); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
318 $s = IO::Socket::SSL->new( |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
319 Proto => 'tcp', |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
320 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
|
321 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
|
322 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
|
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 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
328 alarm(0); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
329 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
330 if ($@) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
331 log_in("died: $@"); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
332 return undef; |
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 return $s; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
336 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
337 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
338 sub https_get { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
339 my ($host, $port, $url) = @_; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
340 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
|
341 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
342 if (!$s) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
343 return '<conn failed>'; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
344 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
345 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
346 return http(<<EOF, socket => $s); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
347 GET $url HTTP/1.0 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
348 Host: $host |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
349 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
350 EOF |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
351 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
352 |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
353 ############################################################################### |
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 sub reply_handler { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
356 my ($recv_data, $port, %extra) = @_; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
357 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
358 my (@name, @rdata); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
359 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
360 use constant NOERROR => 0; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
361 use constant A => 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
362 use constant IN => 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
363 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
364 # default values |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
365 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
366 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
367 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
368 # decode name |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
369 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
370 my ($len, $offset) = (undef, 12); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
371 while (1) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
372 $len = unpack("\@$offset C", $recv_data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
373 last if $len == 0; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
374 $offset++; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
375 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
|
376 $offset += $len; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
377 } |
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 $offset -= 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
380 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
|
381 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
382 my $name = join('.', @name); |
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 if ($type == A) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
385 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
|
386 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
387 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
388 $len = @name; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
389 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
|
390 0, 0, @name, $type, $class) . join('', @rdata); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
391 } |
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 sub rd_addr { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
394 my ($ttl, $addr) = @_; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
395 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
396 my $code = 'split(/\./, $addr)'; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
397 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
398 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
|
399 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
400 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
|
401 } |
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 sub dns_daemon { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
404 my ($port, $t) = @_; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
405 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
406 my ($data, $recv_data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
407 my $socket = IO::Socket::INET->new( |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
408 LocalAddr => '127.0.0.1', |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
409 LocalPort => $port, |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
410 Proto => 'udp', |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
411 ) |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
412 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
|
413 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
414 local $SIG{PIPE} = 'IGNORE'; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
415 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
416 # signal we are ready |
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 open my $fh, '>', $t->testdir() . '/' . $port; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
419 close $fh; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
420 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
421 while (1) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
422 $socket->recv($recv_data, 65536); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
423 $data = reply_handler($recv_data, $port); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
424 $socket->send($data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
425 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
426 } |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
427 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
428 ############################################################################### |