From 1138b6bdf6a373311631990d8c37c75398dd4de6 Mon Sep 17 00:00:00 2001 From: Dorian Niemiec Date: Wed, 9 Aug 2023 18:01:36 +0200 Subject: [PATCH] Replace "isMaster" with "isPrimary", and shim "isPrimary" when it's not available. --- .gitignore | 3 +- config.json | 13 +++++-- index.html | 5 ++- licenses/index.html | 8 ++-- svr.js | 93 +++++++++++++++++++++++---------------------- tests.html | 4 +- views.txt | 2 +- 7 files changed, 69 insertions(+), 59 deletions(-) diff --git a/.gitignore b/.gitignore index 47d6e3b..69811ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -commit.sh +temp +log diff --git a/config.json b/config.json index 9090fe9..584763b 100644 --- a/config.json +++ b/config.json @@ -3,7 +3,7 @@ "port": 80, "pubport": 80, "page404": "404.html", - "timestamp": 1680954429282, + "timestamp": 1691596789573, "blacklist": [], "nonStandardCodes": [], "enableCompression": true, @@ -77,10 +77,15 @@ } ], "allowStatus": true, - "dontCompress": ["/.*\\.ipxe$/","/.*\\.img$/","/.*\\.iso$/"], + "dontCompress": [ + "/.*\\.ipxe$/", + "/.*\\.img$/", + "/.*\\.iso$/" + ], "enableIPSpoofing": false, "secure": false, "sni": {}, "disableNonEncryptedServer": false, - "disableToHTTPSRedirect": false -} + "disableToHTTPSRedirect": false, + "enableETag": true +} \ No newline at end of file diff --git a/index.html b/index.html index 79f1787..e3a91b0 100644 --- a/index.html +++ b/index.html @@ -1,7 +1,7 @@ - SVR.JS Nightly-GitMaster + SVR.JS Nightly-GitMain -

SVR.JS Nightly-GitMaster Licenses

-

SVR.JS Nightly-GitMaster

+

SVR.JS Nightly-GitMain Licenses

+

SVR.JS Nightly-GitMain

MIT License

@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-

Packages used by SVR.JS Nightly-GitMaster and utilities

+

Packages used by SVR.JS Nightly-GitMain and utilities

License: MIT
diff --git a/svr.js b/svr.js index 7cf0897..2244c8a 100644 --- a/svr.js +++ b/svr.js @@ -77,7 +77,7 @@ function deleteFolderRecursive(path) { } var os = require("os"); -var version = "Nightly-GitMaster"; +var version = "Nightly-GitMain"; var singlethreaded = false; if (process.versions) process.versions.svrjs = version; //Inject SVR.JS into process.versions @@ -269,6 +269,9 @@ if (!singlethreaded) { return newWorker; }; } + + // Shim cluster.isPrimary field + if (cluster.isPrimary === undefined && cluster.isMaster !== undefined) cluster.isPrimary = cluster.isMaster; } var bruteForceDb = {}; @@ -969,9 +972,9 @@ if (configJSON.disableNonEncryptedServer != undefined) disableNonEncryptedServer if (configJSON.disableToHTTPSRedirect != undefined) disableToHTTPSRedirect = configJSON.disableToHTTPSRedirect; if (configJSON.wwwroot != undefined) { var wwwroot = configJSON.wwwroot; - if (cluster.isMaster || cluster.isMaster === undefined) process.chdir(wwwroot); + if (cluster.isPrimary || cluster.isPrimary === undefined) process.chdir(wwwroot); } else { - if (cluster.isMaster || cluster.isMaster === undefined) process.chdir(__dirname); + if (cluster.isPrimary || cluster.isPrimary === undefined) process.chdir(__dirname); } //Compability for older mods @@ -1083,10 +1086,10 @@ function LOG(s) { try { if (configJSON.enableLogging || configJSON.enableLogging == undefined) { if (logSync) { - fs.appendFileSync(__dirname + "/log/" + (cluster.isMaster ? "master" : (cluster.isMaster === undefined ? "singlethread" : "worker")) + "-" + timestamp + ".log", "[" + new Date().toISOString() + "] " + s + "\r\n"); + fs.appendFileSync(__dirname + "/log/" + (cluster.isPrimary ? "master" : (cluster.isPrimary === undefined ? "singlethread" : "worker")) + "-" + timestamp + ".log", "[" + new Date().toISOString() + "] " + s + "\r\n"); } else { if (!logFile) { - logFile = fs.createWriteStream(__dirname + "/log/" + (cluster.isMaster ? "master" : (cluster.isMaster === undefined ? "singlethread" : "worker")) + "-" + timestamp + ".log", { + logFile = fs.createWriteStream(__dirname + "/log/" + (cluster.isPrimary ? "master" : (cluster.isPrimary === undefined ? "singlethread" : "worker")) + "-" + timestamp + ".log", { flags: "a", autoClose: false }); @@ -1229,14 +1232,14 @@ process.exit = function (code) { if (!disableMods) { // Define the modloader folder name var modloaderFolderName = "modloader"; - if (cluster.isMaster === false) { + if (cluster.isPrimary === false) { // If not the master process, create a unique modloader folder name for each worker modloaderFolderName = ".modloader_w" + Math.floor(Math.random() * 65536); } // Define the temporary server-side JavaScript file name var tempServerSideScriptName = "serverSideScript.js"; - if (!process.isBun && cluster.isMaster === false) { + if (!process.isBun && cluster.isPrimary === false) { // If not the master process and it's not Bun, create a unique temporary server-side JavaScript file name for each worker tempServerSideScriptName = ".serverSideScript_w" + Math.floor(Math.random() * 65536) + ".js"; } @@ -1333,7 +1336,7 @@ if (!disableMods) { } } catch (err) { // If there was an error during mod loading, log it to the console - if (cluster.isMaster || cluster.isMaster === undefined) { + if (cluster.isPrimary || cluster.isPrimary === undefined) { serverconsole.locwarnmessage("There was a problem while loading a \"" + modFiles[i] + "\" mod."); serverconsole.locwarnmessage("Stack:"); serverconsole.locwarnmessage(generateErrorStack(err)); @@ -1374,7 +1377,7 @@ if (!disableMods) { mods.push(amod); } catch (err) { // If there was an error during server side script loading, log it to the console - if (cluster.isMaster || cluster.isMaster === undefined) { + if (cluster.isPrimary || cluster.isPrimary === undefined) { serverconsole.locwarnmessage("There was a problem while loading server side JavaScript."); serverconsole.locwarnmessage("Stack:"); serverconsole.locwarnmessage(generateErrorStack(err)); @@ -1601,7 +1604,7 @@ forbiddenPaths.serverSideScriptDirectories.push(getInitializePath("./mods")); forbiddenPaths.log = getInitializePath("./log"); //Create server -if (!cluster.isMaster) { +if (!cluster.isPrimary) { var reqcounter = 0; var server = {}; var server2 = {}; @@ -1734,7 +1737,7 @@ if (!cluster.isMaster) { server2.on("error", function (err) { if (err.code == "EADDRINUSE" || err.code == "EADDRNOTAVAIL" || err.code == "EACCES") { attmtsRedir--; - if (cluster.isMaster === undefined) { + if (cluster.isPrimary === undefined) { if (err.code == "EADDRINUSE") { serverconsole.locerrmessage("Address is already in use by another process."); } else if (err.code == "EADDRNOTAVAIL") { @@ -1778,14 +1781,14 @@ if (!cluster.isMaster) { server2.close(); setTimeout(start, 900); } else { - if (cluster.isMaster !== undefined) process.send("\x12" + err.code); + if (cluster.isPrimary !== undefined) process.send("\x12" + err.code); process.exit(errors[err.code]); } } else { serverconsole.locerrmessage("There was a problem starting SVR.JS!!!"); serverconsole.locerrmessage("Stack:"); serverconsole.locerrmessage(generateErrorStack(err)); - if (cluster.isMaster !== undefined) process.send("\x12CRASH"); + if (cluster.isPrimary !== undefined) process.send("\x12CRASH"); process.exit(err.code ? errors[err.code] : 1); } }); @@ -4484,7 +4487,7 @@ if (!cluster.isMaster) { server.on("error", function (err) { if (err.code == "EADDRINUSE" || err.code == "EADDRNOTAVAIL" || err.code == "EACCES") { attmts--; - if (cluster.isMaster === undefined) { + if (cluster.isPrimary === undefined) { if (err.code == "EADDRINUSE") { serverconsole.locerrmessage("Address is already in use by another process."); } else if (err.code == "EADDRNOTAVAIL") { @@ -4528,14 +4531,14 @@ if (!cluster.isMaster) { server2.close(); setTimeout(start, 900); } else { - if (cluster.isMaster !== undefined) process.send("\x12" + err.code); + if (cluster.isPrimary !== undefined) process.send("\x12" + err.code); process.exit(errors[err.code]); } } else { serverconsole.locerrmessage("There was a problem starting SVR.JS!!!"); serverconsole.locerrmessage("Stack:"); serverconsole.locerrmessage(generateErrorStack(err)); - if (cluster.isMaster !== undefined) process.send("\x12CRASH"); + if (cluster.isPrimary !== undefined) process.send("\x12CRASH"); process.exit(err.code ? errors[err.code] : 1); } }); @@ -4655,7 +4658,7 @@ var messageTransmitted = false; function listeningMessage() { if (messageTransmitted) return; messageTransmitted = true; - if (!cluster.isMaster && cluster.isMaster !== undefined) { + if (!cluster.isPrimary && cluster.isPrimary !== undefined) { process.send("\x12LISTEN"); return; } @@ -4695,7 +4698,7 @@ var closedMaster = false; function start(init) { init = Boolean(init); - if (cluster.isMaster || cluster.isMaster === undefined) { + if (cluster.isPrimary || cluster.isPrimary === undefined) { if (init) { for (i = 0; i < logo.length; i++) console.log(logo[i]); //Print logo console.log(); @@ -4705,7 +4708,7 @@ function start(init) { if (http2.__disabled__ !== undefined) serverconsole.locwarnmessage("HTTP/2 isn't supported by your Node.JS version! You may not be able to use HTTP/2 with SVR.JS"); if (configJSON.enableHTTP2 && !secure) serverconsole.locwarnmessage("HTTP/2 without HTTPS may not work in web browsers. Web browsers only support HTTP/2 with HTTPS!"); if (process.isBun) serverconsole.locwarnmessage("Bun support is experimental. Some features of SVR.JS, SVR.JS mods and SVR.JS server-side JavaScript may not work as expected."); - if (cluster.isMaster === undefined) serverconsole.locwarnmessage("You're running SVR.JS on single thread. Reliability may suffer, as the server is stopped after crash."); + if (cluster.isPrimary === undefined) serverconsole.locwarnmessage("You're running SVR.JS on single thread. Reliability may suffer, as the server is stopped after crash."); if (crypto.__disabled__ !== undefined) serverconsole.locwarnmessage("Your Node.JS version doesn't have crypto support! The 'crypto' module is essential for providing cryptographic functionality in Node.js. Without crypto support, certain security features may be unavailable, and some functionality may not work as expected. It's recommended to use a Node.JS version that includes crypto support to ensure the security and proper functioning of your server."); if (process.getuid && process.getuid() == 0) serverconsole.locwarnmessage("You're running SVR.JS as root. It's recommended to run SVR.JS as an non-root user. Running SVR.JS as root may increase the risks of OS command execution vulnerabilities."); if (secure && process.versions && process.versions.openssl && process.versions.openssl.substr(0, 2) == "1.") { @@ -4738,7 +4741,7 @@ function start(init) { } - if (!cluster.isMaster) { + if (!cluster.isPrimary) { if (secure) { server.listen(sport); if (!disableNonEncryptedServer) server2.listen(port); @@ -4755,13 +4758,13 @@ function start(init) { if (secure && !disableNonEncryptedServer) { server2.close(); } - if (cluster.isMaster === undefined) serverconsole.climessage("Server closed."); + if (cluster.isPrimary === undefined) serverconsole.climessage("Server closed."); else { process.send("Server closed."); process.send("\x12CLOSE"); } } catch (err) { - if (cluster.isMaster === undefined) serverconsole.climessage("Cannot close server! Reason: " + err.message); + if (cluster.isPrimary === undefined) serverconsole.climessage("Cannot close server! Reason: " + err.message); else process.send("Cannot close server! Reason: " + err.message); } }, @@ -4773,29 +4776,29 @@ function start(init) { } else { server.listen(port); // Reopen Server } - if (cluster.isMaster === undefined) serverconsole.climessage("Server opened."); + if (cluster.isPrimary === undefined) serverconsole.climessage("Server opened."); else { process.send("Server opened."); process.send("\x12OPEN"); } } catch (err) { - if (cluster.isMaster === undefined) serverconsole.climessage("Cannot open server! Reason: " + err.message); + if (cluster.isPrimary === undefined) serverconsole.climessage("Cannot open server! Reason: " + err.message); else process.send("Cannot open server! Reason: " + err.message); } }, help: function () { - if (cluster.isMaster === undefined) serverconsole.climessage("Server commands:\n" + Object.keys(commands).join(" ")); + if (cluster.isPrimary === undefined) serverconsole.climessage("Server commands:\n" + Object.keys(commands).join(" ")); else process.send("Server commands:\n" + Object.keys(commands).join(" ")); }, mods: function () { - if (cluster.isMaster === undefined) serverconsole.climessage("Mods:"); + if (cluster.isPrimary === undefined) serverconsole.climessage("Mods:"); else process.send("Mods:"); for (var i = 0; i < modInfos.length; i++) { - if (cluster.isMaster === undefined) serverconsole.climessage((i + 1).toString() + ". " + modInfos[i].name + " " + modInfos[i].version); + if (cluster.isPrimary === undefined) serverconsole.climessage((i + 1).toString() + ". " + modInfos[i].name + " " + modInfos[i].version); else process.send((i + 1).toString() + ". " + modInfos[i].name + " " + modInfos[i].version); } if (modInfos.length == 0) { - if (cluster.isMaster === undefined) serverconsole.climessage("No mods installed."); + if (cluster.isPrimary === undefined) serverconsole.climessage("No mods installed."); else process.send("No mods installed."); } }, @@ -4812,8 +4815,8 @@ function start(init) { }, block: function (ip) { if (ip == undefined || JSON.stringify(ip) == "[]") { - if (cluster.isMaster === undefined) serverconsole.climessage("Cannot block non-existent IP."); - else if (!cluster.isMaster) process.send("Cannot block non-existent IP."); + if (cluster.isPrimary === undefined) serverconsole.climessage("Cannot block non-existent IP."); + else if (!cluster.isPrimary) process.send("Cannot block non-existent IP."); } else { for (var i = 0; i < ip.length; i++) { if (ip[i].indexOf(":") == -1) { @@ -4823,14 +4826,14 @@ function start(init) { blacklist.add(ip[i]); } } - if (cluster.isMaster === undefined) serverconsole.climessage("IPs successfully blocked."); - else if (!cluster.isMaster) process.send("IPs successfully blocked."); + if (cluster.isPrimary === undefined) serverconsole.climessage("IPs successfully blocked."); + else if (!cluster.isPrimary) process.send("IPs successfully blocked."); } }, unblock: function (ip) { if (ip == undefined || JSON.stringify(ip) == "[]") { - if (cluster.isMaster === undefined) serverconsole.climessage("Cannot unblock non-existent IP."); - else if (!cluster.isMaster) process.send("Cannot unblock non-existent IP."); + if (cluster.isPrimary === undefined) serverconsole.climessage("Cannot unblock non-existent IP."); + else if (!cluster.isPrimary) process.send("Cannot unblock non-existent IP."); } else { for (var i = 0; i < ip.length; i++) { if (ip[i].indexOf(":") == -1) { @@ -4838,19 +4841,19 @@ function start(init) { } blacklist.remove(ip[i]); } - if (cluster.isMaster === undefined) serverconsole.climessage("IPs successfully unblocked."); - else if (!cluster.isMaster) process.send("IPs successfully unblocked."); + if (cluster.isPrimary === undefined) serverconsole.climessage("IPs successfully unblocked."); + else if (!cluster.isPrimary) process.send("IPs successfully unblocked."); } }, restart: function () { - if (cluster.isMaster === undefined) serverconsole.climessage("This command is not supported on single-threaded SVR.JS."); + if (cluster.isPrimary === undefined) serverconsole.climessage("This command is not supported on single-threaded SVR.JS."); else process.send("This command need to be run in SVR.JS master."); } }; if (init) { - if (cluster.isMaster === undefined) { + if (cluster.isPrimary === undefined) { setInterval(function () { try { saveConfig(); @@ -4859,7 +4862,7 @@ function start(init) { throw new Error(err); } }, 300000); - } else if (cluster.isMaster) { + } else if (cluster.isPrimary) { setInterval(function () { var allClusters = Object.keys(cluster.workers); for (var i = 0; i < allClusters.length; i++) { @@ -4879,7 +4882,7 @@ function start(init) { } }, 300000); } - if (!cluster.isMaster && cluster.isMaster !== undefined) { + if (!cluster.isPrimary && cluster.isPrimary !== undefined) { process.on("message", function (line) { try { if (line == "") { @@ -4922,7 +4925,7 @@ function start(init) { var argss = line.split(" "); var command = argss.shift(); if (line != "") { - if (cluster.isMaster !== undefined) { + if (cluster.isPrimary !== undefined) { var allClusters = Object.keys(cluster.workers); if (command == "block") commands.block(argss); if (command == "unblock") commands.unblock(argss); @@ -5008,9 +5011,9 @@ function start(init) { }); } - if (cluster.isMaster || cluster.isMaster === undefined) { + if (cluster.isPrimary || cluster.isPrimary === undefined) { //Cluster forking code - if (cluster.isMaster !== undefined && init) { + if (cluster.isPrimary !== undefined && init) { var cpus = os.cpus().length; if (cpus > 16) cpus = 16; try { @@ -5220,7 +5223,7 @@ function saveConfig() { } //Process event listeners -if (cluster.isMaster || cluster.isMaster === undefined) { +if (cluster.isPrimary || cluster.isPrimary === undefined) { process.on("uncaughtException", function (err) { //CRASH HANDLER serverconsole.locerrmessage("SVR.JS master process just crashed!!!"); @@ -5269,7 +5272,7 @@ if (cluster.isMaster || cluster.isMaster === undefined) { }); process.on("SIGINT", function () { reallyExiting = true; - if (cluster.isMaster !== undefined) { + if (cluster.isPrimary !== undefined) { exiting = true; var allClusters = Object.keys(cluster.workers); for (var i = 0; i < allClusters.length; i++) { diff --git a/tests.html b/tests.html index 7441701..8c88418 100644 --- a/tests.html +++ b/tests.html @@ -1,7 +1,7 @@ - SVR.JS Nightly-GitMaster Tests + SVR.JS Nightly-GitMain Tests -

SVR.JS Nightly-GitMaster Tests

+

SVR.JS Nightly-GitMain Tests

Directory

Directory (with query)

diff --git a/views.txt b/views.txt index 573541a..56a6051 100644 --- a/views.txt +++ b/views.txt @@ -1 +1 @@ -0 +1 \ No newline at end of file