From 2f783ce1a2e78d887c2e589e80976886e6dd4bcc Mon Sep 17 00:00:00 2001
From: Dorian Niemiec
Date: Mon, 26 Aug 2024 19:23:52 +0200
Subject: [PATCH] Lint out the codebase
---
src/handlers/clientErrorHandler.js | 43 ++---
src/handlers/noproxyHandler.js | 19 ++-
src/handlers/proxyHandler.js | 19 ++-
src/handlers/requestHandler.js | 35 +++--
src/index.js | 120 +++++++-------
src/middleware/defaultHandlerChecks.js | 19 ++-
.../nonStandardCodesAndHttpAuthentication.js | 7 +-
src/middleware/rewriteURL.js | 28 ++--
.../staticFileServingAndDirectoryListings.js | 148 ++++++++++--------
src/middleware/status.js | 109 ++++++-------
src/middleware/urlSanitizer.js | 20 ++-
src/middleware/webRootPostfixes.js | 24 +--
src/utils/generateServerString.js | 8 +-
13 files changed, 326 insertions(+), 273 deletions(-)
diff --git a/src/handlers/clientErrorHandler.js b/src/handlers/clientErrorHandler.js
index 679dafe..f21fc99 100644
--- a/src/handlers/clientErrorHandler.js
+++ b/src/handlers/clientErrorHandler.js
@@ -268,11 +268,11 @@ function clientErrorHandler(err, socket) {
.replace(
/{errorMessage}/g,
errorCode.toString() +
- " " +
- http.STATUS_CODES[errorCode]
- .replace(/&/g, "&")
- .replace(//g, ">")
+ " " +
+ http.STATUS_CODES[errorCode]
+ .replace(/&/g, "&")
+ .replace(//g, ">"),
)
.replace(/{errorDesc}/g, serverHTTPErrorDescs[errorCode])
.replace(
@@ -284,7 +284,7 @@ function clientErrorHandler(err, socket) {
.replace(/\r\n/g, "
")
.replace(/\n/g, "
")
.replace(/\r/g, "
")
- .replace(/ {2}/g, " ")
+ .replace(/ {2}/g, " "),
)
.replace(
/{server}/g,
@@ -296,7 +296,7 @@ function clientErrorHandler(err, socket) {
)
.replace(/&/g, "&")
.replace(//g, ">")
+ .replace(/>/g, ">"),
)
.replace(
/{contact}/g,
@@ -305,7 +305,7 @@ function clientErrorHandler(err, socket) {
.replace(//g, ">")
.replace(/\./g, "[dot]")
- .replace(/@/g, "[at]")
+ .replace(/@/g, "[at]"),
)}`,
);
res.end();
@@ -377,11 +377,11 @@ function clientErrorHandler(err, socket) {
}
res.writeHead(errorCode, http.STATUS_CODES[errorCode], cheaders);
res.write(
- (
- `{errorMessage}{errorMessage}
{errorDesc}
${additionalError == 404
+ `{errorMessage}{errorMessage}
{errorDesc}
${
+ additionalError == 404
? ""
- : "Additionally, a {additionalError} error occurred while loading an error page.
"}{server}
`
- )
+ : "Additionally, a {additionalError} error occurred while loading an error page.
"
+ }{server}
`
.replace(
/{errorMessage}/g,
errorCode.toString() +
@@ -438,16 +438,19 @@ function clientErrorHandler(err, socket) {
process.reqcounter++;
process.malformedcounter++;
logFacilities.locmessage(
- `Somebody connected to ${config.secure && fromMain
- ? (typeof config.sport == "number" ? "port " : "socket ") + config.sport
- : (typeof config.port == "number" ? "port " : "socket ") +
- config.port}...`,
+ `Somebody connected to ${
+ config.secure && fromMain
+ ? (typeof config.sport == "number" ? "port " : "socket ") + config.sport
+ : (typeof config.port == "number" ? "port " : "socket ") + config.port
+ }...`,
);
logFacilities.reqmessage(
- `Client ${!reqip || reqip == ""
- ? "[unknown client]"
- : reqip +
- (reqport && reqport !== 0 && reqport != "" ? ":" + reqport : "")} sent invalid request.`,
+ `Client ${
+ !reqip || reqip == ""
+ ? "[unknown client]"
+ : reqip +
+ (reqport && reqport !== 0 && reqport != "" ? ":" + reqport : "")
+ } sent invalid request.`,
);
try {
head = fs.existsSync("./.head")
diff --git a/src/handlers/noproxyHandler.js b/src/handlers/noproxyHandler.js
index fe71178..76e3916 100644
--- a/src/handlers/noproxyHandler.js
+++ b/src/handlers/noproxyHandler.js
@@ -33,16 +33,19 @@ function noproxyHandler(req, socket, head) {
var reqport = socket.remotePort;
process.reqcounter++;
logFacilities.locmessage(
- `Somebody connected to ${config.secure
- ? (typeof config.sport == "number" ? "port " : "socket ") + config.sport
- : (typeof config.port == "number" ? "port " : "socket ") +
- config.port}...`,
+ `Somebody connected to ${
+ config.secure
+ ? (typeof config.sport == "number" ? "port " : "socket ") + config.sport
+ : (typeof config.port == "number" ? "port " : "socket ") + config.port
+ }...`,
);
logFacilities.reqmessage(
- `Client ${!reqip || reqip == ""
- ? "[unknown client]"
- : reqip +
- (reqport && reqport !== 0 && reqport != "" ? ":" + reqport : "")} wants to proxy ${req.url} through this server`,
+ `Client ${
+ !reqip || reqip == ""
+ ? "[unknown client]"
+ : reqip +
+ (reqport && reqport !== 0 && reqport != "" ? ":" + reqport : "")
+ } wants to proxy ${req.url} through this server`,
);
if (req.headers["user-agent"] != undefined)
logFacilities.reqmessage("Client uses " + req.headers["user-agent"]);
diff --git a/src/handlers/proxyHandler.js b/src/handlers/proxyHandler.js
index 0f88c7e..c6a8f04 100644
--- a/src/handlers/proxyHandler.js
+++ b/src/handlers/proxyHandler.js
@@ -39,16 +39,19 @@ function proxyHandler(req, socket, head) {
var reqport = socket.remotePort;
process.reqcounter++;
logFacilities.locmessage(
- `Somebody connected to ${config.secure
- ? (typeof config.sport == "number" ? "port " : "socket ") + config.sport
- : (typeof config.port == "number" ? "port " : "socket ") +
- config.port}...`,
+ `Somebody connected to ${
+ config.secure
+ ? (typeof config.sport == "number" ? "port " : "socket ") + config.sport
+ : (typeof config.port == "number" ? "port " : "socket ") + config.port
+ }...`,
);
logFacilities.reqmessage(
- `Client ${!reqip || reqip == ""
- ? "[unknown client]"
- : reqip +
- (reqport && reqport !== 0 && reqport != "" ? ":" + reqport : "")} wants to proxy ${req.url} through this server`,
+ `Client ${
+ !reqip || reqip == ""
+ ? "[unknown client]"
+ : reqip +
+ (reqport && reqport !== 0 && reqport != "" ? ":" + reqport : "")
+ } wants to proxy ${req.url} through this server`,
);
if (req.headers["user-agent"] != undefined)
logFacilities.reqmessage("Client uses " + req.headers["user-agent"]);
diff --git a/src/handlers/requestHandler.js b/src/handlers/requestHandler.js
index 130ab40..04bda74 100644
--- a/src/handlers/requestHandler.js
+++ b/src/handlers/requestHandler.js
@@ -134,9 +134,7 @@ function requestHandler(req, res) {
req.socket.remoteAddress == "::1" ||
req.socket.remoteAddress == "::ffff:127.0.0.1" ||
req.socket.remoteAddress == "127.0.0.1" ||
- req.socket.remoteAddress == "localhost" ||
- req.socket.remoteAddress == host ||
- req.socket.remoteAddress == "::ffff:" + host)
+ req.socket.remoteAddress == "localhost")
) {
let headers = config.getCustomHeaders();
res.writeHead(204, http.STATUS_CODES[204], headers);
@@ -204,10 +202,11 @@ function requestHandler(req, res) {
req.isProxy = false;
if (req.url[0] != "/" && req.url != "*") req.isProxy = true;
logFacilities.locmessage(
- `Somebody connected to ${config.secure && fromMain
- ? (typeof config.sport == "number" ? "port " : "socket ") + config.sport
- : (typeof config.port == "number" ? "port " : "socket ") +
- config.port}...`,
+ `Somebody connected to ${
+ config.secure && fromMain
+ ? (typeof config.sport == "number" ? "port " : "socket ") + config.sport
+ : (typeof config.port == "number" ? "port " : "socket ") + config.port
+ }...`,
);
if (req.socket == null) {
@@ -267,10 +266,13 @@ function requestHandler(req, res) {
}
logFacilities.reqmessage(
- `Client ${!reqip || reqip == ""
- ? "[unknown client]"
- : reqip +
- (reqport && reqport !== 0 && reqport != "" ? ":" + reqport : "")} wants ${req.method == "GET"
+ `Client ${
+ !reqip || reqip == ""
+ ? "[unknown client]"
+ : reqip +
+ (reqport && reqport !== 0 && reqport != "" ? ":" + reqport : "")
+ } wants ${
+ req.method == "GET"
? "content in "
: req.method == "POST"
? "to post content in "
@@ -280,7 +282,8 @@ function requestHandler(req, res) {
? "to delete content in "
: req.method == "PATCH"
? "to patch content in "
- : "to access content using " + req.method + " method in "}${req.headers.host == undefined || req.isProxy ? "" : req.headers.host}${req.url}`,
+ : "to access content using " + req.method + " method in "
+ }${req.headers.host == undefined || req.isProxy ? "" : req.headers.host}${req.url}`,
);
if (req.headers["user-agent"] != undefined)
logFacilities.reqmessage("Client uses " + req.headers["user-agent"]);
@@ -528,11 +531,11 @@ function requestHandler(req, res) {
res.writeHead(errorCode, http.STATUS_CODES[errorCode], cheaders);
res.write(
- (
- `{errorMessage}{errorMessage}
{errorDesc}
${additionalError == 404
+ `{errorMessage}{errorMessage}
{errorDesc}
${
+ additionalError == 404
? ""
- : "Additionally, a {additionalError} error occurred while loading an error page.
"}{server}
`
- )
+ : "Additionally, a {additionalError} error occurred while loading an error page.
"
+ }{server}
`
.replace(
/{errorMessage}/g,
errorCode.toString() +
diff --git a/src/index.js b/src/index.js
index 31e1abb..16acf50 100644
--- a/src/index.js
+++ b/src/index.js
@@ -657,8 +657,7 @@ if (!disableMods) {
if (mod.modInfo) modInfos.push(mod.modInfo);
else {
modInfos.push({
- name:
- `Unknown mod (${modFileRaw}; module.exports.modInfo not set)`,
+ name: `Unknown mod (${modFileRaw}; module.exports.modInfo not set)`,
version: "ERROR",
});
}
@@ -772,12 +771,15 @@ if (!disableMods) {
if (fs.existsSync(SSJSPath) && fs.statSync(SSJSPath).isFile()) {
try {
// Prepend necessary modules and variables to the custom server side script
- const modhead =
- `var readline = require('readline');\r\nvar os = require('os');\r\nvar http = require('http');\r\nvar url = require('url');\r\nvar fs = require('fs');\r\nvar path = require('path');\r\n${hexstrbase64 === undefined
+ const modhead = `var readline = require('readline');\r\nvar os = require('os');\r\nvar http = require('http');\r\nvar url = require('url');\r\nvar fs = require('fs');\r\nvar path = require('path');\r\n${
+ hexstrbase64 === undefined
? ""
- : "var hexstrbase64 = require('../hexstrbase64/index.js');\r\n"}${crypto.__disabled__ === undefined
- ? "var crypto = require('crypto');\r\nvar https = require('https');\r\n"
- : ""}var stream = require(\'stream\');\r\nvar customvar1;\r\nvar customvar2;\r\nvar customvar3;\r\nvar customvar4;\r\n\r\nfunction Mod() {}\r\nMod.prototype.callback = function callback(req, res, serverconsole, responseEnd, href, ext, uobject, search, defaultpage, users, page404, head, foot, fd, elseCallback, configJSON, callServerError, getCustomHeaders, origHref, redirect, parsePostData, authUser) {\r\nreturn function () {\r\nvar disableEndElseCallbackExecute = false;\r\nfunction filterHeaders(e){var r={};return Object.keys(e).forEach((function(t){null!==e[t]&&void 0!==e[t]&&("object"==typeof e[t]?r[t]=JSON.parse(JSON.stringify(e[t])):r[t]=e[t])})),r}\r\nfunction checkHostname(e){if(void 0===e||"*"==e)return!0;if(req.headers.host&&0==e.indexOf("*.")&&"*."!=e){var r=e.substring(2);if(req.headers.host==r||req.headers.host.indexOf("."+r)==req.headers.host.length-r.length-1)return!0}else if(req.headers.host&&req.headers.host==e)return!0;return!1}\r\nfunction checkHref(e){return href==e||"win32"==os.platform()&&href.toLowerCase()==e.toLowerCase()}\r\n`;
+ : "var hexstrbase64 = require('../hexstrbase64/index.js');\r\n"
+ }${
+ crypto.__disabled__ === undefined
+ ? "var crypto = require('crypto');\r\nvar https = require('https');\r\n"
+ : ""
+ }var stream = require(\'stream\');\r\nvar customvar1;\r\nvar customvar2;\r\nvar customvar3;\r\nvar customvar4;\r\n\r\nfunction Mod() {}\r\nMod.prototype.callback = function callback(req, res, serverconsole, responseEnd, href, ext, uobject, search, defaultpage, users, page404, head, foot, fd, elseCallback, configJSON, callServerError, getCustomHeaders, origHref, redirect, parsePostData, authUser) {\r\nreturn function () {\r\nvar disableEndElseCallbackExecute = false;\r\nfunction filterHeaders(e){var r={};return Object.keys(e).forEach((function(t){null!==e[t]&&void 0!==e[t]&&("object"==typeof e[t]?r[t]=JSON.parse(JSON.stringify(e[t])):r[t]=e[t])})),r}\r\nfunction checkHostname(e){if(void 0===e||"*"==e)return!0;if(req.headers.host&&0==e.indexOf("*.")&&"*."!=e){var r=e.substring(2);if(req.headers.host==r||req.headers.host.indexOf("."+r)==req.headers.host.length-r.length-1)return!0}else if(req.headers.host&&req.headers.host==e)return!0;return!1}\r\nfunction checkHref(e){return href==e||"win32"==os.platform()&&href.toLowerCase()==e.toLowerCase()}\r\n`;
const modfoot =
"\r\nif(!disableEndElseCallbackExecute) {\r\ntry{\r\nelseCallback();\r\n} catch(err) {\r\n}\r\n}\r\n}\r\n}\r\nmodule.exports = Mod;";
// Write the modified server side script to the temp folder
@@ -872,9 +874,11 @@ function listeningMessage() {
if (process.serverConfig.secure && (sListenToLocalhost || sListenToAny)) {
if (typeof process.serverConfig.sport === "number") {
serverconsole.locmessage(
- `* https://localhost${process.serverConfig.sport == 443
- ? ""
- : ":" + process.serverConfig.sport}`,
+ `* https://localhost${
+ process.serverConfig.sport == 443
+ ? ""
+ : ":" + process.serverConfig.sport
+ }`,
);
} else {
serverconsole.locmessage("* " + process.serverConfig.sport); // Unix socket or Windows named pipe
@@ -889,9 +893,9 @@ function listeningMessage() {
) {
if (typeof process.serverConfig.port === "number") {
serverconsole.locmessage(
- `* http://localhost${process.serverConfig.port == 80
- ? ""
- : ":" + process.serverConfig.port}`,
+ `* http://localhost${
+ process.serverConfig.port == 80 ? "" : ":" + process.serverConfig.port
+ }`,
);
} else {
serverconsole.locmessage("* " + process.serverConfig.port); // Unix socket or Windows named pipe
@@ -904,9 +908,11 @@ function listeningMessage() {
(!sListenToAny || (host != "" && host != "[offline]"))
)
serverconsole.locmessage(
- `* https://${sAccHost.indexOf(":") > -1 ? "[" + sAccHost + "]" : sAccHost}${process.serverConfig.sport == 443
- ? ""
- : ":" + process.serverConfig.sport}`,
+ `* https://${sAccHost.indexOf(":") > -1 ? "[" + sAccHost + "]" : sAccHost}${
+ process.serverConfig.sport == 443
+ ? ""
+ : ":" + process.serverConfig.sport
+ }`,
);
if (
!(
@@ -918,17 +924,19 @@ function listeningMessage() {
typeof process.serverConfig.port === "number"
)
serverconsole.locmessage(
- `* http://${accHost.indexOf(":") > -1 ? "[" + accHost + "]" : accHost}${process.serverConfig.port == 80
- ? ""
- : ":" + process.serverConfig.port}`,
+ `* http://${accHost.indexOf(":") > -1 ? "[" + accHost + "]" : accHost}${
+ process.serverConfig.port == 80 ? "" : ":" + process.serverConfig.port
+ }`,
);
ipStatusCallback(() => {
if (pubip != "") {
if (process.serverConfig.secure && !sListenToLocalhost)
serverconsole.locmessage(
- `* https://${pubip.indexOf(":") > -1 ? "[" + pubip + "]" : pubip}${process.serverConfig.spubport == 443
- ? ""
- : ":" + process.serverConfig.spubport}`,
+ `* https://${pubip.indexOf(":") > -1 ? "[" + pubip + "]" : pubip}${
+ process.serverConfig.spubport == 443
+ ? ""
+ : ":" + process.serverConfig.spubport
+ }`,
);
if (
!(
@@ -938,17 +946,21 @@ function listeningMessage() {
!listenToLocalhost
)
serverconsole.locmessage(
- `* http://${pubip.indexOf(":") > -1 ? "[" + pubip + "]" : pubip}${process.serverConfig.pubport == 80
- ? ""
- : ":" + process.serverConfig.pubport}`,
+ `* http://${pubip.indexOf(":") > -1 ? "[" + pubip + "]" : pubip}${
+ process.serverConfig.pubport == 80
+ ? ""
+ : ":" + process.serverConfig.pubport
+ }`,
);
}
if (domain != "") {
if (process.serverConfig.secure && !sListenToLocalhost)
serverconsole.locmessage(
- `* https://${domain}${process.serverConfig.spubport == 443
- ? ""
- : ":" + process.serverConfig.spubport}`,
+ `* https://${domain}${
+ process.serverConfig.spubport == 443
+ ? ""
+ : ":" + process.serverConfig.spubport
+ }`,
);
if (
!(
@@ -958,9 +970,11 @@ function listeningMessage() {
!listenToLocalhost
)
serverconsole.locmessage(
- `* http://${domain}${process.serverConfig.pubport == 80
- ? ""
- : ":" + process.serverConfig.pubport}`,
+ `* http://${domain}${
+ process.serverConfig.pubport == 80
+ ? ""
+ : ":" + process.serverConfig.pubport
+ }`,
);
}
serverconsole.locmessage('For CLI help, you can type "help"');
@@ -1248,9 +1262,7 @@ let commands = {
mods: (args, log) => {
log("Mods:");
for (let i = 0; i < modInfos.length; i++) {
- log(
- `${(i + 1).toString()}. ${modInfos[i].name} ${modInfos[i].version}`,
- );
+ log(`${(i + 1).toString()}. ${modInfos[i].name} ${modInfos[i].version}`);
}
if (modInfos.length == 0) {
log("No mods installed.");
@@ -1823,23 +1835,27 @@ function start(init) {
)
)
serverconsole.locmessage(
- `Starting HTTP server at ${typeof process.serverConfig.port == "number"
- ? listenAddress
- ? (listenAddress.indexOf(":") > -1
- ? "[" + listenAddress + "]"
- : listenAddress) + ":"
- : "port "
- : ""}${process.serverConfig.port.toString()}...`,
+ `Starting HTTP server at ${
+ typeof process.serverConfig.port == "number"
+ ? listenAddress
+ ? (listenAddress.indexOf(":") > -1
+ ? "[" + listenAddress + "]"
+ : listenAddress) + ":"
+ : "port "
+ : ""
+ }${process.serverConfig.port.toString()}...`,
);
if (process.serverConfig.secure)
serverconsole.locmessage(
- `Starting HTTPS server at ${typeof process.serverConfig.sport == "number"
- ? sListenAddress
- ? (sListenAddress.indexOf(":") > -1
- ? "[" + sListenAddress + "]"
- : sListenAddress) + ":"
- : "port "
- : ""}${process.serverConfig.sport.toString()}...`,
+ `Starting HTTPS server at ${
+ typeof process.serverConfig.sport == "number"
+ ? sListenAddress
+ ? (sListenAddress.indexOf(":") > -1
+ ? "[" + sListenAddress + "]"
+ : sListenAddress) + ":"
+ : "port "
+ : ""
+ }${process.serverConfig.sport.toString()}...`,
);
}
@@ -1997,9 +2013,7 @@ function start(init) {
}
} catch (err) {
if (line != "") {
- process.send(
- `Can't execute command \"${line.split(" ")[0]}".`,
- );
+ process.send(`Can't execute command \"${line.split(" ")[0]}".`);
process.send("\x12END");
}
}
@@ -2065,9 +2079,7 @@ function start(init) {
cluster.workers[clusterID].removeAllListeners("message");
addListenersToWorker(cluster.workers[clusterID]);
}
- serverconsole.climessage(
- `Can't run command "${command}".`,
- );
+ serverconsole.climessage(`Can't run command "${command}".`);
}
});
if (command == "stop") {
diff --git a/src/middleware/defaultHandlerChecks.js b/src/middleware/defaultHandlerChecks.js
index 5597727..60645d8 100644
--- a/src/middleware/defaultHandlerChecks.js
+++ b/src/middleware/defaultHandlerChecks.js
@@ -12,14 +12,17 @@ module.exports = (req, res, logFacilities, config, next) => {
`Proxy not implementedProxy not implemented
${name
.replace(/&/g, "&")
.replace(//g, ">")} doesn't support proxy without proxy mod. If you're administator of this server, then install this mod in order to use ${name
- .replace(/&/g, "&")
- .replace(//g, ">")} as a proxy.
${config
- .generateServerString()
- .replace(/&/g, "&")
- .replace(//g, ">")}
`,
+ .replace(
+ />/g,
+ ">",
+ )} doesn't support proxy without proxy mod. If you're administator of this server, then install this mod in order to use ${name
+ .replace(/&/g, "&")
+ .replace(//g, ">")} as a proxy.
${config
+ .generateServerString()
+ .replace(/&/g, "&")
+ .replace(//g, ">")}