Skip to content

Commit 44d2dcc

Browse files
committed
fuuu
0 parents  commit 44d2dcc

File tree

6 files changed

+140
-0
lines changed

6 files changed

+140
-0
lines changed

app.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
2+
var http = require('http');
3+
var tls = require('tls');
4+
var crypto = require('crypto');
5+
var fs = require('fs');
6+
7+
var key = fs.readFileSync('./server.key');
8+
var cert = fs.readFileSync('./server.crt');
9+
10+
// Create an HTTP server
11+
var srv = http.createServer(function (req, res) {
12+
res.writeHead(200, {'Content-Type': 'text/plain'});
13+
res.end('okay');
14+
});
15+
srv.on('upgrade', function(req, socket, head) {
16+
socket.write('HTTP/1.1 101 Web Socket Protocol Handshake\r\n' +
17+
'Upgrade: WebSocket\r\n' +
18+
'Connection: Upgrade\r\n' +
19+
'\r\n');
20+
21+
console.log('Got an upgrade request!');
22+
var pair = tls.createSecurePair(crypto.createCredentials({
23+
key: key,
24+
cert: cert
25+
}), true, false);
26+
// echo back
27+
socket.pipe(pair.encrypted);
28+
pair.encrypted.pipe(socket);
29+
pair.cleartext.pipe(pair.cleartext);
30+
pair.on('secure', function() {
31+
console.log('Dude that works!');
32+
});
33+
});
34+
35+
// now that server is running
36+
srv.listen(process.env.PORT, function() {
37+
console.log('server started on port %d', srv.address().port);
38+
});

client.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
2+
var http = require('http');
3+
var tls = require('tls');
4+
var crypto = require('crypto');
5+
var fs = require('fs');
6+
7+
var key = fs.readFileSync('./server.key');
8+
var cert = fs.readFileSync('./server.crt');
9+
10+
// make a request
11+
var options = {
12+
port: 80,
13+
host: 'jeansebtr.upgrade.jit.su',
14+
headers: {
15+
'Connection': 'Upgrade',
16+
'Upgrade': 'websocket'
17+
}
18+
};
19+
20+
var req = http.request(options);
21+
req.end();
22+
23+
req.on('upgrade', function(res, socket, upgradeHead) {
24+
console.log('got upgraded!');
25+
26+
var pair = tls.createSecurePair(crypto.createCredentials({
27+
key: key,
28+
cert: cert
29+
}), false, false);
30+
// ...
31+
socket.pipe(pair.encrypted);
32+
pair.encrypted.pipe(socket);
33+
34+
pair.cleartext.pipe(process.stdout);
35+
process.stdin.pipe(pair.cleartext);
36+
process.stdin.resume();
37+
pair.on('secure', function() {
38+
console.log('-> Dude that works!');
39+
});
40+
});
41+
42+
req.on('error', function(err) {
43+
console.error('WTF:', err);
44+
console.error(err.stack);
45+
});

package.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "upgrade",
3+
"version": "0.0.1-5",
4+
"main": "index.js",
5+
"scripts": {
6+
"test": "echo \"Error: no test specified\" && exit 1",
7+
"start": "app.js"
8+
},
9+
"license": "BSD",
10+
"subdomain": "jeansebtr.upgrade",
11+
"engines": {
12+
"node": "0.8.x"
13+
}
14+
}

server.crt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICizCCAfQCCQDRUC5ywXKGoDANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMC
3+
Q0ExDzANBgNVBAgMBlF1ZWJlYzEPMA0GA1UEBwwGUXVlYmVjMRUwEwYDVQQKDAx4
4+
cGVuc2lhIGluYy4xDDAKBgNVBAsMA0Z1bjENMAsGA1UEAwwEUlRGQzEkMCIGCSqG
5+
SIb3DQEJARYVamVhbnNlYnRyQHhwZW5zaWEuY29tMB4XDTEyMTExODEwMDYwN1oX
6+
DTEyMTIxODEwMDYwN1owgYkxCzAJBgNVBAYTAkNBMQ8wDQYDVQQIDAZRdWViZWMx
7+
DzANBgNVBAcMBlF1ZWJlYzEVMBMGA1UECgwMeHBlbnNpYSBpbmMuMQwwCgYDVQQL
8+
DANGdW4xDTALBgNVBAMMBFJURkMxJDAiBgkqhkiG9w0BCQEWFWplYW5zZWJ0ckB4
9+
cGVuc2lhLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1YT2r0MPDgsS
10+
Jf2meATxY/1flJtOXZBmzhU9Tl6lELnXGpP09tbXFi0Q3Gh+06YrpRVsHsLDXe6B
11+
qUpz2N3T27F9L5HPioTWAtQeCt443jAHPdWNgKM/TbUY2dwVHlR0UyEcbs+//oSQ
12+
9258A29Hp5TpZn1V3PFn4Cwlruw/aXkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBD
13+
3N9J0PRbu8VlsnlX7bs7mzce/39FLAqQM64Jko7jubAYqlO+fentuwE4/bZVhXAU
14+
baqAOUcYQ8aVWXHASEAra3iacfHJAGFZXc/GUb4SB4HY6r9DIs5pav5H5LMRk2M3
15+
YPG2BfO67Kq5KwwSQVvVqoSLzxRzduio9br/GRsGqA==
16+
-----END CERTIFICATE-----

server.csr

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
-----BEGIN CERTIFICATE REQUEST-----
2+
MIIByjCCATMCAQAwgYkxCzAJBgNVBAYTAkNBMQ8wDQYDVQQIDAZRdWViZWMxDzAN
3+
BgNVBAcMBlF1ZWJlYzEVMBMGA1UECgwMeHBlbnNpYSBpbmMuMQwwCgYDVQQLDANG
4+
dW4xDTALBgNVBAMMBFJURkMxJDAiBgkqhkiG9w0BCQEWFWplYW5zZWJ0ckB4cGVu
5+
c2lhLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1YT2r0MPDgsSJf2m
6+
eATxY/1flJtOXZBmzhU9Tl6lELnXGpP09tbXFi0Q3Gh+06YrpRVsHsLDXe6BqUpz
7+
2N3T27F9L5HPioTWAtQeCt443jAHPdWNgKM/TbUY2dwVHlR0UyEcbs+//oSQ9258
8+
A29Hp5TpZn1V3PFn4Cwlruw/aXkCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAEC3
9+
/eAJlbPX8I/iqAyeaMQs4+m9Ce1zvInYpNqRVApgQ9hX5MAxUIkCDyx0TvBmVJbr
10+
pu17WMT57MlPJpXif87UoBx94B6lhQbqE1A5CDWs+UF0JRR1MgsVOkOwUSVOhilu
11+
YIyMieLBFH/zzt0ZwYlyL2pWZHRiUICLNEE71e5f
12+
-----END CERTIFICATE REQUEST-----

server.key

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIICXAIBAAKBgQDVhPavQw8OCxIl/aZ4BPFj/V+Um05dkGbOFT1OXqUQudcak/T2
3+
1tcWLRDcaH7TpiulFWwewsNd7oGpSnPY3dPbsX0vkc+KhNYC1B4K3jjeMAc91Y2A
4+
oz9NtRjZ3BUeVHRTIRxuz7/+hJD3bnwDb0enlOlmfVXc8WfgLCWu7D9peQIDAQAB
5+
AoGAOkNE+QAIbKGSuzEiqp9Wqx0pZqiWUqujkdpz1x22VwEO9B6pem2XVWLItgwB
6+
h4lRYYOd9CrbGpeJZAN/5w5oz4sjrSRoeaI1JIQM+ADuvVHB89NsIYK7ntWsQDNt
7+
un8dQcmvBmvo0JR69FADYK1bgs904EG5hIDc/qgBZ5TilXECQQD4c5F5mDF28JFt
8+
0dos9AVdUWwpUdpftuqgn39uBKrGJFJEIrZmfjMtcHcTu3ZMYZso8EVTxeVbMGcQ
9+
BRm7/uU9AkEA3AGyenP8nF1zrEct2Fpx8kksDdXMGdvv6M+tF0WTkS3ZOZy9vMTX
10+
9lHHCzTlXXlZqt1ZAw65wPDOMyjgkYzw7QJAAoZaIhwz1HuZXr5VM0O/kjUzni/g
11+
wjw/oiY8y0ds3Nqdo2ee5ue9aWbNLvwmtZwAUagvbCyEqiqRwY3rtwdeGQJBAIuk
12+
0CKFiGu/rXJGY8UV84l0BHBrqfcn8Ol3GEjTMs1Nqrm00YIF94YzdgGY+5UPN2kK
13+
wjr8l87tihRS9+eq7CkCQCBR6ar+PJ8EbrolKJ8LJNAoO7H+aBnkhaAadETElkjA
14+
aWF5wknFzHwSiWylsdmHbj//H4v18QoUnS7XzherTuA=
15+
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)