Skip to content

Commit 7f707e3

Browse files
committed
1.2.11
1 parent 4a2591c commit 7f707e3

7 files changed

Lines changed: 329 additions & 262 deletions

File tree

app.js

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ var crypto = require('crypto');
2424
var spParser = require("minecraft-server-properties");
2525
const fs = require('fs');
2626
var colors = require('colors');
27-
const spawn = require("cross-spawn");
27+
//const spawn = require("cross-spawn");
28+
const {
29+
spawn
30+
} = require('node:child_process');
2831
var iconvlite = require('iconv-lite');
2932
var ip_local = require("ip");
3033
const os = require("os");
@@ -62,7 +65,7 @@ const {
6265
} = require('express');
6366

6467
// Kubek version
65-
const version = "v1.2.10";
68+
const version = "v1.2.11";
6669

6770
const rateLimit = require('express-rate-limit');
6871
const authLimiter = rateLimit({
@@ -262,6 +265,7 @@ function showRequestInLogs(req) {
262265

263266
app.get("/auth/login", (request, response) => {
264267
cfg = config.readConfig();
268+
showRequestInLogs(request);
265269
if (request.query.password == cfg["owner-password"] && request.query.login == cfg["owner-user"]) {
266270
let options = {
267271
maxAge: 120 * 24 * 60 * 60 * 1000,
@@ -368,7 +372,8 @@ app.get('/server/completion', (req, res) => {
368372
servers_logs[req.query.server] = "";
369373
servers_instances[req.query.server] = "";
370374
sss = {
371-
status: "stopped"
375+
status: "stopped",
376+
restartOnError: true
372377
};
373378
cge[req.query.server] = sss;
374379
res.send("Success");
@@ -408,6 +413,7 @@ app.get("/kubek/javaVersions", (request, response) => {
408413
javas = ["java"];
409414
}
410415
response.send(javas);
416+
showRequestInLogs(request);
411417
}
412418
}
413419
});
@@ -465,6 +471,7 @@ app.get("/server/delete", (request, response) => {
465471
if (typeof request.cookies !== "undefined" && typeof request.cookies["__auth__"] !== "undefined" && !isAuth(request.cookies["__auth__"])) {
466472
response.redirect("/login.html");
467473
} else {
474+
showRequestInLogs(request);
468475
if (typeof (configjson[request.query.server]) !== 'undefined') {
469476
delete configjson[request.query.server];
470477
fs.writeFileSync("./servers/servers.json", JSON.stringify(configjson));
@@ -584,7 +591,7 @@ app.get('/server/startScript/save', (request, response) => {
584591
} else {
585592
showRequestInLogs(request);
586593
if (typeof (configjson[request.query.server]) !== 'undefined') {
587-
response.send(serverController.saveStartScript(request.query.server, request.query.script));
594+
response.send(serverController.saveStartScript(request.query.server, request.query.script, request.query.resonerr));
588595
} else {
589596
response.send("false");
590597
}
@@ -717,7 +724,11 @@ function startServer(server) {
717724
if (process.platform == "win32") {
718725
startFile = path.resolve("./servers/" + server + "/start.bat");
719726
if (fs.existsSync(startFile)) {
720-
servers_instances[server] = spawn('"servers/' + server + '/start.bat"');
727+
try {
728+
servers_instances[server] = spawn(startFile);
729+
} catch (error) {
730+
console.error(error);
731+
}
721732
start = true;
722733
} else {
723734
console.log(colors.red(additional.getTimeFormatted() + " " + '"servers/' + server + '/start.bat"' + " not found! Try to delete, and create new server!"));
@@ -726,7 +737,11 @@ function startServer(server) {
726737
} else if (process.platform == "linux") {
727738
startFile = path.resolve("./servers/" + server + "/start.sh");
728739
if (fs.existsSync(startFile)) {
729-
servers_instances[server] = spawn('sh', ["./servers/" + server + "/start.sh"]);
740+
try {
741+
servers_instances[server] = spawn('sh', [startFile]);
742+
} catch (error) {
743+
console.error(error);
744+
}
730745
start = true;
731746
} else {
732747
console.log(colors.red(additional.getTimeFormatted() + " " + '"servers/' + server + '/start.sh"' + " not found! Try to delete, and create new server!"));
@@ -755,6 +770,23 @@ function startServer(server) {
755770
if (code != 0) {
756771
servers_logs[server] = servers_logs[server] + "ERROR: Process finished with exit code " + code;
757772
console.log(additional.getTimeFormatted(), "STOPPED SERVER WITH CODE " + code + ":", server.red);
773+
if (configjson[server]['restartOnError'] == true) {
774+
console.log(additional.getTimeFormatted(), "RESTARTING SERVER IN 3 SECONDS:", server.red);
775+
servers_logs[server] = servers_logs[server] + "Restarting server in 3 seconds";
776+
setTimeout(function () {
777+
startServer(server);
778+
}, 3000);
779+
}
780+
fsock = io.sockets.sockets;
781+
for (const socket of fsock) {
782+
socket[1].emit("handleUpdate", {
783+
type: "console",
784+
data: {
785+
server: server,
786+
data: servers_logs[server]
787+
}
788+
});
789+
}
758790
} else {
759791
console.log(additional.getTimeFormatted(), "STOPPED SERVER:", server.green);
760792
}
@@ -1321,7 +1353,7 @@ app.get("/fmapi/scanDirectory", (request, response) => {
13211353
if (typeof request.cookies !== "undefined" && typeof request.cookies["__auth__"] !== "undefined" && !isAuth(request.cookies["__auth__"])) {
13221354
response.redirect("/login.html");
13231355
} else {
1324-
fmapi.scanDirectory(request.query.server, request.query.directory, function(res){
1356+
fmapi.scanDirectory(request.query.server, request.query.directory, function (res) {
13251357
response.send(res);
13261358
});
13271359
showRequestInLogs(request);

my_modules/servers.js

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ exports.getStartScript = (name) => {
2323
}
2424
}
2525

26-
exports.saveStartScript = (name, script) => {
26+
exports.saveStartScript = (name, script, resonerr) => {
2727
if (fs.existsSync("./servers/" + name)) {
2828
if (process.platform == "linux") {
2929
datat = fs.readFileSync("./servers/" + name + "/start.sh");
@@ -37,19 +37,26 @@ exports.saveStartScript = (name, script) => {
3737
} else {
3838
fs.writeFileSync("./servers/" + name + "/start.bat", datat.join("\n"));
3939
}
40+
srv = JSON.parse(fs.readFileSync("./servers/servers.json"));
41+
if(resonerr == "true"){
42+
srv[name]['restartOnError'] = true;
43+
} else {
44+
srv[name]['restartOnError'] = false;
45+
}
46+
fs.writeFileSync("./servers/servers.json", JSON.stringify(srv));
4047
return true;
4148
} else {
4249
return false;
4350
}
4451
}
4552

4653
exports.getServerProperties = (name) => {
47-
if(typeof name !== "undefined" && fs.existsSync("./servers/" + name + "/server.properties")){
48-
data = fs.readFileSync("./servers/" + name + "/server.properties");
49-
return spParser.parse(data.toString());
50-
} else{
51-
return false;
52-
}
54+
if (typeof name !== "undefined" && fs.existsSync("./servers/" + name + "/server.properties")) {
55+
data = fs.readFileSync("./servers/" + name + "/server.properties");
56+
return spParser.parse(data.toString());
57+
} else {
58+
return false;
59+
}
5360
}
5461

5562
exports.saveServerProperties = (name, doc) => {
@@ -59,21 +66,33 @@ exports.saveServerProperties = (name, doc) => {
5966

6067
exports.queryServer = (name, cb) => {
6168
data = this.getServerProperties(name);
62-
mcutil.fullQuery("127.0.0.1", data["server-port"], 3000)
63-
.then((data) => {
64-
osutils.cpuUsage(function (value) {
65-
data["cpu"] = Math.round(value * 100);
66-
totalmem = os.totalmem();
67-
usedmem = totalmem - os.freemem();
68-
data["usedmem"] = usedmem;
69-
data["totalmem"] = totalmem;
70-
cb(data);
71-
});
72-
})
73-
.catch((error) => {
74-
console.error(error);
75-
cb(error);
69+
if (process.platform == "linux") { // mcutil is not crossplatform
70+
osutils.cpuUsage(function (value) {
71+
data["cpu"] = Math.round(value * 100);
72+
totalmem = os.totalmem();
73+
usedmem = totalmem - os.freemem();
74+
data["usedmem"] = usedmem;
75+
data["totalmem"] = totalmem;
76+
cb(data);
7677
});
78+
} else {
79+
mcutil.fullQuery("127.0.0.1", data["server-port"], 3000)
80+
.then((data) => {
81+
osutils.cpuUsage(function (value) {
82+
data["cpu"] = Math.round(value * 100);
83+
totalmem = os.totalmem();
84+
usedmem = totalmem - os.freemem();
85+
data["usedmem"] = usedmem;
86+
data["totalmem"] = totalmem;
87+
cb(data);
88+
});
89+
})
90+
.catch((error) => {
91+
console.error(error);
92+
cb(error);
93+
});
94+
}
95+
7796
}
7897

7998
exports.listServers = () => {

translations/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,6 @@
7474
"{{rename}}": "Rename",
7575
"{{aredelete}}": "Are you really want to delete?",
7676
"{{yesdelete}}": "Yes, delete it",
77-
"{{new-directory}}": "NEW DIRECTORY"
77+
"{{new-directory}}": "NEW DIRECTORY",
78+
"{{resonerr}}": "Restart server on crash (detecting by error code)"
7879
}

translations/nl.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,6 @@
7474
"{{rename}}": "Hernoemen",
7575
"{{aredelete}}": "Wil je echt verwijderen?",
7676
"{{yesdelete}}": "Ja, verwijder het",
77-
"{{new-directory}}": "NIEUWE DIRECTORY"
77+
"{{new-directory}}": "NIEUWE DIRECTORY",
78+
"{{resonerr}}": "Herstart server bij crash (gecontroleerd door afsluitcode)"
7879
}

translations/ru.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,6 @@
7474
"{{rename}}": "Переименовать",
7575
"{{aredelete}}": "Вы действительно хотите удалить?",
7676
"{{yesdelete}}": "Да, удалить",
77-
"{{new-directory}}": "НОВАЯ ДИРЕКТОРИЯ"
77+
"{{new-directory}}": "НОВАЯ ДИРЕКТОРИЯ",
78+
"{{resonerr}}": "Перезапускать сервер при краше (проверяется по коду выхода)"
7879
}

www/js/MinecraftColorCodes.min.3.7.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ var styleMap = {
1313
'§9': 'font-weight:normal;text-decoration:none;color:#3f3ffe',
1414
'§d': 'font-weight:normal;text-decoration:none;color:#fe3ffe',
1515
'§5': 'font-weight:normal;text-decoration:none;color:#be00be',
16-
'§f': 'font-weight:normal;text-decoration:none;color:#ffffff',
1716
'§7': 'font-weight:normal;text-decoration:none;color:#bebebe',
1817
'§8': 'font-weight:normal;text-decoration:none;color:#3f3f3f',
1918
'§0': 'font-weight:normal;text-decoration:none;color:#000000',

0 commit comments

Comments
 (0)