From 488bee1a9504306ddd69376ca3cddcfebc044737 Mon Sep 17 00:00:00 2001
From: Dorian Niemiec
Date: Mon, 26 Aug 2024 19:21:52 +0200
Subject: [PATCH] Replace some strings with template strings
---
src/handlers/clientErrorHandler.js | 122 ++++-----
src/handlers/noproxyHandler.js | 22 +-
src/handlers/proxyHandler.js | 24 +-
src/handlers/requestHandler.js | 33 +--
src/handlers/serverErrorHandler.js | 4 +-
src/index.js | 242 ++++++------------
src/middleware/checkForbiddenPaths.js | 2 +-
src/middleware/defaultHandlerChecks.js | 28 +-
.../nonStandardCodesAndHttpAuthentication.js | 22 +-
src/middleware/redirects.js | 6 +-
src/middleware/rewriteURL.js | 28 +-
.../staticFileServingAndDirectoryListings.js | 129 ++++------
src/middleware/status.js | 115 ++++-----
src/middleware/urlSanitizer.js | 17 +-
src/middleware/webRootPostfixes.js | 28 +-
src/utils/generateServerString.js | 13 +-
16 files changed, 316 insertions(+), 519 deletions(-)
diff --git a/src/handlers/clientErrorHandler.js b/src/handlers/clientErrorHandler.js
index ecc54b3..679dafe 100644
--- a/src/handlers/clientErrorHandler.js
+++ b/src/handlers/clientErrorHandler.js
@@ -64,7 +64,7 @@ function clientErrorHandler(err, socket) {
headername.match(/[^\x09\x20-\x7e\x80-\xff]|.:/) ||
headerValueS.match(/[^\x09\x20-\x7e\x80-\xff]/)
)
- throw new Error("Invalid header!!! (" + headername + ")");
+ throw new Error(`Invalid header!!! (${headername})`);
head += headername + ": " + headerValueS;
});
} else {
@@ -72,7 +72,7 @@ function clientErrorHandler(err, socket) {
headername.match(/[^\x09\x20-\x7e\x80-\xff]|.:/) ||
headers[headername].match(/[^\x09\x20-\x7e\x80-\xff]/)
)
- throw new Error("Invalid header!!! (" + headername + ")");
+ throw new Error(`Invalid header!!! (${headername})`);
head += headername + ": " + headers[headername];
}
head += "\r\n";
@@ -264,51 +264,49 @@ function clientErrorHandler(err, socket) {
// Disable custom error page for HTTP SSL error
res.writeHead(errorCode, http.STATUS_CODES[errorCode], cheaders);
res.write(
- '{errorMessage}{errorMessage}
{errorDesc}
{server}
"
- .replace(
- /{errorMessage}/g,
- errorCode.toString() +
- " " +
- http.STATUS_CODES[errorCode]
- .replace(/&/g, "&")
- .replace(//g, ">"),
+ `{errorMessage}{errorMessage}
{errorDesc}
{server}
"
+ .replace(
+ /{errorMessage}/g,
+ errorCode.toString() +
+ " " +
+ http.STATUS_CODES[errorCode]
+ .replace(/&/g, "&")
+ .replace(//g, ">")
+ )
+ .replace(/{errorDesc}/g, serverHTTPErrorDescs[errorCode])
+ .replace(
+ /{stack}/g,
+ stack
+ .replace(/&/g, "&")
+ .replace(//g, ">")
+ .replace(/\r\n/g, "
")
+ .replace(/\n/g, "
")
+ .replace(/\r/g, "
")
+ .replace(/ {2}/g, " ")
+ )
+ .replace(
+ /{server}/g,
+ (
+ config.generateServerString() +
+ (!config.exposeModsInErrorPages || extName == undefined
+ ? ""
+ : " " + extName)
)
- .replace(/{errorDesc}/g, serverHTTPErrorDescs[errorCode])
- .replace(
- /{stack}/g,
- stack
- .replace(/&/g, "&")
- .replace(//g, ">")
- .replace(/\r\n/g, "
")
- .replace(/\n/g, "
")
- .replace(/\r/g, "
")
- .replace(/ {2}/g, " "),
- )
- .replace(
- /{server}/g,
- (
- config.generateServerString() +
- (!config.exposeModsInErrorPages || extName == undefined
- ? ""
- : " " + extName)
- )
- .replace(/&/g, "&")
- .replace(//g, ">"),
- )
- .replace(
- /{contact}/g,
- config.serverAdministratorEmail
- .replace(/&/g, "&")
- .replace(//g, ">")
- .replace(/\./g, "[dot]")
- .replace(/@/g, "[at]"),
- ),
+ .replace(/&/g, "&")
+ .replace(//g, ">")
+ )
+ .replace(
+ /{contact}/g,
+ config.serverAdministratorEmail
+ .replace(/&/g, "&")
+ .replace(//g, ">")
+ .replace(/\./g, "[dot]")
+ .replace(/@/g, "[at]")
+ )}`,
);
res.end();
} else {
@@ -380,13 +378,9 @@ 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,
@@ -444,20 +438,16 @@ 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")
@@ -486,7 +476,7 @@ function clientErrorHandler(err, socket) {
return;
} else {
logFacilities.errmessage(
- "An SSL error occured: " + (err.code ? err.code : err.message),
+ `An SSL error occured: ${err.code ? err.code : err.message}`,
);
callServerError(400);
return;
@@ -494,7 +484,7 @@ function clientErrorHandler(err, socket) {
}
if (err.code && err.code.indexOf("ERR_HTTP2_") == 0) {
- logFacilities.errmessage("An HTTP/2 error occured: " + err.code);
+ logFacilities.errmessage(`An HTTP/2 error occured: ${err.code}`);
callServerError(400);
return;
}
diff --git a/src/handlers/noproxyHandler.js b/src/handlers/noproxyHandler.js
index f01b8f7..fe71178 100644
--- a/src/handlers/noproxyHandler.js
+++ b/src/handlers/noproxyHandler.js
@@ -33,22 +33,16 @@ 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 1552852..0f88c7e 100644
--- a/src/handlers/proxyHandler.js
+++ b/src/handlers/proxyHandler.js
@@ -39,22 +39,16 @@ 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"]);
@@ -81,7 +75,7 @@ function proxyHandler(req, socket, head) {
}
} else {
logFacilities.errmessage(
- name + " doesn't support proxy without proxy mod.",
+ `${name} doesn't support proxy without proxy mod.`,
);
if (!socket.destroyed) socket.end("HTTP/1.1 501 Not Implemented\n\n");
}
diff --git a/src/handlers/requestHandler.js b/src/handlers/requestHandler.js
index c2c5320..130ab40 100644
--- a/src/handlers/requestHandler.js
+++ b/src/handlers/requestHandler.js
@@ -204,12 +204,10 @@ 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) {
@@ -269,13 +267,10 @@ 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 "
@@ -285,9 +280,7 @@ 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"]);
@@ -536,13 +529,9 @@ 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,
diff --git a/src/handlers/serverErrorHandler.js b/src/handlers/serverErrorHandler.js
index ceb60c8..8f54d47 100644
--- a/src/handlers/serverErrorHandler.js
+++ b/src/handlers/serverErrorHandler.js
@@ -15,7 +15,7 @@ function serverErrorHandler(err, isRedirect, server, start) {
: serverErrorDescs["UNKNOWN"],
);
serverconsole.locmessage(
- (isRedirect ? attmtsRedir : attmts) + " attempts left.",
+ `${isRedirect ? attmtsRedir : attmts} attempts left.`,
);
} else {
try {
@@ -59,7 +59,7 @@ process.messageEventListeners.push((worker, serverconsole) => {
? serverErrorDescs[errCode]
: serverErrorDescs["UNKNOWN"],
);
- serverconsole.locmessage(tries + " attempts left.");
+ serverconsole.locmessage(`${tries} attempts left.`);
}
if (message.length >= 9 && message.indexOf("\x12ERRCRASH") == 0) {
const errno = os.constants.errno[message.substring(9)];
diff --git a/src/index.js b/src/index.js
index 2c51112..31e1abb 100644
--- a/src/index.js
+++ b/src/index.js
@@ -658,9 +658,7 @@ if (!disableMods) {
else {
modInfos.push({
name:
- "Unknown mod (" +
- modFileRaw +
- "; module.exports.modInfo not set)",
+ `Unknown mod (${modFileRaw}; module.exports.modInfo not set)`,
version: "ERROR",
});
}
@@ -736,7 +734,7 @@ if (!disableMods) {
} catch (err) {
// If failed to read info file, add a placeholder entry to modInfos with an error message
modInfos.push({
- name: "Unknown mod (" + modFileRaw + ";" + err.message + ")",
+ name: `Unknown mod (${modFileRaw}; ${err.message})`,
version: "ERROR",
});
}
@@ -775,14 +773,11 @@ if (!disableMods) {
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
+ `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
@@ -877,10 +872,9 @@ 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
@@ -895,10 +889,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
@@ -911,11 +904,9 @@ 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 (
!(
@@ -927,21 +918,17 @@ 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 (
!(
@@ -951,21 +938,17 @@ 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 (
!(
@@ -975,11 +958,9 @@ 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"');
@@ -994,8 +975,7 @@ function listeningMessage() {
sendStatistics(modInfos, (err) => {
if (err)
serverconsole.locwarnmessage(
- "There was a problem, when sending data to statistics server! Reason: " +
- err.message,
+ `There was a problem, when sending data to statistics server! Reason: ${err.message}`,
);
});
}
@@ -1223,7 +1203,7 @@ let commands = {
log("Server closed.");
if (cluster.isPrimary !== undefined) process.send("\x12CLOSE");
} catch (err) {
- log("Cannot close server! Reason: " + err.message);
+ log(`Cannot close server! Reason: ${err.message}`);
}
},
open: (args, log) => {
@@ -1259,21 +1239,17 @@ let commands = {
}
log("Server opened.");
} catch (err) {
- log("Cannot open server! Reason: " + err.message);
+ log(`Cannot open server! Reason: ${err.message}`);
}
},
help: (args, log) => {
- log("Server commands:\n" + Object.keys(commands).join(" "));
+ log(`Server commands:\n${Object.keys(commands).join(" ")}`);
},
mods: (args, log) => {
log("Mods:");
for (let i = 0; i < modInfos.length; i++) {
log(
- (i + 1).toString() +
- ". " +
- modInfos[i].name +
- " " +
- modInfos[i].version,
+ `${(i + 1).toString()}. ${modInfos[i].name} ${modInfos[i].version}`,
);
}
if (modInfos.length == 0) {
@@ -1340,8 +1316,8 @@ let commands = {
},
restart: (args, log) => {
if (cluster.isPrimary === undefined)
- log("This command is not supported on single-threaded " + name + ".");
- else log("This command need to be run in " + name + " master.");
+ log(`This command is not supported on single-threaded ${name}.`);
+ else log(`This command need to be run in ${name} master.`);
},
};
@@ -1385,8 +1361,7 @@ function SVRJSFork() {
) {
threadLimitWarned = true;
serverconsole.locwarnmessage(
- name +
- " limited the number of workers to one, because of startup problems in Bun 1.0 and newer with shimmed (not native) clustering module. Reliability may suffer.",
+ `${name} limited the number of workers to one, because of startup problems in Bun 1.0 and newer with shimmed (not native) clustering module. Reliability may suffer.`,
);
}
if (
@@ -1402,8 +1377,7 @@ function SVRJSFork() {
} else {
if (SVRJSInitialized)
serverconsole.locwarnmessage(
- name +
- " limited the number of workers to one, because of startup problems in Bun 1.0 and newer with shimmed (not native) clustering module. Reliability may suffer.",
+ `${name} limited the number of workers to one, because of startup problems in Bun 1.0 and newer with shimmed (not native) clustering module. Reliability may suffer.`,
);
}
} catch (err) {
@@ -1419,8 +1393,7 @@ function SVRJSFork() {
) {
threadLimitWarned = true;
serverconsole.locwarnmessage(
- name +
- " limited the number of workers to one, because of startup problems in Bun 1.0 and newer with shimmed (not native) clustering module. Reliability may suffer.",
+ `${name} limited the number of workers to one, because of startup problems in Bun 1.0 and newer with shimmed (not native) clustering module. Reliability may suffer.`,
);
}
if (
@@ -1436,8 +1409,7 @@ function SVRJSFork() {
} else {
if (SVRJSInitialized)
serverconsole.locwarnmessage(
- name +
- " limited the number of workers to one, because of startup problems in Bun 1.0 and newer with shimmed (not native) clustering module. Reliability may suffer.",
+ `${name} limited the number of workers to one, because of startup problems in Bun 1.0 and newer with shimmed (not native) clustering module. Reliability may suffer.`,
);
}
} else {
@@ -1533,8 +1505,7 @@ function msgListener(message) {
serverconsole.locmessage("Configuration saved.");
} else if (message.indexOf("\x12SAVEERR") == 0) {
serverconsole.locwarnmessage(
- "There was a problem while saving configuration file. Reason: " +
- message.substring(8),
+ `There was a problem while saving configuration file. Reason: ${message.substring(8)}`,
);
} else if (message[0] == "\x12") {
// Discard unrecognized control messages
@@ -1656,9 +1627,7 @@ function start(init) {
for (let i = 0; i < logo.length; i++) console.log(logo[i]); // Print logo
console.log();
console.log(
- "Welcome to \x1b[1m" +
- name +
- " - a web server running on Node.JS\x1b[0m",
+ `Welcome to \x1b[1m${name} - a web server running on Node.JS\x1b[0m`,
);
// Print warnings
@@ -1672,13 +1641,7 @@ function start(init) {
);
if (process.isBun) {
serverconsole.locwarnmessage(
- "Bun support is experimental. Some features of " +
- name +
- ", " +
- name +
- " mods and " +
- name +
- " server-side JavaScript may not work as expected.",
+ `Bun support is experimental. Some features of ${name}, ${name} mods and ${name} server-side JavaScript may not work as expected.`,
);
if (
process.isBun &&
@@ -1698,9 +1661,7 @@ function start(init) {
}
if (cluster.isPrimary === undefined)
serverconsole.locwarnmessage(
- "You're running " +
- name +
- " on single thread. Reliability may suffer, as the server is stopped after crash.",
+ `You're running ${name} on single thread. Reliability may suffer, as the server is stopped after crash.`,
);
if (crypto.__disabled__ !== undefined)
serverconsole.locwarnmessage(
@@ -1730,13 +1691,7 @@ function start(init) {
);
if (process.getuid && process.getuid() == 0)
serverconsole.locwarnmessage(
- "You're running " +
- name +
- " as root. It's recommended to run " +
- name +
- " as an non-root user. Running " +
- name +
- " as root may increase the risks of OS command execution vulnerabilities.",
+ `You're running ${name} as root. It's recommended to run ${name} as an non-root user. Running ${name} as root may increase the risks of OS command execution vulnerabilities.`,
);
if (
!process.isBun &&
@@ -1765,15 +1720,11 @@ function start(init) {
);
if (process.serverConfig.disableMods)
serverconsole.locwarnmessage(
- "" +
- name +
- " is running without mods and server-side JavaScript enabled. Web applications may not work as expected",
+ `${name} is running without mods and server-side JavaScript enabled. Web applications may not work as expected`,
);
if (process.serverConfig.optOutOfStatisticsServer)
serverconsole.locmessage(
- "" +
- name +
- " is configured to opt out of sending data to the statistics server.",
+ `${name} is configured to opt out of sending data to the statistics server.`,
);
console.log();
@@ -1781,9 +1732,7 @@ function start(init) {
if (process.isPrimary || process.isPrimary === undefined) {
modLoadingErrors.forEach(function (modLoadingError) {
serverconsole.locwarnmessage(
- 'There was a problem while loading a "' +
- String(modLoadingError.modName).replace(/[\r\n]/g, "") +
- '" mod.',
+ `There was a problem while loading a "${String(modLoadingError.modName).replace(/[\r\n]/g, "")}" mod.`,
);
serverconsole.locwarnmessage("Stack:");
serverconsole.locwarnmessage(
@@ -1808,28 +1757,21 @@ function start(init) {
const CPUs = os.cpus();
if (CPUs.length > 0)
serverconsole.locmessage(
- "CPU: " + (CPUs.length > 1 ? CPUs.length + "x " : "") + CPUs[0].model,
+ `CPU: ${CPUs.length > 1 ? CPUs.length + "x " : ""}${CPUs[0].model}`,
);
// Throw errors
if (vnum < 64)
throw new Error(
- "" +
- name +
- " requires Node.JS 10.0.0 and newer, but your Node.JS version isn't supported by " +
- name +
- ".",
+ `${name} requires Node.JS 10.0.0 and newer, but your Node.JS version isn't supported by ${name}.`,
);
if (configJSONRErr)
throw new Error(
- "Can't read " +
- name +
- " configuration file: " +
- configJSONRErr.message,
+ `Can't read ${name} configuration file: ${configJSONRErr.message}`,
);
if (configJSONPErr)
throw new Error(
- "" + name + " configuration parse error: " + configJSONPErr.message,
+ `${name} configuration parse error: ${configJSONPErr.message}`,
);
if (
process.serverConfig.enableHTTP2 &&
@@ -1837,15 +1779,11 @@ function start(init) {
typeof process.serverConfig.port != "number"
)
throw new Error(
- "HTTP/2 without HTTPS, along with Unix sockets/Windows named pipes aren't supported by " +
- name +
- ".",
+ `HTTP/2 without HTTPS, along with Unix sockets/Windows named pipes aren't supported by ${name}.`,
);
if (process.serverConfig.enableHTTP2 && http2.__disabled__ !== undefined)
throw new Error(
- "HTTP/2 isn't supported by your Node.JS version! You may not be able to use HTTP/2 with " +
- name +
- "",
+ `HTTP/2 isn't supported by your Node.JS version! You may not be able to use HTTP/2 with ${name}`,
);
if (listenAddress) {
if (listenAddress.match(/^[0-9]+$/))
@@ -1857,20 +1795,19 @@ function start(init) {
/^(?:2(?:2[4-9]|3[0-9])\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$|ff[0-9a-f][0-9a-f]:[0-9a-f:])/i,
)
)
- throw new Error("" + name + " can't listen on multicast address.");
+ throw new Error(`${name} can't listen on multicast address.`);
if (brdIPs.indexOf(listenAddress) > -1)
- throw new Error("" + name + " can't listen on broadcast address.");
+ throw new Error(`${name} can't listen on broadcast address.`);
if (netIPs.indexOf(listenAddress) > -1)
- throw new Error("" + name + " can't listen on subnet address.");
+ throw new Error(`${name} can't listen on subnet address.`);
}
if (certificateError)
throw new Error(
- "There was a problem with SSL certificate/private key: " +
- certificateError.message,
+ `There was a problem with SSL certificate/private key: ${certificateError.message}`,
);
if (wwwrootError)
throw new Error(
- "There was a problem with your web root: " + wwwrootError.message,
+ `There was a problem with your web root: ${wwwrootError.message}`,
);
if (sniReDos)
throw new Error(
@@ -1886,29 +1823,23 @@ 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()}...`,
);
}
@@ -2013,8 +1944,7 @@ function start(init) {
addListenersToWorker(cluster.workers[goodWorkers[wN]]);
}
serverconsole.locwarnmessage(
- "There was a problem while saving configuration file. Reason: " +
- err.message,
+ `There was a problem while saving configuration file. Reason: ${err.message}`,
);
}
});
@@ -2062,13 +1992,13 @@ function start(init) {
commands[command](argss, (msg) => process.send(msg));
process.send("\x12END");
} else {
- process.send('Unrecognized command "' + line.split(" ")[0] + '".');
+ process.send(`Unrecognized command "${line.split(" ")[0]}".`);
process.send("\x12END");
}
} catch (err) {
if (line != "") {
process.send(
- "Can't execute command \"" + line.split(" ")[0] + '".',
+ `Can't execute command \"${line.split(" ")[0]}".`,
);
process.send("\x12END");
}
@@ -2106,7 +2036,7 @@ function start(init) {
}
if (stopError)
serverconsole.climessage(
- "Some " + name + " workers might not be stopped.",
+ `Some ${name} workers might not be stopped.`,
);
SVRJSInitialized = false;
closedMaster = true;
@@ -2115,7 +2045,7 @@ function start(init) {
forkWorkers(workersToFork, function () {
SVRJSInitialized = true;
exiting = false;
- serverconsole.climessage("" + name + " workers restarted.");
+ serverconsole.climessage(`${name} workers restarted.`);
});
return;
@@ -2136,7 +2066,7 @@ function start(init) {
addListenersToWorker(cluster.workers[clusterID]);
}
serverconsole.climessage(
- "Can't run command \"" + command + '".',
+ `Can't run command "${command}".`,
);
}
});
@@ -2380,8 +2310,7 @@ function start(init) {
addListenersToWorker(cluster.workers[goodWorkers[wN]]);
}
serverconsole.locwarnmessage(
- "There was a problem while terminating unused worker process. Reason: " +
- err.message,
+ `There was a problem while terminating unused worker process. Reason: ${err.message}`,
);
}
}
@@ -2399,7 +2328,7 @@ function start(init) {
if (cluster.isPrimary || cluster.isPrimary === undefined) {
// Crash handler
function crashHandlerMaster(err) {
- serverconsole.locerrmessage(name + " main process just crashed!!!");
+ serverconsole.locerrmessage(`${name} main process just crashed!!!`);
serverconsole.locerrmessage("Stack:");
serverconsole.locerrmessage(
err.stack ? generateErrorStack(err) : String(err),
@@ -2417,8 +2346,7 @@ if (cluster.isPrimary || cluster.isPrimary === undefined) {
}
} catch (err) {
serverconsole.locwarnmessage(
- "There was a problem while saving configuration file. Reason: " +
- err.message,
+ `There was a problem while saving configuration file. Reason: ${err.message}`,
);
}
try {
@@ -2474,7 +2402,7 @@ if (cluster.isPrimary || cluster.isPrimary === undefined) {
} else {
// Crash handler
function crashHandler(err) {
- serverconsole.locerrmessage(name + " worker just crashed!!!");
+ serverconsole.locerrmessage(`${name} worker just crashed!!!`);
serverconsole.locerrmessage("Stack:");
serverconsole.locerrmessage(
err.stack ? generateErrorStack(err) : String(err),
@@ -2499,7 +2427,7 @@ if (cluster.isPrimary || cluster.isPrimary === undefined) {
try {
start(true);
} catch (err) {
- serverconsole.locerrmessage("There was a problem starting " + name + "!!!");
+ serverconsole.locerrmessage(`There was a problem starting ${name}!!!`);
serverconsole.locerrmessage("Stack:");
serverconsole.locerrmessage(generateErrorStack(err));
setTimeout(function () {
diff --git a/src/middleware/checkForbiddenPaths.js b/src/middleware/checkForbiddenPaths.js
index 5ab4c22..8a140d8 100644
--- a/src/middleware/checkForbiddenPaths.js
+++ b/src/middleware/checkForbiddenPaths.js
@@ -90,7 +90,7 @@ module.exports = (req, res, logFacilities, config, next) => {
!config.exposeServerVersion
) {
res.error(403);
- logFacilities.errmessage("Access to " + name + " script is denied.");
+ logFacilities.errmessage(`Access to ${name} script is denied.`);
return;
} else if (
(isForbiddenPath(decodedHrefWithoutDuplicateSlashes, "svrjs") ||
diff --git a/src/middleware/defaultHandlerChecks.js b/src/middleware/defaultHandlerChecks.js
index 2b9166e..5597727 100644
--- a/src/middleware/defaultHandlerChecks.js
+++ b/src/middleware/defaultHandlerChecks.js
@@ -9,29 +9,21 @@ module.exports = (req, res, logFacilities, config, next) => {
eheaders["Content-Type"] = "text/html; charset=utf-8";
res.writeHead(501, http.STATUS_CODES[501], eheaders);
res.write(
- 'Proxy not implementedProxy not implemented
" +
- name
+ `
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, ">") +
- " 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, ">")} as a proxy.
${config
+ .generateServerString()
+ .replace(/&/g, "&")
+ .replace(//g, ">")}
`,
);
res.end();
logFacilities.errmessage(
- name + " doesn't support proxy without proxy mod.",
+ `${name} doesn't support proxy without proxy mod.`,
);
return;
}
diff --git a/src/middleware/nonStandardCodesAndHttpAuthentication.js b/src/middleware/nonStandardCodesAndHttpAuthentication.js
index 09ed50b..844a5d5 100644
--- a/src/middleware/nonStandardCodesAndHttpAuthentication.js
+++ b/src/middleware/nonStandardCodesAndHttpAuthentication.js
@@ -155,7 +155,7 @@ module.exports = (req, res, logFacilities, config, next) => {
} else if (nonscode.scode == 410) {
logFacilities.errmessage("Content is gone.");
} else if (nonscode.scode == 418) {
- logFacilities.errmessage(name + " is always a teapot ;)");
+ logFacilities.errmessage(`${name} is always a teapot ;)`);
} else {
logFacilities.errmessage("Client fails receiving content.");
}
@@ -186,8 +186,7 @@ module.exports = (req, res, logFacilities, config, next) => {
res.error(
500,
new Error(
- name +
- " doesn't support scrypt-hashed passwords on Node.JS versions without scrypt hash support.",
+ `${name} doesn't support scrypt-hashed passwords on Node.JS versions without scrypt hash support.`,
),
);
return;
@@ -226,8 +225,7 @@ module.exports = (req, res, logFacilities, config, next) => {
res.error(
500,
new Error(
- name +
- " doesn't support PBKDF2-hashed passwords on Node.JS versions without crypto support.",
+ `${name} doesn't support PBKDF2-hashed passwords on Node.JS versions without crypto support.`,
),
);
return;
@@ -272,11 +270,9 @@ module.exports = (req, res, logFacilities, config, next) => {
try {
const ha = config.getCustomHeaders();
ha["WWW-Authenticate"] =
- 'Basic realm="' +
- (authcode.realm
+ `Basic realm="${authcode.realm
? authcode.realm.replace(/(\\|")/g, "\\$1")
- : name + " HTTP Basic Authorization") +
- '", charset="UTF-8"';
+ : name + " HTTP Basic Authorization"}", charset="UTF-8"`;
const credentials = req.headers["authorization"];
if (!credentials) {
res.error(401, ha);
@@ -353,9 +349,7 @@ module.exports = (req, res, logFacilities, config, next) => {
}
res.error(401, ha);
logFacilities.errmessage(
- 'User "' +
- String(username).replace(/[\r\n]/g, "") +
- '" failed to log in.',
+ `User "${String(username).replace(/[\r\n]/g, "")}" failed to log in.`,
);
} else {
if (bruteProtection) {
@@ -369,9 +363,7 @@ module.exports = (req, res, logFacilities, config, next) => {
}
}
logFacilities.reqmessage(
- 'Client is logged in as "' +
- String(username).replace(/[\r\n]/g, "") +
- '".',
+ `Client is logged in as "${String(username).replace(/[\r\n]/g, "")}".`,
);
req.authUser = username;
next();
diff --git a/src/middleware/redirects.js b/src/middleware/redirects.js
index 78b6744..d594f73 100644
--- a/src/middleware/redirects.js
+++ b/src/middleware/redirects.js
@@ -67,11 +67,7 @@ module.exports = (req, res, logFacilities, config, next) => {
hostname = hostname.join(":");
if (hostname == config.domain && hostname.indexOf("www.") != 0) {
res.redirect(
- (req.socket.encrypted ? "https" : "http") +
- "://www." +
- hostname +
- (hostport ? ":" + hostport : "") +
- req.url.replace(/\/+/g, "/"),
+ `${req.socket.encrypted ? "https" : "http"}://www.${hostname}${hostport ? ":" + hostport : ""}${req.url.replace(/\/+/g, "/")}`,
);
return;
}
diff --git a/src/middleware/rewriteURL.js b/src/middleware/rewriteURL.js
index baf6e8c..2ca190b 100644
--- a/src/middleware/rewriteURL.js
+++ b/src/middleware/rewriteURL.js
@@ -87,20 +87,17 @@ module.exports = (req, res, logFacilities, config, next) => {
}
if (rewrittenURL != req.url) {
logFacilities.resmessage(
- "URL rewritten: " + req.url + " => " + rewrittenURL,
+ `URL rewritten: ${req.url} => ${rewrittenURL}`,
);
req.url = rewrittenURL;
try {
req.parsedURL = new URL(
req.url,
- "http" +
- (req.socket.encrypted ? "s" : "") +
- "://" +
- (req.headers.host
- ? req.headers.host
- : config.domain
- ? config.domain
- : "unknown.invalid"),
+ `http${req.socket.encrypted ? "s" : ""}://${req.headers.host
+ ? req.headers.host
+ : config.domain
+ ? config.domain
+ : "unknown.invalid"}`,
);
} catch (err) {
res.error(400, err);
@@ -134,14 +131,11 @@ module.exports = (req, res, logFacilities, config, next) => {
try {
req.parsedURL = new URL(
req.url,
- "http" +
- (req.socket.encrypted ? "s" : "") +
- "://" +
- (req.headers.host
- ? req.headers.host
- : config.domain
- ? config.domain
- : "unknown.invalid"),
+ `http${req.socket.encrypted ? "s" : ""}://${req.headers.host
+ ? req.headers.host
+ : config.domain
+ ? config.domain
+ : "unknown.invalid"}`,
);
} catch (err) {
res.error(400, err);
diff --git a/src/middleware/staticFileServingAndDirectoryListings.js b/src/middleware/staticFileServingAndDirectoryListings.js
index e055df5..b72f44c 100644
--- a/src/middleware/staticFileServingAndDirectoryListings.js
+++ b/src/middleware/staticFileServingAndDirectoryListings.js
@@ -581,66 +581,57 @@ module.exports = (req, res, logFacilities, config, next) => {
// Generate HTML head and footer based on configuration and custom content
let htmlHead =
- (!config.enableDirectoryListingWithDefaultHead || res.head == ""
+ `${(!config.enableDirectoryListingWithDefaultHead || res.head == ""
? !headerHasHTMLTag
? "Directory: " +
+ decodeURIComponent(origHref)
+ .replace(/&/g, "&")
+ .replace(//g, ">") +
+ '"
+ : customDirListingHeader.replace(
+ //i,
+ "Directory: " +
decodeURIComponent(origHref)
.replace(/&/g, "&")
.replace(//g, ">") +
- '"
- : customDirListingHeader.replace(
- //i,
- "Directory: " +
- decodeURIComponent(origHref)
- .replace(/&/g, "&")
- .replace(//g, ">") +
- "",
- )
+ ""
+ )
: res.head.replace(
- //i,
- "Directory: " +
- decodeURIComponent(origHref)
- .replace(/&/g, "&")
- .replace(//g, ">") +
- "",
- )) +
- (!headerHasHTMLTag ? customDirListingHeader : "") +
- "Directory: " +
- decodeURIComponent(origHref)
+ //i,
+ "Directory: " +
+ decodeURIComponent(origHref)
+ .replace(/&/g, "&")
+ .replace(//g, ">") +
+ ""
+ )) +
+ (!headerHasHTMLTag ? customDirListingHeader : "")}Directory: ${decodeURIComponent(origHref)
.replace(/&/g, "&")
.replace(//g, ">") +
- '
| Filename | Size | Date |
' +
- (checkPathLevel(decodeURIComponent(origHref)) < 1
- ? ""
- : ' | | Filename | Size | Date | ${checkPathLevel(decodeURIComponent(origHref)) < 1
+ ? ""
+ : ' | Return | | | ');
+ '">Return | | '}`;
let htmlFoot =
- " " +
- config
+ ` |
${config
.generateServerString()
.replace(/&/g, "&")
.replace(//g, ">") +
- (req.headers.host == undefined
- ? ""
- : " on " +
+ .replace(/>/g, ">")}${req.headers.host == undefined
+ ? ""
+ : " on " +
String(req.headers.host)
.replace(/&/g, "&")
.replace(//g, ">")) +
- "
" +
- customDirListingFooter +
- (!config.enableDirectoryListingWithDefaultHead || res.foot == ""
- ? ""
- : res.foot);
+ .replace(/>/g, ">")}${customDirListingFooter}${!config.enableDirectoryListingWithDefaultHead || res.foot == ""
+ ? ""
+ : res.foot}`;
if (
fs.existsSync(
@@ -745,41 +736,26 @@ module.exports = (req, res, logFacilities, config, next) => {
const emime = eext ? mime.contentType(eext) : false;
if (filelist[i].errored) {
directoryListingRows.push(
- ' | ' +
- ename
- .replace(/&/g, "&")
- .replace(//g, ">") +
- " | - | " +
- (estats ? estats.mtime.toDateString() : "-") +
- " |
\r\n",
+ ` | ${ename
+ .replace(/&/g, "&")
+ .replace(//g, ">")} | - | ${estats ? estats.mtime.toDateString() : "-"} |
\r\n`,
);
} else {
let entry =
- ' | | ' +
- ename
+ ).replace(/\/+/g, "/")}${estats.isDirectory() ? "/" : ""}">${ename
.replace(/&/g, "&")
.replace(//g, ">") +
- " | " +
- (estats.isDirectory()
- ? "-"
- : sizify(estats.size.toString())) +
- " | " +
- estats.mtime.toDateString() +
- " |
\r\n";
+ .replace(/>/g, ">")}${estats.isDirectory()
+ ? "-"
+ : sizify(estats.size.toString())} | ${estats.mtime.toDateString()} | \r\n`;
// Determine the file type and set the appropriate image and alt text
if (estats.isDirectory()) {
@@ -788,20 +764,14 @@ module.exports = (req, res, logFacilities, config, next) => {
.replace("[alt]", "[DIR]");
} else if (!estats.isFile()) {
entry =
- ' | | ' +
- ename
+ ).replace(/\/+/g, "/")}">${ename
.replace(/&/g, "&")
.replace(//g, ">") +
- " | - | " +
- estats.mtime.toDateString() +
- " |
\r\n";
+ .replace(/>/g, ">")}- | ${estats.mtime.toDateString()} | \r\n`;
// Determine the special file types (block device, character device, etc.)
if (estats.isBlockDevice()) {
@@ -943,8 +913,7 @@ module.exports = (req, res, logFacilities, config, next) => {
} else {
res.error(501);
logFacilities.errmessage(
- name +
- " doesn't support block devices, character devices, FIFOs nor sockets.",
+ `${name} doesn't support block devices, character devices, FIFOs nor sockets.`,
);
return;
}
diff --git a/src/middleware/status.js b/src/middleware/status.js
index 048a91c..f1b4ef0 100644
--- a/src/middleware/status.js
+++ b/src/middleware/status.js
@@ -32,91 +32,40 @@ module.exports = (req, res, logFacilities, config, next) => {
//Those entries are just dates and numbers converted/formatted to strings, so no escaping is needed.
statusBody +=
- "Current time: " +
- new Date().toString() +
- "
Thread start time: " +
- new Date(new Date() - process.uptime() * 1000).toString() +
- "
Thread uptime: " +
- formatRelativeTime(Math.floor(process.uptime())) +
- "
";
- statusBody += "OS uptime: " + formatRelativeTime(os.uptime()) + "
";
- statusBody += "Total request count: " + process.reqcounter + "
";
+ `Current time: ${new Date().toString()}
Thread start time: ${new Date(new Date() - process.uptime() * 1000).toString()}
Thread uptime: ${formatRelativeTime(Math.floor(process.uptime()))}
`;
+ statusBody += `OS uptime: ${formatRelativeTime(os.uptime())}
`;
+ statusBody += `Total request count: ${process.reqcounter}
`;
statusBody +=
- "Average request rate: " +
- Math.round((process.reqcounter / process.uptime()) * 100) / 100 +
- " requests/s
";
- statusBody += "Client errors (4xx): " + process.err4xxcounter + "
";
- statusBody += "Server errors (5xx): " + process.err5xxcounter + "
";
+ `Average request rate: ${Math.round((process.reqcounter / process.uptime()) * 100) / 100} requests/s
`;
+ statusBody += `Client errors (4xx): ${process.err4xxcounter}
`;
+ statusBody += `Server errors (5xx): ${process.err5xxcounter}
`;
statusBody +=
- "Average error rate: " +
- Math.round(
+ `Average error rate: ${Math.round(
((process.err4xxcounter + process.err5xxcounter) / process.reqcounter) *
- 10000,
+ 10000
) /
- 100 +
- "%
";
- statusBody += "Malformed HTTP requests: " + process.malformedcounter;
+ 100}%
`;
+ statusBody += `Malformed HTTP requests: ${process.malformedcounter}`;
if (process.memoryUsage)
statusBody +=
- "
Memory usage of thread: " +
- sizify(process.memoryUsage().rss, true) +
- "B";
+ `
Memory usage of thread: ${sizify(process.memoryUsage().rss, true)}B`;
if (process.cpuUsage)
statusBody +=
- "
Total CPU usage by thread: u" +
- process.cpuUsage().user / 1000 +
- "ms s" +
- process.cpuUsage().system / 1000 +
- "ms - " +
- Math.round(
+ `
Total CPU usage by thread: u${process.cpuUsage().user / 1000}ms s${process.cpuUsage().system / 1000}ms - ${Math.round(
((process.cpuUsage().user + process.cpuUsage().system) /
1000000 /
process.uptime()) *
- 1000,
+ 1000
) /
- 1000 +
- "%";
- statusBody += "
Thread PID: " + process.pid + "
";
+ 1000}%`;
+ statusBody += `
Thread PID: ${process.pid}
`;
res.writeHead(200, http.STATUS_CODES[200], {
"Content-Type": "text/html; charset=utf-8",
});
res.end(
- (res.head == ""
+ `${res.head == ""
? "" +
- name
- .replace(/&/g, "&")
- .replace(//g, ">") +
- " status" +
- (req.headers.host == undefined
- ? ""
- : " for " +
- String(req.headers.host)
- .replace(/&/g, "&")
- .replace(//g, ">")) +
- '"
- : res.head.replace(
- //i,
- "" +
- name
- .replace(/&/g, "&")
- .replace(//g, ">") +
- " status" +
- (req.headers.host == undefined
- ? ""
- : " for " +
- String(req.headers.host)
- .replace(/&/g, "&")
- .replace(//g, ">")) +
- "",
- )) +
- "" +
name
.replace(/&/g, "&")
.replace(/ {
(req.headers.host == undefined
? ""
: " for " +
+ String(req.headers.host)
+ .replace(/&/g, "&")
+ .replace(//g, ">")) +
+ '"
+ : res.head.replace(
+ //i,
+ "" +
+ name
+ .replace(/&/g, "&")
+ .replace(//g, ">") +
+ " status" +
+ (req.headers.host == undefined
+ ? ""
+ : " for " +
String(req.headers.host)
.replace(/&/g, "&")
.replace(//g, ">")) +
- "
" +
- statusBody +
- (res.foot == "" ? "" : res.foot),
+ ""
+ )}${name
+ .replace(/&/g, "&")
+ .replace(//g, ">")} status${req.headers.host == undefined
+ ? ""
+ : " for " +
+ String(req.headers.host)
+ .replace(/&/g, "&")
+ .replace(//g, ">")}
${statusBody}${res.foot == "" ? "" : res.foot}`,
);
return;
}
diff --git a/src/middleware/urlSanitizer.js b/src/middleware/urlSanitizer.js
index 36e4282..7f21f9e 100644
--- a/src/middleware/urlSanitizer.js
+++ b/src/middleware/urlSanitizer.js
@@ -14,21 +14,18 @@ module.exports = (req, res, logFacilities, config, next) => {
let sanitizedURL =
sanitizedHref + req.parsedURL.search + req.parsedURL.hash;
logFacilities.resmessage(
- "URL sanitized: " + req.url + " => " + sanitizedURL,
+ `URL sanitized: ${req.url} => ${sanitizedURL}`,
);
if (config.rewriteDirtyURLs) {
req.url = sanitizedURL;
try {
req.parsedURL = new URL(
req.url,
- "http" +
- (req.socket.encrypted ? "s" : "") +
- "://" +
- (req.headers.host
- ? req.headers.host
- : config.domain
- ? config.domain
- : "unknown.invalid"),
+ `http${req.socket.encrypted ? "s" : ""}://${req.headers.host
+ ? req.headers.host
+ : config.domain
+ ? config.domain
+ : "unknown.invalid"}`,
);
} catch (err) {
res.error(400, err);
@@ -40,7 +37,7 @@ module.exports = (req, res, logFacilities, config, next) => {
}
} else if (req.url != preparedReqUrl && !req.isProxy) {
logFacilities.resmessage(
- "URL sanitized: " + req.url + " => " + preparedReqUrl,
+ `URL sanitized: ${req.url} => ${preparedReqUrl}`,
);
if (config.rewriteDirtyURLs) {
req.url = preparedReqUrl;
diff --git a/src/middleware/webRootPostfixes.js b/src/middleware/webRootPostfixes.js
index 9883645..24af9f4 100644
--- a/src/middleware/webRootPostfixes.js
+++ b/src/middleware/webRootPostfixes.js
@@ -80,14 +80,11 @@ module.exports = (req, res, logFacilities, config, next) => {
try {
req.parsedURL = new URL(
req.url,
- "http" +
- (req.socket.encrypted ? "s" : "") +
- "://" +
- (req.headers.host
- ? req.headers.host
- : config.domain
- ? config.domain
- : "unknown.invalid"),
+ `http${req.socket.encrypted ? "s" : ""}://${req.headers.host
+ ? req.headers.host
+ : config.domain
+ ? config.domain
+ : "unknown.invalid"}`,
);
} catch (err) {
res.error(400, err);
@@ -115,20 +112,17 @@ module.exports = (req, res, logFacilities, config, next) => {
let rewrittenAgainURL =
sHref + req.parsedURL.search + req.parsedURL.hash;
logFacilities.resmessage(
- "URL sanitized: " + req.url + " => " + rewrittenAgainURL,
+ `URL sanitized: ${req.url} => ${rewrittenAgainURL}`,
);
req.url = rewrittenAgainURL;
try {
req.parsedURL = new URL(
req.url,
- "http" +
- (req.socket.encrypted ? "s" : "") +
- "://" +
- (req.headers.host
- ? req.headers.host
- : config.domain
- ? config.domain
- : "unknown.invalid"),
+ `http${req.socket.encrypted ? "s" : ""}://${req.headers.host
+ ? req.headers.host
+ : config.domain
+ ? config.domain
+ : "unknown.invalid"}`,
);
} catch (err) {
res.error(400, err);
diff --git a/src/utils/generateServerString.js b/src/utils/generateServerString.js
index c0ff35a..874a228 100644
--- a/src/utils/generateServerString.js
+++ b/src/utils/generateServerString.js
@@ -4,16 +4,9 @@ const getOS = require("./getOS.js");
function generateServerString(exposeServerVersion) {
return exposeServerVersion
- ? name.replace(/ /g, "-") +
- "/" +
- version +
- " (" +
- getOS() +
- "; " +
- (process.isBun
- ? "Bun/v" + process.versions.bun + "; like Node.JS/" + process.version
- : "Node.JS/" + process.version) +
- ")"
+ ? `${name.replace(/ /g, "-")}/${version} (${getOS()}; ${process.isBun
+ ? "Bun/v" + process.versions.bun + "; like Node.JS/" + process.version
+ : "Node.JS/" + process.version})`
: name.replace(/ /g, "-");
}