Pocketmine init #79
33
index.js
33
index.js
@ -5,6 +5,7 @@ const { resolve } = require("path");
|
||||
const { error } = console;
|
||||
const shell = require("shelljs");
|
||||
const {getDesktopFolder, getConfigHome} = require("platform-folders")
|
||||
const { execSync } = require("child_process");
|
||||
|
||||
const bds_core_package = resolve(__dirname, "package.json")
|
||||
const bds_maneger_version = require(bds_core_package).version
|
||||
@ -40,9 +41,10 @@ module.exports.package_path = bds_core_package
|
||||
if (process.platform == "win32") {
|
||||
home = process.env.USERPROFILE;
|
||||
tmp = process.env.TMP
|
||||
system = "windows";
|
||||
system = "Windows";
|
||||
valid_platform = {
|
||||
"bedrock": true,
|
||||
"pocketmine": true,
|
||||
"java": true
|
||||
}
|
||||
} else if (process.platform == "linux") {
|
||||
@ -50,9 +52,10 @@ if (process.platform == "win32") {
|
||||
if (process.env.BDS_DOCKER_IMAGE) desktop = "/home/bds/"
|
||||
else desktop = "/tmp"
|
||||
tmp = "/tmp";
|
||||
system = "linux";
|
||||
system = "Linux";
|
||||
valid_platform = {
|
||||
"bedrock": true,
|
||||
"pocketmine": true,
|
||||
"java": true
|
||||
}
|
||||
} else if (process.platform == "darwin") {
|
||||
@ -60,9 +63,10 @@ if (process.platform == "win32") {
|
||||
else require("open")("https://github.com/The-Bds-Maneger/core/wiki/system_support#macos-with-intel-processors");
|
||||
home = process.env.HOME;
|
||||
tmp = "/tmp";
|
||||
system = "macOS";
|
||||
system = "MacOS";
|
||||
valid_platform = {
|
||||
"bedrock": false,
|
||||
"pocketmine": true,
|
||||
"java": true
|
||||
}
|
||||
} else {
|
||||
@ -165,6 +169,15 @@ if (!(fs.existsSync(bds_dir_bedrock))){
|
||||
}
|
||||
module.exports.bds_dir_bedrock = bds_dir_bedrock
|
||||
|
||||
/* PocketMine Path */
|
||||
const bds_dir_pocketmine = path.join(bds_dir, "pocketmine");
|
||||
if (!(fs.existsSync(bds_dir_pocketmine))){
|
||||
console.log("Creating the bds directory to Pocketmine")
|
||||
fs.mkdirSync(bds_dir_pocketmine)
|
||||
if (!(fs.existsSync(bds_dir_pocketmine))) shell.mkdir("-p", bds_dir_pocketmine);
|
||||
}
|
||||
module.exports.bds_dir_pocketmine = bds_dir_pocketmine
|
||||
|
||||
// Create backup folder
|
||||
if (!(fs.existsSync(bds_dir_backup))){
|
||||
fs.mkdirSync(bds_dir_backup)
|
||||
@ -192,6 +205,18 @@ if (!(fs.existsSync(log_dir))){
|
||||
if (typeof fetch === "undefined") global.fetch = require("node-fetch");
|
||||
if (typeof localStorage === "undefined") global.localStorage = new require("node-localstorage").LocalStorage(path.join(LocalStorageFolder, "Local_Storage"));
|
||||
|
||||
/* Minecraft Servers URLs and depedencies */
|
||||
// urls
|
||||
const SERVER_URLs = JSON.parse(execSync("curl -sS \"https://raw.githubusercontent.com/Bds-Maneger/Raw_files/main/Server.json\"").toString())
|
||||
module.exports.SERVER_URLs = SERVER_URLs
|
||||
|
||||
// PHP Bins
|
||||
const PHPbinsUrl = JSON.parse(execSync("curl -sS \"https://raw.githubusercontent.com/The-Bds-Maneger/Raw_files/main/php_bin.json\"").toString())
|
||||
module.exports.PHPbinsUrls = PHPbinsUrl
|
||||
console.log(PHPbinsUrl);
|
||||
const PHPurlNames = Object.getOwnPropertyNames(PHPbinsUrl)
|
||||
module.exports.PHPurlNames = PHPurlNames
|
||||
|
||||
/* ---------------------------------------------------------------------------- Variables ---------------------------------------------------------------------------- */
|
||||
// Configs
|
||||
var bds_config, bds_config_file = path.join(bds_dir, "bds_config.json");
|
||||
@ -376,7 +401,7 @@ if (require("fs").existsSync(path.join(bds_dir, "telegram_token.txt"))){
|
||||
throw new error("It was not possible to move the old telegram token file to the new bds maneger api file")
|
||||
}
|
||||
}
|
||||
const getSize = require("get-folder-size")
|
||||
const getSize = require("get-folder-size");
|
||||
getSize(bds_dir_backup, function(err, info) {
|
||||
if (err) throw err
|
||||
function toGB(x) {return (x / (1024 * 1024 * 1024)).toFixed(1);}
|
||||
|
5
package-lock.json
generated
5
package-lock.json
generated
@ -1,12 +1,13 @@
|
||||
{
|
||||
"name": "@the-bds-maneger/core",
|
||||
"version": "1.8.5.4",
|
||||
"version": "1.8.6",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@the-bds-maneger/core",
|
||||
"version": "1.8.5.4",
|
||||
"version": "1.8.6",
|
||||
"hasInstallScript": true,
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"adm-zip": "^0.5.1",
|
||||
|
@ -3,7 +3,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"version": "1.8.5.5",
|
||||
"version": "1.8.6",
|
||||
"description": "scripts to manage minecraft bedrock server",
|
||||
"private": false,
|
||||
"main": "index.js",
|
||||
@ -12,7 +12,8 @@
|
||||
"eslint": "eslint .",
|
||||
"eslint:fix": "eslint --fix .",
|
||||
"start": "node bin/bds_maneger.js",
|
||||
"debug": "node bin/debug.js"
|
||||
"debug": "node bin/debug.js",
|
||||
"postinstall": "node ./postinstall/curlCheck.js"
|
||||
},
|
||||
"bin": {
|
||||
"bds_maneger": "./bin/bds_maneger.js"
|
||||
|
28
postinstall/curlCheck.js
Normal file
28
postinstall/curlCheck.js
Normal file
@ -0,0 +1,28 @@
|
||||
const { existsSync, mkdirSync, writeFileSync, chmodSync } = require("fs")
|
||||
const { resolve, join } = require("path")
|
||||
const binFolder = resolve((process.env.USERPROFILE||process.env.HOME), "bds_core", "bin")
|
||||
|
||||
if (typeof fetch === "undefined") {var fetch = require("node-fetch")}
|
||||
(function (){
|
||||
if (require("command-exists").sync("curl")) {console.log("Curl is already installed.");process.exit(0)}
|
||||
else {
|
||||
if (!(existsSync(binFolder))) mkdirSync(binFolder)
|
||||
if (process.platform === "linux"){
|
||||
fetch("https://api.github.com/repos/moparisthebest/static-curl/releases").then(response => response.json()).then(function (res){
|
||||
var arch = process.arch
|
||||
if (arch === "x64") arch = "amd64"
|
||||
let url = `https://github.com/moparisthebest/static-curl/releases/download/${res[0].tag_name}/curl-${arch}`
|
||||
console.log(url);
|
||||
fetch(url).then(response => response.arrayBuffer()).then(response => Buffer.from(response)).then(response => {
|
||||
writeFileSync(join(binFolder, "curl"), response, "binary")
|
||||
chmodSync(join(binFolder, "curl"), 7777)
|
||||
process.exit(0)
|
||||
}).catch(function (err){if (err) {console.log(err);process.exit(1)}})
|
||||
})
|
||||
} else if (process.platform === "darwin") throw Error("You will have to install cURL manually, download page: https://curl.se/download.html");
|
||||
else if (process.platform === "win32") {
|
||||
if (Math.trunc(require("os").release()) === "10") throw Error("Please make sure you are on the latest version of Windows 10");
|
||||
else throw Error(`Please manually install curl for Windows ${Math.trunc(require("os").release())}, download page: https://curl.se/download.html`)
|
||||
} else throw Error("Please install curl manually, download page: https://curl.se/download.html")
|
||||
}
|
||||
})()
|
@ -3,7 +3,8 @@ const Storage = localStorage;
|
||||
const {exec, execSync} = require("child_process");
|
||||
const fs = require("fs")
|
||||
const path = require("path")
|
||||
const {CheckBan} = require("./check")
|
||||
const {CheckBan} = require("./check");
|
||||
const { resolve } = require("path");
|
||||
|
||||
module.exports.start = () => {
|
||||
function KickPlayer(player){
|
||||
@ -41,7 +42,7 @@ module.exports.start = () => {
|
||||
}, cwd: bds.bds_dir_bedrock});
|
||||
} else if (process.platform === "darwin") throw Error("We don't have MacOS support yet")
|
||||
else process.exit(210)
|
||||
} else {
|
||||
} else if (plat === "java") {
|
||||
if (require("command-exists").sync("java")) start_server = exec(`java -Xmx${bds.bds_config.java_config.max}M -Xms${bds.bds_config.java_config.max}M -jar server.jar nogui`, {cwd: bds.bds_dir_java});
|
||||
else {
|
||||
if (bds.system == "windows"){
|
||||
@ -55,7 +56,11 @@ module.exports.start = () => {
|
||||
console.log("http://docs.sirherobrine23.com/scripts/_java")
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (plat === "pocketmine") {
|
||||
start_server = exec(`${resolve(bds.bds_dir_pocketmine, "bin/php7/bin/php")} ${resolve(bds.bds_dir_pocketmine, "PocketMine-MP.phar")}`, {env: {
|
||||
...process.env,
|
||||
}, cwd: bds.bds_dir_pocketmine});
|
||||
} else throw Error("")
|
||||
Storage.setItem("old_log_file", bds.log_file)
|
||||
start_server.stdout.on("data", function(data){
|
||||
if (data.includes("agree", "EULA")){
|
||||
|
@ -2,9 +2,11 @@ var AdmZip = require("adm-zip");
|
||||
const { warn } = require("console");
|
||||
const {writeFileSync, existsSync, readFileSync} = require("fs");
|
||||
const { join } = require("path");
|
||||
const {bds_config, bds_dir_bedrock, bds_dir_java, platform_version_update, valid_platform} = require("../index")
|
||||
const {bds_config, bds_dir_bedrock, bds_dir_java, platform_version_update, valid_platform, PHPurlNames, bds_dir_pocketmine, PHPbinsUrls} = require("../index")
|
||||
const bdsSystem = require("../index").system
|
||||
const response = require("../index").SERVER_URLs
|
||||
module.exports = function (version, force_install) {
|
||||
return fetch("https://raw.githubusercontent.com/Bds-Maneger/Raw_files/main/Server.json").then(response => response.json()).then(response => {
|
||||
try {
|
||||
if (version === "") version="latest"
|
||||
if (version === undefined) version="latest"
|
||||
const server_platform = bds_config.bds_platform
|
||||
@ -61,6 +63,53 @@ module.exports = function (version, force_install) {
|
||||
if (process.env.BDS_DOCKER_IMAGE === "true") process.exit(0);
|
||||
}
|
||||
} else throw Error("Java not suported")
|
||||
} else if (server_platform === "pocketmine") {
|
||||
if (valid_platform.pocketmine === true) {
|
||||
if (version === "latest") version = response.PocketMine_latest
|
||||
url = response.PocketMine[version].url
|
||||
console.log(`Server data publish: ${response.PocketMine[version].data}`)
|
||||
console.log(bds_dir_pocketmine);
|
||||
fetch(url).then(response => response.arrayBuffer()).then(response => Buffer.from(response)).then(response => {
|
||||
writeFileSync(join(bds_dir_pocketmine, "PocketMine-MP.phar"), response, "binary")
|
||||
console.log("PocketMine-MP.phar saved");
|
||||
platform_version_update(version)
|
||||
const binFolder = join(bds_dir_pocketmine, "bin")
|
||||
if (!(existsSync(binFolder))) {
|
||||
var urlPHPBin;
|
||||
for (let index in PHPurlNames){
|
||||
const nameFile = PHPurlNames[index]
|
||||
var archS;
|
||||
if (process.platform === "linux") if (process.arch === "x64") archS = "x86_64";
|
||||
if (process.platform === "darwin") if (process.arch === "x64") archS = "x86_64";
|
||||
if (process.platform === "win32") if (process.arch === "x64") archS = "x64";
|
||||
var arch = false, system = false;
|
||||
if (nameFile.includes(bdsSystem)) system = true
|
||||
if (nameFile.includes(archS)) arch = true
|
||||
// -*-*-*-*-
|
||||
console.log({
|
||||
arch,
|
||||
system
|
||||
});
|
||||
if (arch === true && system === true){
|
||||
urlPHPBin = PHPbinsUrls[nameFile]
|
||||
}
|
||||
}
|
||||
if (urlPHPBin === undefined) throw Error("File not found")
|
||||
else {
|
||||
console.log(urlPHPBin);
|
||||
fetch(urlPHPBin).then(response => response.arrayBuffer()).then(response => Buffer.from(response)).then(response => {
|
||||
console.log("Download Sucess")
|
||||
var zipExtractBin = new AdmZip(response);
|
||||
zipExtractBin.extractAllTo(bds_dir_pocketmine, true)
|
||||
console.log("Extract Sucess")
|
||||
if (process.env.BDS_DOCKER_IMAGE === "true") process.exit(0);
|
||||
})
|
||||
}
|
||||
} else if (process.env.BDS_DOCKER_IMAGE === "true") process.exit(0);
|
||||
})
|
||||
} else throw Error("Pocketmine not suported")
|
||||
} else throw Error("Bds maneger Config file error")
|
||||
}).catch(function (err){if (err) throw err;})
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user