Advertisement
Guest User

Untitled

a guest
Jun 6th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.22 KB | None | 0 0
  1. const exec = require('child_process').exec;
  2. const bodyParser = require('body-parser');
  3. const express = require('express');
  4. const rimraf = require('rimraf');
  5. const sha256 = require('sha256');
  6. const path = require('path');
  7. const fs = require('fs');
  8. const app = express();
  9.  
  10. const ftp = require('./src/ftp.js');
  11. const mcpe = require('./src/mcpe.js');
  12. const connect = require('./src/connect.js');
  13.  
  14. app.use(bodyParser.urlencoded({ extended: true }));
  15. app.use(bodyParser.json());
  16.  
  17. /* The secret password for security */
  18. const secret = 'secret';
  19.  
  20. /* The all server minecraft are here! */
  21. var server = {};
  22.  
  23. process.on('uncaughtException', function (err) {
  24. console.log('Caught exception: ' + err);
  25. });
  26.  
  27. /* Get server online status */
  28. app.post('/mcpe/status', (req, res) => {
  29. if(req.body.uuid === undefined){
  30. res.send('offline');
  31. }else{
  32. if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
  33. res.send('offline');
  34. }else{
  35. if(server[req.body.uuid].status()){
  36. res.send('online');
  37. }else{
  38. res.send('offline');
  39. }
  40. }
  41. }
  42. });
  43.  
  44. /* Run the minecraft server! */
  45. app.post('/mcpe/run', (req, res) => {
  46. if(req.body.token === undefined || req.body.uuid === undefined){
  47. res.send('Unexpected Token Error Response!');
  48. }else{
  49. var token = req.body.token;
  50. var token2 = sha256(req.body.uuid + secret);
  51. if(token != token2){
  52. res.send('Invalid Token Error Response!');
  53. }else{
  54. if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
  55. connect.getServerData(req.body.uuid, function(data){
  56. server[req.body.uuid] = new mcpe.initialize(req.body.uuid);
  57. server[req.body.uuid].run(data);
  58. });
  59. res.send('SUCCESS');
  60. }else{
  61. if(!server[req.body.uuid].status()){
  62. connect.getServerData(req.body.uuid, function(data){
  63. server[req.body.uuid] = new mcpe.initialize(req.body.uuid);
  64. server[req.body.uuid].run(data);
  65. });
  66. res.send('SUCCESS');
  67. }else{
  68. res.send('This server has been started, Stop server before run it again!');
  69. }
  70. }
  71. }
  72. }
  73. });
  74.  
  75. /* Stop the minecraft server! */
  76. app.post('/mcpe/stop', (req, res) => {
  77. if(req.body.token === undefined || req.body.uuid === undefined){
  78. res.send('Unexpected Token Error Response!');
  79. }else{
  80. var token = req.body.token;
  81. var token2 = sha256(req.body.uuid + secret);
  82. if(token != token2){
  83. res.send('Invalid Token Error Response!');
  84. }else{
  85. if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
  86. //do nothing
  87. }else{
  88. server[req.body.uuid].stop();
  89. }
  90. }
  91. res.send('SUCCESS');
  92. }
  93. });
  94.  
  95. /* Kill the minecraft server (force stop)! */
  96. app.post('/mcpe/forcestop', (req, res) => {
  97. if(req.body.token === undefined || req.body.uuid === undefined){
  98. res.send('Unexpected Token Error Response!');
  99. }else{
  100. var token = req.body.token;
  101. var token2 = sha256(req.body.uuid + secret);
  102. if(token != token2){
  103. res.send('Invalid Token Error Response!');
  104. }else{
  105. if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
  106. //do nothing
  107. }else {
  108. server[req.body.uuid].forcestop();
  109. }
  110. }
  111. res.send('SUCCESS');
  112. }
  113. });
  114.  
  115. /* Send the command to minecraft server! */
  116. app.post('/mcpe/command', (req, res) => {
  117. if(req.body.token === undefined || req.body.uuid === undefined || req.body.command === undefined){
  118. res.send('Unexpected Token Error Response!');
  119. }else{
  120. var token = req.body.token;
  121. var token2 = sha256(req.body.uuid + secret);
  122. if(token != token2){
  123. res.send('Invalid Token Error Response!');
  124. }else{
  125. if(server[req.body.uuid] === undefined || server[req.body.uuid] === null){
  126. //do mothing
  127. }else{
  128. server[req.body.uuid].command(req.body.command);
  129. }
  130. }
  131. res.send('SUCCESS');
  132. }
  133. });
  134.  
  135. /* Destory the minecraft server GG BYE SEE YA!! */
  136. app.post('/mcpe/destory', (req, res) => {
  137. if(req.body.token === undefined || req.body.uuid === undefined || req.body.destroy === undefined){
  138. res.send('Unexpected Token Error Response!');
  139. }else{
  140. var token = req.body.token;
  141. var token2 = sha256(req.body.uuid + secret);
  142. if(token != token2){
  143. res.send('Invalid Token Error Response!');
  144. }else{
  145. /* REMOVE FTP USER */
  146. ftp.removeFtpUser(this.body.uuid);
  147. /* REMOVE SERVER FOLDER */
  148. rimraf('/ownpe/minecraft_server/' + this.body.uuid, function(){});
  149. /* REMOVE USER */
  150. connect.getServerData(req.body.uuid, function(data){
  151. var nd = JSON.parse(data);
  152. exec("userdel " + nd.port, function(error, stdout, stderr) {
  153. //do nothing
  154. });
  155. });
  156. res.send('SUCCESS');
  157. }
  158. }
  159. });
  160.  
  161. /* Create a minecraft server (ftp, copy) */
  162. app.post('/created', (req, res) => {
  163. if(req.body.token === undefined || req.body.uuid === undefined || req.body.version === undefined || req.body.ftp_user === undefined || req.body.ftp_pass === undefined){
  164. res.send('Unexpected Token Error Response!');
  165. }else{
  166. var token = req.body.token;
  167. var token2 = sha256(req.body.uuid + req.body.ftp_user + req.body.ftp_pass + req.body.version + secret);
  168. if(token != token2){
  169. res.send('Invalid Token Error Response!');
  170. }else{
  171. if(fs.existsSync(path.join(__dirname, 'minecraft_server', req.body.uuid))){
  172. res.send('UUID Is Not Empty Error Response!');
  173. }else{
  174. /* Add user to ubuntu server */
  175. exec("useradd -u "+req.body.ftp_user+" -g 2001 "+req.body.ftp_user+" --shell=/sbin/nologin", function(error, stdout, stderr) {
  176. //do nothing
  177. });
  178. /* Create new folder for server */
  179. fs.mkdir(path.join(__dirname, 'minecraft_server', req.body.uuid), function(err){
  180. if(err) throw err;
  181. });
  182. /* Insert ftp user, pass to database */
  183. ftp.createFtpUser(req.body.ftp_user, req.body.ftp_pass, '/ownpe/minecraft_server/' + req.body.uuid);
  184. /* Edit Server.Properties */
  185. fs.readFile(path.join(__dirname, 'server.properties'), 'utf8', (err, data) => {
  186. if (err) throw err;
  187. var result = data.replace(/__PORT__/g, req.body.data.port);
  188. fs.writeFile(path.join(__dirname, 'minecraft_server', req.body.uuid, 'server.properties'), result, 'utf8', function (err) {
  189. if (err) return console.log(err);
  190. });
  191. });
  192. /* Edit Pocketmine.yml */
  193. fs.readFile(path.join(__dirname, 'pocketmine.yml'), 'utf8', (err, data) => {
  194. if (err) throw err;
  195. var memory = Number(req.body.data.ram);
  196. var max = memory + 256;
  197. var result = data.replace(/__MEM__/g, memory).replace(/__MAX__/g, max);
  198. fs.writeFile(path.join(__dirname, 'minecraft_server', req.body.uuid, 'pocketmine.yml'), result, 'utf8', function (err) {
  199. if (err) return console.log(err);
  200. });
  201. });
  202. /* Add permisstion to folder */
  203. setTimeout(function(){
  204. exec("chown -R " + req.body.ftp_user + ":2001 /ownpe/minecraft_server/" + req.body.uuid, function(error, stdout, stderr) {
  205. console.log('[OWNPE] Registed new server!!');
  206. });
  207. }, 1000);
  208. /* Send The Response To Web Server */
  209. res.send('SUCCESS');
  210. }
  211. }
  212. }
  213. });
  214.  
  215. app.listen(3000, () => {
  216. console.log('Server start on port 3000!');
  217. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement