Skip to content

Commit e28ab48

Browse files
committed
1.2.13
1 parent 31a40dd commit e28ab48

6 files changed

Lines changed: 147 additions & 27 deletions

File tree

app.js

Lines changed: 77 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,14 @@ var serDeletes = {};
5959
var servers_logs = [];
6060
var servers_instances = [];
6161
var updatesByIntArray = {};
62+
var forgesIns = [];
6263

6364
const {
6465
response
6566
} = require('express');
6667

6768
// Kubek version
68-
const version = "v1.2.12";
69+
const version = "v1.2.13";
6970

7071
const rateLimit = require('express-rate-limit');
7172
const authLimiter = rateLimit({
@@ -668,7 +669,8 @@ app.get("/server/log", function (request, response) {
668669
response.redirect("/login.html");
669670
} else {
670671
if (typeof (configjson[request.query.server]) !== 'undefined') {
671-
response.send(servers_logs[request.query.server]);
672+
spl = servers_logs[request.query.server].split(/\r?\n/).slice(-100);
673+
response.send(spl.join("\r\n"));
672674
} else {
673675
response.send("false");
674676
}
@@ -779,11 +781,12 @@ function startServer(server) {
779781
}
780782
fsock = io.sockets.sockets;
781783
for (const socket of fsock) {
784+
spl = servers_logs[server].split(/\r?\n/).slice(-100);
782785
socket[1].emit("handleUpdate", {
783786
type: "console",
784787
data: {
785788
server: server,
786-
data: servers_logs[server]
789+
data: spl.join("\r\n")
787790
}
788791
});
789792
}
@@ -796,11 +799,12 @@ function startServer(server) {
796799
servers_logs[server] = servers_logs[server] + data.toString();
797800
fsock = io.sockets.sockets;
798801
for (const socket of fsock) {
802+
spl = servers_logs[server].split(/\r?\n/).slice(-100);
799803
socket[1].emit("handleUpdate", {
800804
type: "console",
801805
data: {
802806
server: server,
803-
data: servers_logs[server]
807+
data: spl.join("\r\n")
804808
}
805809
});
806810
}
@@ -830,11 +834,12 @@ function startServer(server) {
830834
servers_logs[server] = servers_logs[server] + "ERROR: " + data.toString();
831835
fsock = io.sockets.sockets;
832836
for (const socket of fsock) {
837+
spl = servers_logs[server].split(/\r?\n/).slice(-100);
833838
socket[1].emit("handleUpdate", {
834839
type: "console",
835840
data: {
836841
server: server,
837-
data: servers_logs[server]
842+
data: spl.join("\r\n")
838843
}
839844
});
840845
}
@@ -949,10 +954,9 @@ app.get("/core/list", (request, response) => {
949954
} else {
950955
showRequestInLogs(request);
951956
response.set('Content-Type', 'application/json');
952-
possbileCores = ['Spigot', 'Paper', 'Forge'];
957+
possbileCores = ['Spigot', 'Paper'];
953958
paperVers = [];
954959
spigotVers = [];
955-
forgeVers = [];
956960
cores.getPaperCores(function (cores_p) {
957961
cores_p = cores_p.reverse();
958962
cores_p.forEach(function (core) {
@@ -965,8 +969,7 @@ app.get("/core/list", (request, response) => {
965969
let jsn = {
966970
possible: possbileCores,
967971
paper: paperVers,
968-
spigot: spigotVers,
969-
forge: forgeVers
972+
spigot: spigotVers
970973
}
971974
response.send(jsn);
972975
});
@@ -1434,4 +1437,68 @@ app.get("/fmapi/newdirFM", (request, response) => {
14341437
showRequestInLogs(request);
14351438
}
14361439
}
1437-
});
1440+
});
1441+
1442+
app.get("/forgeInstaller", (request, response) => {
1443+
ip = request.headers['x-forwarded-for'] || request.socket.remoteAddress;
1444+
ip = ip.replace("::ffff:", "").replace("::1", "127.0.0.1");
1445+
if (cfg['internet-access'] == false && ip != "127.0.0.1") {
1446+
response.send("Cannot be accessed from the internet");
1447+
} else {
1448+
if (typeof request.cookies !== "undefined" && typeof request.cookies["__auth__"] !== "undefined" && !isAuth(request.cookies["__auth__"])) {
1449+
response.redirect("/login.html");
1450+
} else {
1451+
showRequestInLogs(request);
1452+
startForgeInstaller(request.query.server, request.query.filename);
1453+
response.send("true");
1454+
}
1455+
}
1456+
});
1457+
1458+
app.get("/forge/installProgress", (request, response) => {
1459+
ip = request.headers['x-forwarded-for'] || request.socket.remoteAddress;
1460+
ip = ip.replace("::ffff:", "").replace("::1", "127.0.0.1");
1461+
if (cfg['internet-access'] == false && ip != "127.0.0.1") {
1462+
response.send("Cannot be accessed from the internet");
1463+
} else {
1464+
if (typeof request.cookies !== "undefined" && typeof request.cookies["__auth__"] !== "undefined" && !isAuth(request.cookies["__auth__"])) {
1465+
response.redirect("/login.html");
1466+
} else {
1467+
response.send(forgesIns[request.query.server]);
1468+
}
1469+
}
1470+
});
1471+
1472+
function startForgeInstaller(server, file) {
1473+
fp = "./servers/" + server + "/" + file;
1474+
1475+
if (process.platform == "win32") {
1476+
fs.writeFileSync("./servers/" + server + "/finstall.bat", "@echo off\nchcp 65001>nul\ncd servers\ncd " + server + "\njava -jar " + file + " -i .");
1477+
startFile = path.resolve("./servers/" + server + "/finstall.bat");
1478+
fi = spawn(startFile);
1479+
} else if (process.platform == "linux") {
1480+
fs.writeFileSync("./servers/" + server + "/finstall.sh", "cd servers\ncd " + server + "\njava -jar " + file + " -i .");
1481+
startFile = path.resolve("./servers/" + server + "/finstall.sh");
1482+
fi = spawn('sh', [startFile]);
1483+
} else {
1484+
console.log(colors.red(getTimeFormatted() + " " + process.platform + " not supported"));
1485+
}
1486+
1487+
fi.on('close', (code) => {
1488+
if(code == 0){
1489+
console.log(colors.green("Forge installed successfully on " + server));
1490+
forgesIns[server] = "ok,installed";
1491+
fs.unlinkSync(fp);
1492+
} else {
1493+
console.log(colors.red("Forge failed on " + server + " with code " + code));
1494+
}
1495+
});
1496+
fi.stdout.on('data', (data) => {
1497+
data = iconvlite.decode(data, "win1251");
1498+
forgesIns[server] = forgesIns[server] + "\n" + data.toString();
1499+
});
1500+
fi.stderr.on('data', (data) => {
1501+
data = iconvlite.decode(data, "win1251");
1502+
forgesIns[server] = forgesIns[server] + "\n" + data.toString();
1503+
});
1504+
}

translations/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,7 @@
7575
"{{aredelete}}": "Are you really want to delete?",
7676
"{{yesdelete}}": "Yes, delete it",
7777
"{{new-directory}}": "NEW DIRECTORY",
78-
"{{resonerr}}": "Restart server on crash (detecting by error code)"
78+
"{{resonerr}}": "Restart server on crash (detecting by error code)",
79+
"{{ifuuplForge}}": "If you upload the Forge installation file here, the installation will be done automatically when you create the server",
80+
"{{ifuuplWarn}}": "Supported versions of Forge: 1.5.2 - 1.16.5 | Tested versions: 1.12.2, 1.16.5"
7981
}

translations/nl.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,7 @@
7575
"{{aredelete}}": "Wil je echt verwijderen?",
7676
"{{yesdelete}}": "Ja, verwijder het",
7777
"{{new-directory}}": "NIEUWE DIRECTORY",
78-
"{{resonerr}}": "Herstart server bij crash (gecontroleerd door afsluitcode)"
78+
"{{resonerr}}": "Herstart server bij crash (gecontroleerd door afsluitcode)",
79+
"{{ifuuplForge}}": "Als u het Forge-installatiebestand hier uploadt, wordt de installatie automatisch uitgevoerd wanneer u de server maakt",
80+
"{{ifuuplWarn}}": "Ondersteunde versies van Forge: 1.5.2 - 1.16.5 | Geteste versies: 1.12.2, 1.16.5"
7981
}

translations/ru.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,7 @@
7575
"{{aredelete}}": "Вы действительно хотите удалить?",
7676
"{{yesdelete}}": "Да, удалить",
7777
"{{new-directory}}": "НОВАЯ ДИРЕКТОРИЯ",
78-
"{{resonerr}}": "Перезапускать сервер при краше (проверяется по коду выхода)"
78+
"{{resonerr}}": "Перезапускать сервер при краше (проверяется по коду выхода)",
79+
"{{ifuuplForge}}": "Если вы загрузите сюда установочный файл Forge, установка будет произведена автоматически при создании сервера",
80+
"{{ifuuplWarn}}": "Поддерживаемые версии Forge: 1.5.2 - 1.16.5 | Протестированные версии: 1.12.2, 1.16.5"
7981
}

www/assets/cores/jar.png

5.59 KB
Loading

www/new.server.html

Lines changed: 61 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
<div class="progress-bar" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0"
4545
aria-valuemax="100"></div>
4646
</div>
47+
<div
48+
style="background: rgb(240,240,240); width: 700px; height: 500px; overflow: auto; margin-top: 6px; border-radius: 4px; display: none;"
49+
id="forgeins"></div>
4750
</div>
4851
</div>
4952

@@ -79,8 +82,7 @@
7982
</li>
8083
<li class="nav-item" role="presentation">
8184
<a class="nav-link" id="coreseltab-tab-2" data-mdb-toggle="tab" href="#coreseltab-tabs-2" role="tab"
82-
aria-controls="coreseltab-tabs-2" aria-selected="false"
83-
onclick='$("#final-core").text("Own")'>{{upload-own}}</a>
85+
aria-controls="coreseltab-tabs-2" aria-selected="false">{{upload-own}}</a>
8486
</li>
8587
</ul>
8688

@@ -97,6 +99,8 @@
9799
<form id="g-core-form" enctype="multipart/form-data">
98100
<input type="file" class="form-control" id="g-core-input" name="g-core-input" accept=".jar" />
99101
</form>
102+
<p style="font-size: 11pt; color: rgb(170,170,170);">{{ifuuplForge}}</p>
103+
<span style="font-size: 11pt; color: var(--mdb-red);">{{ifuuplWarn}}</span>
100104
</div>
101105
</div>
102106
</div>
@@ -187,8 +191,15 @@
187191
$("#fsc").val(sl);
188192

189193
$("#final-mem").html($("#xmx").val() + " GB");
194+
fn = $("#g-core-input")[0].value.split(/(\\|\/)/g).pop();
190195
if ($("#coreseltab-tabs-2").css("display") == "block") {
191-
$("#final-core").html("Own");
196+
if (fn.match(/forge-/gm) && fn.match(/-installer\.jar/gm)) {
197+
$("#final-core").text("Forge");
198+
$(".card-body").find(".rounded-circle").attr("src", "assets/cores/forge.png");
199+
} else {
200+
$("#final-core").text("Own (Non-Forge)");
201+
$(".card-body").find(".rounded-circle").attr("src", "assets/cores/jar.png");
202+
}
192203
} else {
193204
setActiveTab1();
194205
}
@@ -282,15 +293,8 @@
282293
}, 100);
283294
}
284295
});
285-
} else if (core.substring(0, 1) == "F") {
286-
data = "http://m91237kd.beget.tech/forges/" + core.substring(6) + ".tar";
287-
$("#progress-card p").html("Downloading core");
288-
$.get("/file/download?url=" + data + "&server=" + sname + "&filename=" + data.substring(data
289-
.lastIndexOf('/') + 1) + "&type=core");
290-
rr = setInterval(function () {
291-
getProgress(data.substring(data.lastIndexOf('/') + 1), sname, startLine, port, onlineMode)
292-
}, 100);
293-
} else if (core.substring(0, 1) == "O" && $("#g-core-input").val().toString().length > 2) {
296+
} else if (core.substring(0, 2) == "Ow" || core.substring(0, 2) == "Fo" && $("#g-core-input").val().toString()
297+
.length > 2) {
294298
var formData = new FormData($("#g-core-form")[0]);
295299
jQuery.ajax({
296300
url: '/core/upload?server=' + sname,
@@ -300,10 +304,30 @@
300304
jarfile = $("#g-core-input")[0].value.split(/(\\|\/)/g).pop();
301305
$("#progress-card .progress-bar").css("width", "100%");
302306
$("#progress-card p").html("Completion");
303-
$.get("/server/completion?server=" + encodeURI(sname) + "&jf=" + jarfile + "&startcmd=" + btoa(
307+
$.get("/server/completion?server=" + encodeURI(sname) + "&jf=" + jarfile.replace(/-installer/gm, "") + "&startcmd=" + btoa(
304308
startLine) + "&port=" + port + "&onMode=" + onlineMode, function (data) {
305309
if (data == "Success") {
306-
window.location = "/index.html?server=" + encodeURI(sname);
310+
if (core.substring(0, 2) == "Fo") {
311+
$("#progress-card .progress-bar").css("width", "0%");
312+
$("#progress-card p").html("Installing Forge");
313+
$("#progress-card #forgeins").show();
314+
$("#progress-card #forgeins").text("");
315+
$.get("/forgeInstaller?server=" + encodeURI(sname) + "&filename=" + jarfile);
316+
iint = setInterval(function(){
317+
$.get("/forge/installProgress?server=" + encodeURI(sname), function(get){
318+
if(get != "ok,installed"){
319+
get = get.split(/\r?\n/).slice(-100);
320+
get = get.join("<br>");
321+
$("#progress-card #forgeins").html(get);
322+
$("#progress-card #forgeins").scrollTop($("#progress-card #forgeins")[0].scrollHeight);
323+
} else {
324+
window.location = "/index.html?server=" + encodeURI(sname);
325+
}
326+
});
327+
}, 500);
328+
} else {
329+
window.location = "/index.html?server=" + encodeURI(sname);
330+
}
307331
}
308332
});
309333
},
@@ -332,6 +356,29 @@
332356
}
333357

334358
$(document).ready(function () {
359+
$("#g-core-input").val("");
360+
361+
$("#g-core-input").change(function () {
362+
fn = $("#g-core-input")[0].value.split(/(\\|\/)/g).pop();
363+
if (fn.match(/forge-/gm) && fn.match(/-installer\.jar/gm)) {
364+
$("#final-core").text("Forge");
365+
$(".card-body").find(".rounded-circle").attr("src", "assets/cores/forge.png");
366+
} else {
367+
$("#final-core").text("Own (Non-Forge)");
368+
$(".card-body").find(".rounded-circle").attr("src", "assets/cores/jar.png");
369+
}
370+
});
371+
372+
$("#coreseltab-tab-2").click(function () {
373+
fn = $("#g-core-input")[0].value.split(/(\\|\/)/g).pop();
374+
if (fn.match(/forge-/gm) && fn.match(/-installer\.jar/gm)) {
375+
$("#final-core").text("Forge");
376+
$(".card-body").find(".rounded-circle").attr("src", "assets/cores/forge.png");
377+
} else {
378+
$("#final-core").text("Own (Non-Forge)");
379+
$(".card-body").find(".rounded-circle").attr("src", "");
380+
}
381+
});
335382
$("#server-name").keyup(function () {
336383
$('#final-sname').text($(this).val());
337384
});

0 commit comments

Comments
 (0)