73 lines
No EOL
2.1 KiB
JavaScript
73 lines
No EOL
2.1 KiB
JavaScript
import createBareServer from '@tomphttp/bare-server-node';
|
|
import http from 'http';
|
|
import https from 'https';
|
|
import nodeStatic from 'node-static';
|
|
import fs from 'fs';
|
|
import * as custombare from './static/customBare.mjs';
|
|
|
|
|
|
const httpPort = 80;
|
|
const httpsPort = 443;
|
|
const debug = true;
|
|
|
|
|
|
|
|
const bareServer = createBareServer('/bare/', {
|
|
logErrors: false,
|
|
localAddress: undefined,
|
|
maintainer: {
|
|
email: 'tomphttp@sys32.dev',
|
|
website: 'https://github.com/tomphttp/',
|
|
},
|
|
});
|
|
|
|
const serve = new nodeStatic.Server('static/');
|
|
const patronServe = new nodeStatic.Server('static/');
|
|
const fakeServe = new nodeStatic.Server('fakeStatic/');
|
|
|
|
const httpServer = http.createServer();
|
|
const httpsServer = https.createServer();
|
|
|
|
fs.readdir('/etc/letsencrypt/live', { withFileTypes: true }, (err, files) => {
|
|
if (!err)
|
|
files
|
|
.filter(file => file.isDirectory())
|
|
.map(folder => folder.name)
|
|
.forEach(dir => {
|
|
httpsServer.addContext(dir, {
|
|
key: fs.readFileSync(`/etc/letsencrypt/live/${dir}/privkey.pem`),
|
|
cert: fs.readFileSync(`/etc/letsencrypt/live/${dir}/fullchain.pem`)
|
|
});
|
|
});
|
|
});
|
|
|
|
httpServer.on('request', request);
|
|
httpsServer.on('request', request);
|
|
httpServer.on('upgrade', upgrade);
|
|
httpsServer.on('upgrade', upgrade);
|
|
|
|
function request(request, response) {
|
|
if (custombare.route(request, response)) return true;
|
|
if (debug === true) {
|
|
console.log(`[${request.method}] - ${request.url} - LINK: ${request.headers['host']} - AGENT: ${request.headers['user-agent']}`);
|
|
}
|
|
|
|
if (bareServer.shouldRoute(request)) {
|
|
bareServer.routeRequest(request, response);
|
|
} else {
|
|
serve.serve(request, response);
|
|
}
|
|
}
|
|
|
|
function upgrade(req, socket, head) {
|
|
if (bareServer.shouldRoute(req)) {
|
|
bareServer.routeUpgrade(req, socket, head);
|
|
} else {
|
|
socket.end();
|
|
}
|
|
}
|
|
|
|
httpServer.listen(httpPort);
|
|
httpsServer.listen(httpsPort);
|
|
|
|
console.log("Server running on http://localhost:" + httpPort + " and https://localhost:" + httpsPort); |