60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | var net = require('net'); | ||
|  | var tls = require('tls'); | ||
|  | var http = require('http'); | ||
|  | var https = require('https'); | ||
|  | var sni = require('sni'); | ||
|  | 
 | ||
|  | var http80 = http.createServer(function (req, res) { | ||
|  |   res.end('Happy Day!'); | ||
|  | }); | ||
|  | 
 | ||
|  | var tcp80 = net.createServer(function (client) { | ||
|  |   http80.emit('connection', client); | ||
|  | }); | ||
|  | 
 | ||
|  | tcp80.listen(80, function () { | ||
|  |   console.log('listening on 80'); | ||
|  | }); | ||
|  | 
 | ||
|  | var tlsOpts = require('localhost.daplie.com-certificates').merge({}); | ||
|  | var https443 = https.createServer(tlsOpts, function (req, res) { | ||
|  |   res.end('Happy Encrypted Day!'); | ||
|  | }); | ||
|  | 
 | ||
|  | var tls443 = tls.createServer(tlsOpts, function (socket) { | ||
|  |   socket.on('data', function (chunk) { | ||
|  |     console.log('chunk', chunk.toString()); | ||
|  |   }); | ||
|  | }); | ||
|  | 
 | ||
|  | var tcp443 = net.createServer(function (client) { | ||
|  |   //tls443.emit('connection', client); // no go
 | ||
|  |   //return;
 | ||
|  | 
 | ||
|  |   client.once('data', function (chunk) { | ||
|  |     var servername = sni(chunk); | ||
|  | 
 | ||
|  |     console.log('servername:', servername); | ||
|  | 
 | ||
|  |     //client.push(chunk);
 | ||
|  | 
 | ||
|  |     https443.emit('connection', client); | ||
|  |     //tls443.emit('connection', client); // no go
 | ||
|  |     //client.pause();
 | ||
|  |     process.nextTick(function () { | ||
|  |       //client.emit('data', chunk);
 | ||
|  |       client.push(chunk); | ||
|  |       client.emit('readable', chunk); | ||
|  |       //client.resume();
 | ||
|  |     }); | ||
|  | 
 | ||
|  |     //client.resume();
 | ||
|  |   }); | ||
|  | }); | ||
|  | 
 | ||
|  | tcp443.listen(443, function () { | ||
|  |   console.log('listening on 443'); | ||
|  | }); |