Skip to content

Commit 33a2462

Browse files
committed
[wip] Initial HTTPS->HTTP test, updated https-secure example. Work in progress, need to add more https tests
1 parent a1b25a1 commit 33a2462

File tree

6 files changed

+117
-1
lines changed

6 files changed

+117
-1
lines changed

Diff for: examples/https-secure.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var httpProxy = require('http-proxy'),
1+
var httpProxy = require('../lib/http-proxy'),
22
https = require('https');
33
/*
44
* Create your proxy server pointing to a secure domain

Diff for: test/fixtures/agent2-cert.pem

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIB7DCCAZYCCQC7gs0MDNn6MTANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJV
3+
UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO
4+
BgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEgMB4GCSqGSIb3DQEJARYR
5+
cnlAdGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEy
6+
WjB9MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYD
7+
VQQKEwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEg
8+
MB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEF
9+
AANLADBIAkEAyXb8FrRdKbhrKLgLSsn61i1C7w7fVVVd7OQsmV/7p9WB2lWFiDlC
10+
WKGU9SiIz/A6wNZDUAuc2E+VwtpCT561AQIDAQABMA0GCSqGSIb3DQEBBQUAA0EA
11+
C8HzpuNhFLCI3A5KkBS5zHAQax6TFUOhbpBCR0aTDbJ6F1liDTK1lmU/BjvPoj+9
12+
1LHwrmh29rK8kBPEjmymCQ==
13+
-----END CERTIFICATE-----

Diff for: test/fixtures/agent2-csr.pem

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-----BEGIN CERTIFICATE REQUEST-----
2+
MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH
3+
EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD
4+
EwZhZ2VudDIxIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ
5+
KoZIhvcNAQEBBQADSwAwSAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf
6+
+6fVgdpVhYg5QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAaAlMCMGCSqG
7+
SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB
8+
AJnll2pt5l0pzskQSpjjLVTlFDFmJr/AZ3UK8v0WxBjYjCe5Jx4YehkChpxIyDUm
9+
U3J9q9MDUf0+Y2+EGkssFfk=
10+
-----END CERTIFICATE REQUEST-----

Diff for: test/fixtures/agent2-key.pem

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIBOgIBAAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf+6fVgdpVhYg5
3+
QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAQJBAMT6Bf34+UHKY1ObpsbH
4+
9u2jsVblFq1rWvs8GPMY6oertzvwm3DpuSUp7PTgOB1nLTLYtCERbQ4ovtN8tn3p
5+
OHUCIQDzIEGsoCr5vlxXvy2zJwu+fxYuhTZWMVuo1397L0VyhwIhANQh+yzqUgaf
6+
WRtSB4T2W7ADtJI35ET61jKBty3CqJY3AiAIwju7dVW3A5WeD6Qc1SZGKZvp9yCb
7+
AFI2BfVwwaY11wIgXF3PeGcvACMyMWsuSv7aPXHfliswAbkWuzcwA4TW01ECIGWa
8+
cgsDvVFxmfM5NPSuT/UDTa6R5BFISB5ea0N0AR3I
9+
-----END RSA PRIVATE KEY-----

Diff for: test/fixtures/agent2.cnf

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[ req ]
2+
default_bits = 1024
3+
days = 999
4+
distinguished_name = req_distinguished_name
5+
attributes = req_attributes
6+
prompt = no
7+
8+
[ req_distinguished_name ]
9+
C = US
10+
ST = CA
11+
L = SF
12+
O = Joyent
13+
OU = Node.js
14+
CN = agent2
15+
emailAddress = [email protected]
16+
17+
[ req_attributes ]
18+
challengePassword = A challenge password
19+

Diff for: test/lib-https-proxy-test.js

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
var httpProxy = require('../lib/http-proxy'),
2+
expect = require('expect.js'),
3+
http = require('http')
4+
https = require('https'),
5+
path = require('path'),
6+
fs = require('fs');
7+
8+
//
9+
// Expose a port number generator.
10+
// thanks to @3rd-Eden
11+
//
12+
var initialPort = 1024, gen = {};
13+
Object.defineProperty(gen, 'port', {
14+
get: function get() {
15+
return initialPort++;
16+
}
17+
});
18+
19+
describe('lib/http-proxy.js', function() {
20+
describe('#createProxyServer using HTTPS', function() {
21+
describe('HTTPS to HTTP', function () {
22+
it('should proxy the request en send back the response', function (done) {
23+
var ports = { source: gen.port, proxy: gen.port };
24+
var source = http.createServer(function(req, res) {
25+
console.log('Request:', req.headers);
26+
expect(req.method).to.eql('GET');
27+
expect(req.headers.host.split(':')[1]).to.eql(ports.proxy);
28+
res.writeHead(200, { 'Content-Type': 'text/plain' });
29+
res.end('Hello from ' + ports.source);
30+
});
31+
32+
source.listen(ports.source);
33+
34+
var proxy = httpProxy.createProxyServer({
35+
forward: 'http://127.0.0.1:' + ports.source,
36+
ssl: {
37+
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
38+
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
39+
}
40+
}).listen(ports.proxy);
41+
42+
var req = https.request({
43+
host: 'localhost',
44+
port: ports.proxy,
45+
path: '/',
46+
method: 'GET',
47+
localAddress: '127.0.0.1',
48+
rejectUnauthorized: false
49+
}, function(res) {
50+
console.log(res);
51+
res.on('data', function (ch) {
52+
console.log('Chunks', ch)
53+
})
54+
console.log('Response:', res.statusCode);
55+
source.close();
56+
proxy._server.close();
57+
done();
58+
});
59+
60+
req.on('error', function (err) { console.log('Erroring', err); });
61+
req.end();
62+
})
63+
})
64+
});
65+
});

0 commit comments

Comments
 (0)