2022-10-05 00:12:50 -04:00
|
|
|
const config = require('config');
|
|
|
|
const fs = require('fs');
|
|
|
|
const https = require('https');
|
|
|
|
const path = require('path');
|
2022-10-07 16:43:04 -04:00
|
|
|
const minecraft = require('../app/MinecraftServer');
|
2022-10-05 00:12:50 -04:00
|
|
|
|
|
|
|
exports.getCreate = function(req, res) {
|
|
|
|
// render view
|
|
|
|
res.render('create');
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.postCreate = function(req, res) {
|
|
|
|
mcDir = config.get('server_directory');
|
|
|
|
serverDir = path.join(mcDir, req.body.serverName);
|
|
|
|
|
|
|
|
// make server directory
|
|
|
|
fs.mkdirSync(serverDir);
|
|
|
|
|
|
|
|
// grab the server JAR file
|
|
|
|
serverJarUrl = 'https://piston-data.mojang.com/v1/objects/f69c284232d7c7580bd89a5a4931c3581eae1378/server.jar';
|
|
|
|
serverJarName = "server_" + req.body.serverVersion + ".jar";
|
|
|
|
serverJarPath = path.join(serverDir, serverJarName);
|
|
|
|
https.get(serverJarUrl, (res) => {
|
|
|
|
const filePath = fs.createWriteStream(serverJarPath);
|
|
|
|
res.pipe(filePath);
|
|
|
|
filePath.on('finish', () => {
|
|
|
|
filePath.close();
|
|
|
|
console.log('Download Completed');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// create the start.sh shell script
|
|
|
|
scriptFilePath = path.join(serverDir, 'start.sh');
|
2022-10-07 16:43:04 -04:00
|
|
|
scriptContent = "#!/bin/sh\n\ncd " + serverDir + "\njava -Xmx2048M -Xms2048M -jar server_" + req.body.serverVersion + ".jar nogui &\n\necho \"$!\" > ./pid.txt";
|
2022-10-05 00:12:50 -04:00
|
|
|
fs.writeFileSync(scriptFilePath, scriptContent);
|
|
|
|
fs.chmodSync(scriptFilePath, 0o755);
|
|
|
|
|
|
|
|
// save the current version to a text file - this will hopefully be temporary solution
|
|
|
|
versionFilePath = path.join(serverDir, 'current_version.txt');
|
|
|
|
versionContent = req.body.serverVersion;
|
|
|
|
fs.writeFileSync(versionFilePath, versionContent);
|
|
|
|
fs.chmodSync(versionFilePath, 0o644);
|
|
|
|
|
|
|
|
// redirect the user back to the home page
|
|
|
|
res.redirect('/');
|
|
|
|
};
|
2022-10-07 16:43:04 -04:00
|
|
|
|
|
|
|
exports.getStart = function(req, res) {
|
|
|
|
let serverName = req.params.serverName;
|
|
|
|
let rootDir = config.get('server_directory');
|
|
|
|
let server = new minecraft.Server(path.join(rootDir, serverName));
|
|
|
|
|
|
|
|
// start the server
|
|
|
|
server.start();
|
|
|
|
|
|
|
|
// redirect the user back to the home page
|
|
|
|
res.redirect('/');
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.getStop = function(req, res) {
|
|
|
|
let serverName = req.params.serverName;
|
|
|
|
let rootDir = config.get('server_directory');
|
|
|
|
let server = new minecraft.Server(path.join(rootDir, serverName));
|
|
|
|
|
|
|
|
// stop the server
|
|
|
|
server.stop();
|
|
|
|
|
|
|
|
// redirect the user back to the home page
|
|
|
|
res.redirect('/');
|
|
|
|
};
|