Mercurial > hg > nginx-tests
annotate stream_js_fetch_https.t @ 1810:7cf848422b28
Tests: removed remaining njs version checks older than 0.6.0.
author | Dmitry Volyntsev <xeioex@nginx.com> |
---|---|
date | Fri, 02 Dec 2022 17:46:16 -0800 |
parents | 564f74bf6e4d |
children | 520fb74cce4c |
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 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
273 local $TODO = 'not yet' |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
274 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.7.0'; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
275 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
276 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
|
277 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
|
278 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
|
279 qr/https OK/s, 'stream trusted CA'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
280 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
|
281 qr/connect failed/s, 'stream wrong CN'); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
282 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
|
283 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
|
284 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
285 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
|
286 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
|
287 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
|
288 'access https fetch not'); |
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 ############################################################################### |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
291 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
292 sub get_ssl_socket { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
293 my ($host, $port) = @_; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
294 my $s; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
295 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
296 eval { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
297 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
|
298 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
|
299 alarm(8); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
300 $s = IO::Socket::SSL->new( |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
301 Proto => 'tcp', |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
302 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
|
303 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
|
304 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
|
305 ); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
306 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
307 alarm(0); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
308 }; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
309 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
310 alarm(0); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
311 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
312 if ($@) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
313 log_in("died: $@"); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
314 return undef; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
315 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
316 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
317 return $s; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
318 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
319 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
320 sub https_get { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
321 my ($host, $port, $url) = @_; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
322 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
|
323 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
324 if (!$s) { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
325 return '<conn failed>'; |
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 return http(<<EOF, socket => $s); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
329 GET $url HTTP/1.0 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1736
diff
changeset
|
330 Host: $host |
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 EOF |
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 |
1736
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
335 ############################################################################### |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
336 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
337 sub reply_handler { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
338 my ($recv_data, $port, %extra) = @_; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
339 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
340 my (@name, @rdata); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
341 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
342 use constant NOERROR => 0; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
343 use constant A => 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
344 use constant IN => 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
345 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
346 # default values |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
347 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
348 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
349 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
350 # decode name |
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 my ($len, $offset) = (undef, 12); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
353 while (1) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
354 $len = unpack("\@$offset C", $recv_data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
355 last if $len == 0; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
356 $offset++; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
357 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
|
358 $offset += $len; |
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 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
361 $offset -= 1; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
362 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
|
363 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
364 my $name = join('.', @name); |
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 if ($type == A) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
367 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
|
368 } |
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 $len = @name; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
371 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
|
372 0, 0, @name, $type, $class) . join('', @rdata); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
373 } |
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 sub rd_addr { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
376 my ($ttl, $addr) = @_; |
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 my $code = 'split(/\./, $addr)'; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
379 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
380 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
|
381 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
382 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
|
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 sub dns_daemon { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
386 my ($port, $t) = @_; |
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 my ($data, $recv_data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
389 my $socket = IO::Socket::INET->new( |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
390 LocalAddr => '127.0.0.1', |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
391 LocalPort => $port, |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
392 Proto => 'udp', |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
393 ) |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
394 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
|
395 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
396 local $SIG{PIPE} = 'IGNORE'; |
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 # signal we are ready |
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 open my $fh, '>', $t->testdir() . '/' . $port; |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
401 close $fh; |
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 while (1) { |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
404 $socket->recv($recv_data, 65536); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
405 $data = reply_handler($recv_data, $port); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
406 $socket->send($data); |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
407 } |
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 |
f7a8997c46c7
Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff
changeset
|
410 ############################################################################### |