Skip to content

Commit d34bc20

Browse files
committed
v1.1 Update
1 parent 15bead6 commit d34bc20

10 files changed

Lines changed: 10324 additions & 89 deletions

File tree

app.js

Lines changed: 102 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,8 @@ var mime = require('mime');
55
const port = 3000;
66
const path = require('path');
77
const request_lib = require('request');
8-
const multer = require('multer');
8+
const fileUpload = require('express-fileupload');
99
const ngrok = require('ngrok');
10-
storage = multer.diskStorage({
11-
destination: function (req, file, cb) {
12-
cb(null, './servers/' + req.query["server"])
13-
},
14-
filename: function (req, file, cb) {
15-
cb(null, req.query["type"])
16-
}
17-
})
18-
upload = multer({
19-
storage: storage,
20-
fileFilter: function (req, file, callback) {
21-
var ext = path.extname(file.originalname);
22-
if (ext !== '.png') {
23-
return callback('Only png allowed');
24-
}
25-
callback(null, true)
26-
}
27-
});
2810
var spParser = require("minecraft-server-properties");
2911
const fs = require('fs');
3012
var colors = require('colors');
@@ -59,11 +41,13 @@ const fse = require('fs-extra');
5941
const {
6042
response
6143
} = require('express');
62-
const version = "v1.0.7";
44+
const version = "v1.1";
45+
46+
app.use(fileUpload());
6347

6448
var customHeaderRequest = request_lib.defaults({
6549
headers: {
66-
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/ 540.04(KHTML, like Gecko) Chrome/ 61.0.2054.24 Safari / 540.04'
50+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/ 540.07(KHTML, like Gecko) Chrome/ 70.0.2054.24 Safari / 540.07'
6751
}
6852
})
6953

@@ -130,7 +114,13 @@ if (firstStart == false) {
130114
root: "./"
131115
});
132116
} else {
133-
res.send("");
117+
var img = Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAEgAAABhCAYAAAB1Tue5AAABN2lDQ1BBZG9iZSBSR0IgKDE5OTgpAAAokZWPv0rDUBSHvxtFxaFWCOLgcCdRUGzVwYxJW4ogWKtDkq1JQ5ViEm6uf/oQjm4dXNx9AidHwUHxCXwDxamDQ4QMBYvf9J3fORzOAaNi152GUYbzWKt205Gu58vZF2aYAoBOmKV2q3UAECdxxBjf7wiA10277jTG+38yH6ZKAyNguxtlIYgK0L/SqQYxBMygn2oQD4CpTto1EE9AqZf7G1AKcv8ASsr1fBBfgNlzPR+MOcAMcl8BTB1da4Bakg7UWe9Uy6plWdLuJkEkjweZjs4zuR+HiUoT1dFRF8jvA2AxH2w3HblWtay99X/+PRHX82Vun0cIQCw9F1lBeKEuf1UYO5PrYsdwGQ7vYXpUZLs3cLcBC7dFtlqF8hY8Dn8AwMZP/fNTP8gAAAAJcEhZcwAACxMAAAsTAQCanBgAAAa9aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0OCA3OS4xNjQwMzYsIDIwMTkvMDgvMTMtMDE6MDY6NTcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMTEtMjZUMTU6MjQ6NDQrMDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjEtMTEtMjdUMTY6MjA6MTIrMDM6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTExLTI3VDE2OjIwOjEyKzAzOjAwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOWQ3ZDkzLTM3MGUtNWE0YS1iNmE3LWE0ZTE0ZTcyMDg2NiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQ1OWZmZmIyLWJmYjYtNzQ0NC05NTQxLTQ2ZmMwYmU2OTdkMyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmM4Y2MxNjZiLTliNTktN2M0OC05OGY1LWFjZjM1ZjViZmY2ZSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJBZG9iZSBSR0IgKDE5OTgpIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpjOGNjMTY2Yi05YjU5LTdjNDgtOThmNS1hY2YzNWY1YmZmNmUiIHN0RXZ0OndoZW49IjIwMjEtMTEtMjZUMTU6MjQ6NDQrMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTQyMWI0ZWItYmEzYS0zMTQyLThiMWMtMTQzMjliZGNkZTc1IiBzdEV2dDp3aGVuPSIyMDIxLTExLTI2VDE1OjI0OjQ0KzAzOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHN0RXZ0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", 'base64');
118+
119+
res.writeHead(200, {
120+
'Content-Type': 'image/png',
121+
'Content-Length': img.length
122+
});
123+
res.end(img);
134124
}
135125
} else {
136126
res.send("");
@@ -249,14 +239,14 @@ if (firstStart == false) {
249239
app.get("/server/delete", (request, response) => {
250240
if (typeof (configjson[request.query.server]) !== 'undefined') {
251241
fs.readdir("./servers", (err, files) => {
252-
if (files.length <= 2) {
253-
serDeletes[request.query.server] = "deleting";
242+
if (files.length == 2) {
254243
setTimeout(function () {
255244
fs.rm("./servers", {
256245
recursive: true,
257246
force: true
258247
}, function () {
259-
delete serDeletes[request.query.server];
248+
console.log("RESTART APP!");
249+
process.exit();
260250
});
261251
}, 500);
262252
} else {
@@ -274,8 +264,6 @@ if (firstStart == false) {
274264
}
275265
});
276266
response.send("true");
277-
console.log("RESTART APP!");
278-
process.exit();
279267
} else {
280268
response.send("false");
281269
}
@@ -510,11 +498,21 @@ if (firstStart == false) {
510498
function startServer(server) {
511499
servers_logs[server] = "";
512500
if (process.platform == "win32") {
513-
servers_instances[server] = spawn('"servers/' + server + '/start.bat"');
514-
start = true;
501+
if (fs.existsSync('"servers/' + server + '/start.bat"')) {
502+
servers_instances[server] = spawn('"servers/' + server + '/start.bat"');
503+
start = true;
504+
} else {
505+
console.log(colors.red(getTimeFormatted() + " " + '"servers/' + server + '/start.bat"' + " not found! Try to delete, and create new server!"));
506+
start = false;
507+
}
515508
} else if (process.platform == "linux") {
516-
servers_instances[server] = spawn('"servers/' + server + '/start.sh"');
517-
start = true;
509+
if (fs.existsSync('"servers/' + server + '/start.sh"')) {
510+
servers_instances[server] = spawn('"servers/' + server + '/start.sh"');
511+
start = true;
512+
} else {
513+
console.log(colors.red(getTimeFormatted() + " " + '"servers/' + server + '/start.sh"' + " not found! Try to delete, and create new server!"));
514+
start = false;
515+
}
518516
} else {
519517
console.log(colors.red(getTimeFormatted() + " " + process.platform + " not supported"));
520518
start = false;
@@ -611,7 +609,7 @@ function showDownloadingProgress(received, total, fn) {
611609

612610
function getTimeFormatted() {
613611
date = new Date();
614-
return "[" + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + "]";
612+
return "[" + date.getHours().toString().padStart(2, "0") + ":" + date.getMinutes().toString().padStart(2, "0") + ":" + date.getSeconds().toString().padStart(2, "0") + "]";
615613
}
616614

617615
app.get('/cores/search', (request, response) => {
@@ -754,10 +752,78 @@ app.get("/kubek/saveConfig", (request, response) => {
754752
response.send("true");
755753
});
756754

757-
app.post('/file/upload', upload.single('g-img-input'), (req, res) => {
758-
if (req.query["type"] == "server-icon" && fs.existsSync("./servers/" + req.query["server"])) {
759-
res.send("uploaded");
755+
app.post('/file/upload', (req, res) => {
756+
let sampleFile;
757+
let uploadPath;
758+
759+
if (!req.files || Object.keys(req.files).length === 0) {
760+
return res.status(400).send('No files were uploaded.');
761+
}
762+
763+
sampleFile = req.files['g-img-input'];
764+
uploadPath = __dirname + "/servers/" + req.query["server"] + "/server-icon.png";
765+
766+
if (path.extname(sampleFile.name) == ".png") {
767+
sampleFile.mv(uploadPath, function (err) {
768+
if (err)
769+
return res.status(400).send(err);
770+
771+
res.send("uploaded");
772+
});
773+
} else {
774+
return res.status(400).send("false");
775+
}
776+
});
777+
778+
app.post('/core/upload', (req, res) => {
779+
if (!fs.existsSync("./servers")) {
780+
fs.mkdirSync("./servers");
781+
}
782+
fs.mkdirSync("./servers/" + req.query["server"]);
783+
let sampleFile;
784+
let uploadPath;
785+
786+
if (!req.files || Object.keys(req.files).length === 0) {
787+
return res.status(400).send('No files were uploaded.');
788+
}
789+
790+
sampleFile = req.files['g-core-input'];
791+
uploadPath = __dirname + "/servers/" + req.query["server"] + "/" + sampleFile.name;
792+
793+
if (path.extname(sampleFile.name) == ".jar") {
794+
sampleFile.mv(uploadPath, function (err) {
795+
if (err)
796+
return res.status(400).send(err);
797+
798+
res.send("uploaded");
799+
});
800+
} else {
801+
return res.status(400).send("false");
802+
}
803+
});
804+
805+
app.post('/plugin/upload', (req, res) => {
806+
if(!fs.existsSync("./servers/" + req.query["server"] + "/plugins")){
807+
fs.mkdirSync("./servers/" + req.query["server"] + "/plugins");
808+
}
809+
let sampleFile;
810+
let uploadPath;
811+
812+
if (!req.files || Object.keys(req.files).length === 0) {
813+
return res.status(400).send('No files were uploaded.');
814+
}
815+
816+
sampleFile = req.files['g-plugin-input'];
817+
uploadPath = __dirname + "/servers/" + req.query["server"] + "/plugins/" + sampleFile.name;
818+
819+
if (path.extname(sampleFile.name) == ".jar") {
820+
sampleFile.mv(uploadPath, function (err) {
821+
if (err)
822+
return res.status(400).send(err);
823+
824+
res.send("uploaded");
825+
});
760826
} else {
761-
res.send('false');
827+
return res.status(400).send("false");
762828
}
763829
});

package-lock.json

Lines changed: 60 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"colors": "^1.4.0",
1111
"cross-spawn": "^7.0.3",
1212
"express": "^4.17.1",
13+
"express-fileupload": "^1.3.1",
1314
"external-ip": "^2.3.1",
1415
"file-dialog": "0.0.8",
1516
"fs-extra": "^10.0.0",

translations/en.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"{{memory}}": "Memory",
1010
"{{port}}": "Port",
1111
"{{onlinemode}}": "Online mode (only license players)",
12-
"{{searchingcore}}": "Searchin core",
12+
"{{searchingcore}}": "Searching core",
1313
"{{cancel}}": "Cancel",
1414
"{{ok}}": "Ok",
1515
"{{servers}}": "Servers",
@@ -39,5 +39,9 @@
3939
"{{searching}}": "Searching",
4040
"{{settingsSaved}}": "Settings saved!",
4141
"{{installNew}}": "Install new",
42-
"{{softLang}}": "Software language"
42+
"{{softLang}}": "Software language",
43+
"{{selectFromList}}": "Select from list",
44+
"{{uploadYour}}": "Upload your",
45+
"{{ErrorWhileUploadingCore}}": "Error while uploading your core/plugin",
46+
"{{uploadingCore}}": "Uploading your core..."
4347
}

translations/ru.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,9 @@
3939
"{{searching}}": "Поиск",
4040
"{{settingsSaved}}": "Настройки сохранены!",
4141
"{{installNew}}": "Установить новый",
42-
"{{softLang}}": "Язык программы"
42+
"{{softLang}}": "Язык программы",
43+
"{{selectFromList}}": "Выбрать из списка",
44+
"{{uploadYour}}": "Загрузить своё",
45+
"{{ErrorWhileUploadingCore}}": "Ошибка загрузки вашего ядра/плагина",
46+
"{{uploadingCore}}": "Загрузка вашего ядра..."
4347
}

www/css/bootstrap.min.css

Lines changed: 9937 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)