mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-22 02:25:05 +00:00
56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
var fs = require('fs');
|
|
var path = require('path');
|
|
var http2 = require('..');
|
|
|
|
// We cache one file to be able to do simple performance tests without waiting for the disk
|
|
var cachedFile = fs.readFileSync(path.join(__dirname, './server.js'));
|
|
var cachedUrl = '/server.js';
|
|
|
|
// The callback to handle requests
|
|
function onRequest(request, response) {
|
|
var filename = path.join(__dirname, request.url);
|
|
|
|
// Serving server.js from cache. Useful for microbenchmarks.
|
|
if (request.url === cachedUrl) {
|
|
if (response.push) {
|
|
// Also push down the client js, since it's possible if the requester wants
|
|
// one, they want both.
|
|
var push = response.push('/client.js');
|
|
push.writeHead(200);
|
|
fs.createReadStream(path.join(__dirname, '/client.js')).pipe(push);
|
|
}
|
|
response.end(cachedFile);
|
|
}
|
|
|
|
// Reading file from disk if it exists and is safe.
|
|
else if ((filename.indexOf(__dirname) === 0) && fs.existsSync(filename) && fs.statSync(filename).isFile()) {
|
|
response.writeHead('200');
|
|
|
|
fs.createReadStream(filename).pipe(response);
|
|
}
|
|
|
|
// Otherwise responding with 404.
|
|
else {
|
|
response.writeHead('404');
|
|
response.end();
|
|
}
|
|
}
|
|
|
|
// Creating a bunyan logger (optional)
|
|
var log = require('../test/util').createLogger('server');
|
|
|
|
// Creating the server in plain or TLS mode (TLS mode is the default)
|
|
var server;
|
|
if (process.env.HTTP2_PLAIN) {
|
|
server = http2.raw.createServer({
|
|
log: log
|
|
}, onRequest);
|
|
} else {
|
|
server = http2.createServer({
|
|
log: log,
|
|
key: fs.readFileSync(path.join(__dirname, '/localhost.key')),
|
|
cert: fs.readFileSync(path.join(__dirname, '/localhost.crt'))
|
|
}, onRequest);
|
|
}
|
|
server.listen(process.env.HTTP2_PORT || 8080);
|