forked from svrjs/svrjs
Replace "isMaster" with "isPrimary", and shim "isPrimary" when it's not available.
This commit is contained in:
parent
aa630cbd0d
commit
1138b6bdf6
7 changed files with 69 additions and 59 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
commit.sh
|
temp
|
||||||
|
log
|
||||||
|
|
11
config.json
11
config.json
|
@ -3,7 +3,7 @@
|
||||||
"port": 80,
|
"port": 80,
|
||||||
"pubport": 80,
|
"pubport": 80,
|
||||||
"page404": "404.html",
|
"page404": "404.html",
|
||||||
"timestamp": 1680954429282,
|
"timestamp": 1691596789573,
|
||||||
"blacklist": [],
|
"blacklist": [],
|
||||||
"nonStandardCodes": [],
|
"nonStandardCodes": [],
|
||||||
"enableCompression": true,
|
"enableCompression": true,
|
||||||
|
@ -77,10 +77,15 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"allowStatus": true,
|
"allowStatus": true,
|
||||||
"dontCompress": ["/.*\\.ipxe$/","/.*\\.img$/","/.*\\.iso$/"],
|
"dontCompress": [
|
||||||
|
"/.*\\.ipxe$/",
|
||||||
|
"/.*\\.img$/",
|
||||||
|
"/.*\\.iso$/"
|
||||||
|
],
|
||||||
"enableIPSpoofing": false,
|
"enableIPSpoofing": false,
|
||||||
"secure": false,
|
"secure": false,
|
||||||
"sni": {},
|
"sni": {},
|
||||||
"disableNonEncryptedServer": false,
|
"disableNonEncryptedServer": false,
|
||||||
"disableToHTTPSRedirect": false
|
"disableToHTTPSRedirect": false,
|
||||||
|
"enableETag": true
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>SVR.JS Nightly-GitMaster</title>
|
<title>SVR.JS Nightly-GitMain</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<style>
|
<style>
|
||||||
|
@ -108,7 +108,8 @@
|
||||||
"secure": false,<br/>
|
"secure": false,<br/>
|
||||||
"sni": {},<br/>
|
"sni": {},<br/>
|
||||||
"disableNonEncryptedServer": false,<br/>
|
"disableNonEncryptedServer": false,<br/>
|
||||||
"disableToHTTPSRedirect": false<br/>
|
"disableToHTTPSRedirect": false,<br/>
|
||||||
|
"enableETag": true<br/>
|
||||||
}
|
}
|
||||||
</code>
|
</code>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>SVR.JS Nightly-GitMaster Licenses</title>
|
<title>SVR.JS Nightly-GitMain Licenses</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<style>
|
<style>
|
||||||
|
@ -12,8 +12,8 @@
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>SVR.JS Nightly-GitMaster Licenses</h1>
|
<h1>SVR.JS Nightly-GitMain Licenses</h1>
|
||||||
<h2>SVR.JS Nightly-GitMaster</h2>
|
<h2>SVR.JS Nightly-GitMain</h2>
|
||||||
<div style="display: inline-block; text-align: left; border-width: 2px; border-style: solid; border-color: gray; padding: 8px;">
|
<div style="display: inline-block; text-align: left; border-width: 2px; border-style: solid; border-color: gray; padding: 8px;">
|
||||||
MIT License<br/>
|
MIT License<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE<br/>
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE<br/>
|
||||||
SOFTWARE.<br/>
|
SOFTWARE.<br/>
|
||||||
</div>
|
</div>
|
||||||
<h2>Packages used by SVR.JS Nightly-GitMaster and utilities</h2>
|
<h2>Packages used by SVR.JS Nightly-GitMain and utilities</h2>
|
||||||
<div style="width: 100%; background-color: #ccc; border: 1px solid green; text-align: left; margin: 10px 0;">
|
<div style="width: 100%; background-color: #ccc; border: 1px solid green; text-align: left; margin: 10px 0;">
|
||||||
<div style="float: right;">License: MIT</div>
|
<div style="float: right;">License: MIT</div>
|
||||||
<div style="font-size: 20px;">
|
<div style="font-size: 20px;">
|
||||||
|
|
93
svr.js
93
svr.js
|
@ -77,7 +77,7 @@ function deleteFolderRecursive(path) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var os = require("os");
|
var os = require("os");
|
||||||
var version = "Nightly-GitMaster";
|
var version = "Nightly-GitMain";
|
||||||
var singlethreaded = false;
|
var singlethreaded = false;
|
||||||
|
|
||||||
if (process.versions) process.versions.svrjs = version; //Inject SVR.JS into process.versions
|
if (process.versions) process.versions.svrjs = version; //Inject SVR.JS into process.versions
|
||||||
|
@ -269,6 +269,9 @@ if (!singlethreaded) {
|
||||||
return newWorker;
|
return newWorker;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Shim cluster.isPrimary field
|
||||||
|
if (cluster.isPrimary === undefined && cluster.isMaster !== undefined) cluster.isPrimary = cluster.isMaster;
|
||||||
}
|
}
|
||||||
|
|
||||||
var bruteForceDb = {};
|
var bruteForceDb = {};
|
||||||
|
@ -969,9 +972,9 @@ if (configJSON.disableNonEncryptedServer != undefined) disableNonEncryptedServer
|
||||||
if (configJSON.disableToHTTPSRedirect != undefined) disableToHTTPSRedirect = configJSON.disableToHTTPSRedirect;
|
if (configJSON.disableToHTTPSRedirect != undefined) disableToHTTPSRedirect = configJSON.disableToHTTPSRedirect;
|
||||||
if (configJSON.wwwroot != undefined) {
|
if (configJSON.wwwroot != undefined) {
|
||||||
var wwwroot = configJSON.wwwroot;
|
var wwwroot = configJSON.wwwroot;
|
||||||
if (cluster.isMaster || cluster.isMaster === undefined) process.chdir(wwwroot);
|
if (cluster.isPrimary || cluster.isPrimary === undefined) process.chdir(wwwroot);
|
||||||
} else {
|
} else {
|
||||||
if (cluster.isMaster || cluster.isMaster === undefined) process.chdir(__dirname);
|
if (cluster.isPrimary || cluster.isPrimary === undefined) process.chdir(__dirname);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Compability for older mods
|
//Compability for older mods
|
||||||
|
@ -1083,10 +1086,10 @@ function LOG(s) {
|
||||||
try {
|
try {
|
||||||
if (configJSON.enableLogging || configJSON.enableLogging == undefined) {
|
if (configJSON.enableLogging || configJSON.enableLogging == undefined) {
|
||||||
if (logSync) {
|
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 {
|
} else {
|
||||||
if (!logFile) {
|
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",
|
flags: "a",
|
||||||
autoClose: false
|
autoClose: false
|
||||||
});
|
});
|
||||||
|
@ -1229,14 +1232,14 @@ process.exit = function (code) {
|
||||||
if (!disableMods) {
|
if (!disableMods) {
|
||||||
// Define the modloader folder name
|
// Define the modloader folder name
|
||||||
var modloaderFolderName = "modloader";
|
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
|
// If not the master process, create a unique modloader folder name for each worker
|
||||||
modloaderFolderName = ".modloader_w" + Math.floor(Math.random() * 65536);
|
modloaderFolderName = ".modloader_w" + Math.floor(Math.random() * 65536);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define the temporary server-side JavaScript file name
|
// Define the temporary server-side JavaScript file name
|
||||||
var tempServerSideScriptName = "serverSideScript.js";
|
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
|
// 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";
|
tempServerSideScriptName = ".serverSideScript_w" + Math.floor(Math.random() * 65536) + ".js";
|
||||||
}
|
}
|
||||||
|
@ -1333,7 +1336,7 @@ if (!disableMods) {
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// If there was an error during mod loading, log it to the console
|
// 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("There was a problem while loading a \"" + modFiles[i] + "\" mod.");
|
||||||
serverconsole.locwarnmessage("Stack:");
|
serverconsole.locwarnmessage("Stack:");
|
||||||
serverconsole.locwarnmessage(generateErrorStack(err));
|
serverconsole.locwarnmessage(generateErrorStack(err));
|
||||||
|
@ -1374,7 +1377,7 @@ if (!disableMods) {
|
||||||
mods.push(amod);
|
mods.push(amod);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// If there was an error during server side script loading, log it to the console
|
// 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("There was a problem while loading server side JavaScript.");
|
||||||
serverconsole.locwarnmessage("Stack:");
|
serverconsole.locwarnmessage("Stack:");
|
||||||
serverconsole.locwarnmessage(generateErrorStack(err));
|
serverconsole.locwarnmessage(generateErrorStack(err));
|
||||||
|
@ -1601,7 +1604,7 @@ forbiddenPaths.serverSideScriptDirectories.push(getInitializePath("./mods"));
|
||||||
forbiddenPaths.log = getInitializePath("./log");
|
forbiddenPaths.log = getInitializePath("./log");
|
||||||
|
|
||||||
//Create server
|
//Create server
|
||||||
if (!cluster.isMaster) {
|
if (!cluster.isPrimary) {
|
||||||
var reqcounter = 0;
|
var reqcounter = 0;
|
||||||
var server = {};
|
var server = {};
|
||||||
var server2 = {};
|
var server2 = {};
|
||||||
|
@ -1734,7 +1737,7 @@ if (!cluster.isMaster) {
|
||||||
server2.on("error", function (err) {
|
server2.on("error", function (err) {
|
||||||
if (err.code == "EADDRINUSE" || err.code == "EADDRNOTAVAIL" || err.code == "EACCES") {
|
if (err.code == "EADDRINUSE" || err.code == "EADDRNOTAVAIL" || err.code == "EACCES") {
|
||||||
attmtsRedir--;
|
attmtsRedir--;
|
||||||
if (cluster.isMaster === undefined) {
|
if (cluster.isPrimary === undefined) {
|
||||||
if (err.code == "EADDRINUSE") {
|
if (err.code == "EADDRINUSE") {
|
||||||
serverconsole.locerrmessage("Address is already in use by another process.");
|
serverconsole.locerrmessage("Address is already in use by another process.");
|
||||||
} else if (err.code == "EADDRNOTAVAIL") {
|
} else if (err.code == "EADDRNOTAVAIL") {
|
||||||
|
@ -1778,14 +1781,14 @@ if (!cluster.isMaster) {
|
||||||
server2.close();
|
server2.close();
|
||||||
setTimeout(start, 900);
|
setTimeout(start, 900);
|
||||||
} else {
|
} else {
|
||||||
if (cluster.isMaster !== undefined) process.send("\x12" + err.code);
|
if (cluster.isPrimary !== undefined) process.send("\x12" + err.code);
|
||||||
process.exit(errors[err.code]);
|
process.exit(errors[err.code]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
serverconsole.locerrmessage("There was a problem starting SVR.JS!!!");
|
serverconsole.locerrmessage("There was a problem starting SVR.JS!!!");
|
||||||
serverconsole.locerrmessage("Stack:");
|
serverconsole.locerrmessage("Stack:");
|
||||||
serverconsole.locerrmessage(generateErrorStack(err));
|
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);
|
process.exit(err.code ? errors[err.code] : 1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -4484,7 +4487,7 @@ if (!cluster.isMaster) {
|
||||||
server.on("error", function (err) {
|
server.on("error", function (err) {
|
||||||
if (err.code == "EADDRINUSE" || err.code == "EADDRNOTAVAIL" || err.code == "EACCES") {
|
if (err.code == "EADDRINUSE" || err.code == "EADDRNOTAVAIL" || err.code == "EACCES") {
|
||||||
attmts--;
|
attmts--;
|
||||||
if (cluster.isMaster === undefined) {
|
if (cluster.isPrimary === undefined) {
|
||||||
if (err.code == "EADDRINUSE") {
|
if (err.code == "EADDRINUSE") {
|
||||||
serverconsole.locerrmessage("Address is already in use by another process.");
|
serverconsole.locerrmessage("Address is already in use by another process.");
|
||||||
} else if (err.code == "EADDRNOTAVAIL") {
|
} else if (err.code == "EADDRNOTAVAIL") {
|
||||||
|
@ -4528,14 +4531,14 @@ if (!cluster.isMaster) {
|
||||||
server2.close();
|
server2.close();
|
||||||
setTimeout(start, 900);
|
setTimeout(start, 900);
|
||||||
} else {
|
} else {
|
||||||
if (cluster.isMaster !== undefined) process.send("\x12" + err.code);
|
if (cluster.isPrimary !== undefined) process.send("\x12" + err.code);
|
||||||
process.exit(errors[err.code]);
|
process.exit(errors[err.code]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
serverconsole.locerrmessage("There was a problem starting SVR.JS!!!");
|
serverconsole.locerrmessage("There was a problem starting SVR.JS!!!");
|
||||||
serverconsole.locerrmessage("Stack:");
|
serverconsole.locerrmessage("Stack:");
|
||||||
serverconsole.locerrmessage(generateErrorStack(err));
|
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);
|
process.exit(err.code ? errors[err.code] : 1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -4655,7 +4658,7 @@ var messageTransmitted = false;
|
||||||
function listeningMessage() {
|
function listeningMessage() {
|
||||||
if (messageTransmitted) return;
|
if (messageTransmitted) return;
|
||||||
messageTransmitted = true;
|
messageTransmitted = true;
|
||||||
if (!cluster.isMaster && cluster.isMaster !== undefined) {
|
if (!cluster.isPrimary && cluster.isPrimary !== undefined) {
|
||||||
process.send("\x12LISTEN");
|
process.send("\x12LISTEN");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4695,7 +4698,7 @@ var closedMaster = false;
|
||||||
|
|
||||||
function start(init) {
|
function start(init) {
|
||||||
init = Boolean(init);
|
init = Boolean(init);
|
||||||
if (cluster.isMaster || cluster.isMaster === undefined) {
|
if (cluster.isPrimary || cluster.isPrimary === undefined) {
|
||||||
if (init) {
|
if (init) {
|
||||||
for (i = 0; i < logo.length; i++) console.log(logo[i]); //Print logo
|
for (i = 0; i < logo.length; i++) console.log(logo[i]); //Print logo
|
||||||
console.log();
|
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 (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 (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 (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 (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 (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.") {
|
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) {
|
if (secure) {
|
||||||
server.listen(sport);
|
server.listen(sport);
|
||||||
if (!disableNonEncryptedServer) server2.listen(port);
|
if (!disableNonEncryptedServer) server2.listen(port);
|
||||||
|
@ -4755,13 +4758,13 @@ function start(init) {
|
||||||
if (secure && !disableNonEncryptedServer) {
|
if (secure && !disableNonEncryptedServer) {
|
||||||
server2.close();
|
server2.close();
|
||||||
}
|
}
|
||||||
if (cluster.isMaster === undefined) serverconsole.climessage("Server closed.");
|
if (cluster.isPrimary === undefined) serverconsole.climessage("Server closed.");
|
||||||
else {
|
else {
|
||||||
process.send("Server closed.");
|
process.send("Server closed.");
|
||||||
process.send("\x12CLOSE");
|
process.send("\x12CLOSE");
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} 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);
|
else process.send("Cannot close server! Reason: " + err.message);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -4773,29 +4776,29 @@ function start(init) {
|
||||||
} else {
|
} else {
|
||||||
server.listen(port); // Reopen Server
|
server.listen(port); // Reopen Server
|
||||||
}
|
}
|
||||||
if (cluster.isMaster === undefined) serverconsole.climessage("Server opened.");
|
if (cluster.isPrimary === undefined) serverconsole.climessage("Server opened.");
|
||||||
else {
|
else {
|
||||||
process.send("Server opened.");
|
process.send("Server opened.");
|
||||||
process.send("\x12OPEN");
|
process.send("\x12OPEN");
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} 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);
|
else process.send("Cannot open server! Reason: " + err.message);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
help: function () {
|
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(" "));
|
else process.send("Server commands:\n" + Object.keys(commands).join(" "));
|
||||||
},
|
},
|
||||||
mods: function () {
|
mods: function () {
|
||||||
if (cluster.isMaster === undefined) serverconsole.climessage("Mods:");
|
if (cluster.isPrimary === undefined) serverconsole.climessage("Mods:");
|
||||||
else process.send("Mods:");
|
else process.send("Mods:");
|
||||||
for (var i = 0; i < modInfos.length; i++) {
|
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);
|
else process.send((i + 1).toString() + ". " + modInfos[i].name + " " + modInfos[i].version);
|
||||||
}
|
}
|
||||||
if (modInfos.length == 0) {
|
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.");
|
else process.send("No mods installed.");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -4812,8 +4815,8 @@ function start(init) {
|
||||||
},
|
},
|
||||||
block: function (ip) {
|
block: function (ip) {
|
||||||
if (ip == undefined || JSON.stringify(ip) == "[]") {
|
if (ip == undefined || JSON.stringify(ip) == "[]") {
|
||||||
if (cluster.isMaster === undefined) serverconsole.climessage("Cannot block non-existent IP.");
|
if (cluster.isPrimary === undefined) serverconsole.climessage("Cannot block non-existent IP.");
|
||||||
else if (!cluster.isMaster) process.send("Cannot block non-existent IP.");
|
else if (!cluster.isPrimary) process.send("Cannot block non-existent IP.");
|
||||||
} else {
|
} else {
|
||||||
for (var i = 0; i < ip.length; i++) {
|
for (var i = 0; i < ip.length; i++) {
|
||||||
if (ip[i].indexOf(":") == -1) {
|
if (ip[i].indexOf(":") == -1) {
|
||||||
|
@ -4823,14 +4826,14 @@ function start(init) {
|
||||||
blacklist.add(ip[i]);
|
blacklist.add(ip[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cluster.isMaster === undefined) serverconsole.climessage("IPs successfully blocked.");
|
if (cluster.isPrimary === undefined) serverconsole.climessage("IPs successfully blocked.");
|
||||||
else if (!cluster.isMaster) process.send("IPs successfully blocked.");
|
else if (!cluster.isPrimary) process.send("IPs successfully blocked.");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
unblock: function (ip) {
|
unblock: function (ip) {
|
||||||
if (ip == undefined || JSON.stringify(ip) == "[]") {
|
if (ip == undefined || JSON.stringify(ip) == "[]") {
|
||||||
if (cluster.isMaster === undefined) serverconsole.climessage("Cannot unblock non-existent IP.");
|
if (cluster.isPrimary === undefined) serverconsole.climessage("Cannot unblock non-existent IP.");
|
||||||
else if (!cluster.isMaster) process.send("Cannot unblock non-existent IP.");
|
else if (!cluster.isPrimary) process.send("Cannot unblock non-existent IP.");
|
||||||
} else {
|
} else {
|
||||||
for (var i = 0; i < ip.length; i++) {
|
for (var i = 0; i < ip.length; i++) {
|
||||||
if (ip[i].indexOf(":") == -1) {
|
if (ip[i].indexOf(":") == -1) {
|
||||||
|
@ -4838,19 +4841,19 @@ function start(init) {
|
||||||
}
|
}
|
||||||
blacklist.remove(ip[i]);
|
blacklist.remove(ip[i]);
|
||||||
}
|
}
|
||||||
if (cluster.isMaster === undefined) serverconsole.climessage("IPs successfully unblocked.");
|
if (cluster.isPrimary === undefined) serverconsole.climessage("IPs successfully unblocked.");
|
||||||
else if (!cluster.isMaster) process.send("IPs successfully unblocked.");
|
else if (!cluster.isPrimary) process.send("IPs successfully unblocked.");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
restart: function () {
|
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.");
|
else process.send("This command need to be run in SVR.JS master.");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
if (init) {
|
if (init) {
|
||||||
if (cluster.isMaster === undefined) {
|
if (cluster.isPrimary === undefined) {
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
try {
|
try {
|
||||||
saveConfig();
|
saveConfig();
|
||||||
|
@ -4859,7 +4862,7 @@ function start(init) {
|
||||||
throw new Error(err);
|
throw new Error(err);
|
||||||
}
|
}
|
||||||
}, 300000);
|
}, 300000);
|
||||||
} else if (cluster.isMaster) {
|
} else if (cluster.isPrimary) {
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
var allClusters = Object.keys(cluster.workers);
|
var allClusters = Object.keys(cluster.workers);
|
||||||
for (var i = 0; i < allClusters.length; i++) {
|
for (var i = 0; i < allClusters.length; i++) {
|
||||||
|
@ -4879,7 +4882,7 @@ function start(init) {
|
||||||
}
|
}
|
||||||
}, 300000);
|
}, 300000);
|
||||||
}
|
}
|
||||||
if (!cluster.isMaster && cluster.isMaster !== undefined) {
|
if (!cluster.isPrimary && cluster.isPrimary !== undefined) {
|
||||||
process.on("message", function (line) {
|
process.on("message", function (line) {
|
||||||
try {
|
try {
|
||||||
if (line == "") {
|
if (line == "") {
|
||||||
|
@ -4922,7 +4925,7 @@ function start(init) {
|
||||||
var argss = line.split(" ");
|
var argss = line.split(" ");
|
||||||
var command = argss.shift();
|
var command = argss.shift();
|
||||||
if (line != "") {
|
if (line != "") {
|
||||||
if (cluster.isMaster !== undefined) {
|
if (cluster.isPrimary !== undefined) {
|
||||||
var allClusters = Object.keys(cluster.workers);
|
var allClusters = Object.keys(cluster.workers);
|
||||||
if (command == "block") commands.block(argss);
|
if (command == "block") commands.block(argss);
|
||||||
if (command == "unblock") commands.unblock(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
|
//Cluster forking code
|
||||||
if (cluster.isMaster !== undefined && init) {
|
if (cluster.isPrimary !== undefined && init) {
|
||||||
var cpus = os.cpus().length;
|
var cpus = os.cpus().length;
|
||||||
if (cpus > 16) cpus = 16;
|
if (cpus > 16) cpus = 16;
|
||||||
try {
|
try {
|
||||||
|
@ -5220,7 +5223,7 @@ function saveConfig() {
|
||||||
}
|
}
|
||||||
|
|
||||||
//Process event listeners
|
//Process event listeners
|
||||||
if (cluster.isMaster || cluster.isMaster === undefined) {
|
if (cluster.isPrimary || cluster.isPrimary === undefined) {
|
||||||
process.on("uncaughtException", function (err) {
|
process.on("uncaughtException", function (err) {
|
||||||
//CRASH HANDLER
|
//CRASH HANDLER
|
||||||
serverconsole.locerrmessage("SVR.JS master process just crashed!!!");
|
serverconsole.locerrmessage("SVR.JS master process just crashed!!!");
|
||||||
|
@ -5269,7 +5272,7 @@ if (cluster.isMaster || cluster.isMaster === undefined) {
|
||||||
});
|
});
|
||||||
process.on("SIGINT", function () {
|
process.on("SIGINT", function () {
|
||||||
reallyExiting = true;
|
reallyExiting = true;
|
||||||
if (cluster.isMaster !== undefined) {
|
if (cluster.isPrimary !== undefined) {
|
||||||
exiting = true;
|
exiting = true;
|
||||||
var allClusters = Object.keys(cluster.workers);
|
var allClusters = Object.keys(cluster.workers);
|
||||||
for (var i = 0; i < allClusters.length; i++) {
|
for (var i = 0; i < allClusters.length; i++) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>SVR.JS Nightly-GitMaster Tests</title>
|
<title>SVR.JS Nightly-GitMain Tests</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<style>
|
<style>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>SVR.JS Nightly-GitMaster Tests</h1>
|
<h1>SVR.JS Nightly-GitMain Tests</h1>
|
||||||
<h2>Directory</h2>
|
<h2>Directory</h2>
|
||||||
<iframe src="/testdir" width="50%" height="300px"></iframe>
|
<iframe src="/testdir" width="50%" height="300px"></iframe>
|
||||||
<h2>Directory (with query)</h2>
|
<h2>Directory (with query)</h2>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
0
|
1
|
Reference in a new issue