File tree Expand file tree Collapse file tree 6 files changed +140
-0
lines changed
Expand file tree Collapse file tree 6 files changed +140
-0
lines changed Original file line number Diff line number Diff line change 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+ } ) ;
Original file line number Diff line number Diff line change 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+ } ) ;
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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-----
Original file line number Diff line number Diff line change 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-----
Original file line number Diff line number Diff line change 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-----
You can’t perform that action at this time.
0 commit comments