Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const exec = require('child_process').exec;
- const bodyParser = require('body-parser');
- const express = require('express');
- const rimraf = require('rimraf');
- const sha256 = require('sha256');
- const path = require('path');
- const fs = require('fs');
- const app = express();
- const ftp = require('./src/ftp.js');
- const mcpe = require('./src/mcpe.js');
- const connect = require('./src/connect.js');
- app.use(bodyParser.urlencoded({ extended: true }));
- app.use(bodyParser.json());
- /* The secret password for security */
- const secret = 'secret';
- /* The all server minecraft are here! */
- var server = {};
- process.on('uncaughtException', function (err) {
- console.log('Caught exception: ' + err);
- });
- /* Get server online status */
- app.post('/mcpe/status', (req, res) => {
- if(req.body.uuid === undefined){
- res.send('offline');
- }else{
- if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
- res.send('offline');
- }else{
- if(server[req.body.uuid].status()){
- res.send('online');
- }else{
- res.send('offline');
- }
- }
- }
- });
- /* Run the minecraft server! */
- app.post('/mcpe/run', (req, res) => {
- if(req.body.token === undefined || req.body.uuid === undefined){
- res.send('Unexpected Token Error Response!');
- }else{
- var token = req.body.token;
- var token2 = sha256(req.body.uuid + secret);
- if(token != token2){
- res.send('Invalid Token Error Response!');
- }else{
- if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
- connect.getServerData(req.body.uuid, function(data){
- server[req.body.uuid] = new mcpe.initialize(req.body.uuid);
- server[req.body.uuid].run(data);
- });
- res.send('SUCCESS');
- }else{
- if(!server[req.body.uuid].status()){
- connect.getServerData(req.body.uuid, function(data){
- server[req.body.uuid] = new mcpe.initialize(req.body.uuid);
- server[req.body.uuid].run(data);
- });
- res.send('SUCCESS');
- }else{
- res.send('This server has been started, Stop server before run it again!');
- }
- }
- }
- }
- });
- /* Stop the minecraft server! */
- app.post('/mcpe/stop', (req, res) => {
- if(req.body.token === undefined || req.body.uuid === undefined){
- res.send('Unexpected Token Error Response!');
- }else{
- var token = req.body.token;
- var token2 = sha256(req.body.uuid + secret);
- if(token != token2){
- res.send('Invalid Token Error Response!');
- }else{
- if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
- //do nothing
- }else{
- server[req.body.uuid].stop();
- }
- }
- res.send('SUCCESS');
- }
- });
- /* Kill the minecraft server (force stop)! */
- app.post('/mcpe/forcestop', (req, res) => {
- if(req.body.token === undefined || req.body.uuid === undefined){
- res.send('Unexpected Token Error Response!');
- }else{
- var token = req.body.token;
- var token2 = sha256(req.body.uuid + secret);
- if(token != token2){
- res.send('Invalid Token Error Response!');
- }else{
- if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
- //do nothing
- }else {
- server[req.body.uuid].forcestop();
- }
- }
- res.send('SUCCESS');
- }
- });
- /* Send the command to minecraft server! */
- app.post('/mcpe/command', (req, res) => {
- if(req.body.token === undefined || req.body.uuid === undefined || req.body.command === undefined){
- res.send('Unexpected Token Error Response!');
- }else{
- var token = req.body.token;
- var token2 = sha256(req.body.uuid + secret);
- if(token != token2){
- res.send('Invalid Token Error Response!');
- }else{
- if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
- //do mothing
- }else{
- server[req.body.uuid].command(req.body.command);
- }
- }
- res.send('SUCCESS');
- }
- });
- /* Destory the minecraft server GG BYE SEE YA!! */
- app.post('/mcpe/destory', (req, res) => {
- if(req.body.token === undefined || req.body.uuid === undefined || req.body.destroy === undefined){
- res.send('Unexpected Token Error Response!');
- }else{
- var token = req.body.token;
- var token2 = sha256(req.body.uuid + secret);
- if(token != token2){
- res.send('Invalid Token Error Response!');
- }else{
- /* REMOVE FTP USER */
- ftp.removeFtpUser(this.body.uuid);
- /* REMOVE SERVER FOLDER */
- rimraf('/ownpe/minecraft_server/' + this.body.uuid, function(){});
- /* REMOVE USER */
- connect.getServerData(req.body.uuid, function(data){
- var nd = JSON.parse(data);
- exec("userdel " + nd.port, function(error, stdout, stderr) {
- //do nothing
- });
- });
- res.send('SUCCESS');
- }
- }
- });
- /* Create a minecraft server (ftp, copy) */
- app.post('/created', (req, res) => {
- if(req.body.token === undefined || req.body.uuid === undefined || req.body.version === undefined || req.body.ftp_user === undefined || req.body.ftp_pass === undefined){
- res.send('Unexpected Token Error Response!');
- }else{
- var token = req.body.token;
- var token2 = sha256(req.body.uuid + req.body.ftp_user + req.body.ftp_pass + req.body.version + secret);
- if(token != token2){
- res.send('Invalid Token Error Response!');
- }else{
- if(fs.existsSync(path.join(__dirname, 'minecraft_server', req.body.uuid))){
- res.send('UUID Is Not Empty Error Response!');
- }else{
- /* Add user to ubuntu server */
- exec("useradd -u "+req.body.ftp_user+" -g 2001 "+req.body.ftp_user+" --shell=/sbin/nologin", function(error, stdout, stderr) {
- //do nothing
- });
- /* Create new folder for server */
- fs.mkdir(path.join(__dirname, 'minecraft_server', req.body.uuid), function(err){
- if(err) throw err;
- });
- /* Insert ftp user, pass to database */
- ftp.createFtpUser(req.body.ftp_user, req.body.ftp_pass, '/ownpe/minecraft_server/' + req.body.uuid);
- /* Edit Server.Properties */
- fs.readFile(path.join(__dirname, 'server.properties'), 'utf8', (err, data) => {
- if (err) throw err;
- var result = data.replace(/__PORT__/g, req.body.data.port);
- fs.writeFile(path.join(__dirname, 'minecraft_server', req.body.uuid, 'server.properties'), result, 'utf8', function (err) {
- if (err) return console.log(err);
- });
- });
- /* Edit Pocketmine.yml */
- fs.readFile(path.join(__dirname, 'pocketmine.yml'), 'utf8', (err, data) => {
- if (err) throw err;
- var memory = Number(req.body.data.ram);
- var max = memory + 256;
- var result = data.replace(/__MEM__/g, memory).replace(/__MAX__/g, max);
- fs.writeFile(path.join(__dirname, 'minecraft_server', req.body.uuid, 'pocketmine.yml'), result, 'utf8', function (err) {
- if (err) return console.log(err);
- });
- });
- /* Add permisstion to folder */
- setTimeout(function(){
- exec("chown -R " + req.body.ftp_user + ":2001 /ownpe/minecraft_server/" + req.body.uuid, function(error, stdout, stderr) {
- console.log('[OWNPE] Registed new server!!');
- });
- }, 1000);
- /* Send The Response To Web Server */
- res.send('SUCCESS');
- }
- }
- }
- });
- app.listen(3000, () => {
- console.log('Server start on port 3000!');
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement