Async functions #169

Merged
Sirherobrine23 merged 5 commits from AsyncFunctions into main 2021-08-27 03:08:42 +00:00
9 changed files with 192 additions and 173 deletions
Showing only changes of commit 107a26b9cb - Show all commits

View File

@ -89,120 +89,123 @@ async function StartServer(){
process.exit(2) process.exit(2)
} }
} }
(async () => {
// Bds Maneger CLI Help // Bds Maneger CLI Help
if (help) { if (help) {
let help = [ let help = [
"usage: bds_maneger [options]", "usage: bds_maneger [options]",
"", "",
"options:", "options:",
" -s --start Start Server", " -s --start Start Server",
" -k --kill Detect and kill bds servers", " -k --kill Detect and kill bds servers",
" -p --platform Select server platform", " -p --platform Select server platform",
" -d --download server version to install, default \"latest\"", " -d --download server version to install, default \"latest\"",
" --interactive Install the server interactively", " --interactive Install the server interactively",
" -S --system_info System info and test", " -S --system_info System info and test",
" -h --help Print this list and exit.", " -h --help Print this list and exit.",
" -v --version Print the version and exit." " -v --version Print the version and exit."
] ]
console.log(cli_color.yellow(help.join("\n"))); console.log(cli_color.yellow(help.join("\n")));
process.exit(); process.exit();
}
// Get Bds Core Version
if (version) {
const Info = [
`Bds Maneger Core version: ${bds.package_json.version}`,
"",
"****************** Bds Maneger Core contributors ******************",
"",
]
for (let contri of bds.extra_json.contributors) {
Info.push(`********* ${contri.name} *********`)
if (contri.email) Info.push(`* ${contri.email}`)
if (contri.url) Info.push(`* ${contri.url}`)
Info.push("*")
Info.push("*********")
} }
console.log(Info.join("\n"));
process.exit();
}
if (SystemCheck) { // Get Bds Core Version
var checkothearch = ""; if (version) {
if (process.platform === "linux" && bds.arch !== "x64"){checkothearch = `qemu-x86_64-static is installed to emulate an x64 system: ${commandExits("qemu-x86_64-static")}\n`} const Info = [
if (process.platform === "android" && bds.arch !== "x64"){checkothearch = `qemu-x86_64 is installed to emulate an x64 system: ${commandExits("qemu-x86_64")}\n`} `Bds Maneger Core version: ${bds.package_json.version}`,
const help = [ "",
`Bds Maneger Core And Bds Maneger CLI version: ${cli_color.magentaBright(bds.package_json.version)}`, "****************** Bds Maneger Core contributors ******************",
`System: ${cli_color.yellow(process.platform)}, architecture: ${cli_color.blue(bds.arch)}`, "",
checkothearch, ]
"**************************************************************", for (let contri of bds.extra_json.contributors) {
"* Bds Maneger dirs:", Info.push(`********* ${contri.name} *********`)
`* - Config: ${cli_color.yellowBright(bds_dir)}`, if (contri.email) Info.push(`* ${contri.email}`)
`* - Players File: ${cli_color.yellowBright(GetPaths("player"))}`, if (contri.url) Info.push(`* ${contri.url}`)
"*", Info.push("*")
"* Bds Servers dirs:", Info.push("*********")
`* - Bedrock Server: ${cli_color.yellowBright(GetServerPaths("bedrock"))}`, }
`* - Pocketmine-MP Server: ${cli_color.yellowBright(GetServerPaths("pocketmine"))}`, console.log(Info.join("\n"));
`* - Dragonfly: ${cli_color.yellowBright(GetServerPaths("dragonfly"))}`, process.exit();
`* - Java Server: ${cli_color.yellowBright(GetServerPaths("java"))}`, }
`* - Spigot Server: ${cli_color.yellowBright(GetServerPaths("spigot"))}`,
"*",
"**************************************************************",
"* Servers currently available:",
`* - Bedrock: ${SystemInfo.valid_platform.bedrock}`,
`* - Pocketmine-MP: ${SystemInfo.valid_platform.pocketmine}`,
`* - Dragonfly: ${SystemInfo.valid_platform.dragonfly}`,
`* - Java: ${SystemInfo.valid_platform.java}`,
`* - Spigot: ${SystemInfo.valid_platform.java}`,
"*",
"**************************************************************"
];
console.log(
cli_color.whiteBright(help.join("\n")
.replace(/true/gi, cli_color.greenBright("true"))
.replace(/false/gi, cli_color.redBright("false"))
.replace(/undefined/gi, cli_color.red("undefined"))
));
process.exit(0)
}
// Download server if (SystemCheck) {
if (bds_version){ const { valid_platform } = await SystemInfo();
(async () => { var checkothearch = "";
try { if (process.platform === "linux" && bds.arch !== "x64"){checkothearch = `qemu-x86_64-static is installed to emulate an x64 system: ${commandExits("qemu-x86_64-static")}\n`}
if (argv.interactive) { if (process.platform === "android" && bds.arch !== "x64"){checkothearch = `qemu-x86_64 is installed to emulate an x64 system: ${commandExits("qemu-x86_64")}\n`}
const LoadVersion = (await (await fetch(BdsConfigAndInfo.Fetchs.servers)).json())[GetPlatform()] const help = [
const Version = Object.getOwnPropertyNames(LoadVersion) `Bds Maneger Core And Bds Maneger CLI version: ${cli_color.magentaBright(bds.package_json.version)}`,
`System: ${cli_color.yellow(process.platform)}, architecture: ${cli_color.blue(bds.arch)}`,
const StartQuestion = (Readline) => { checkothearch,
Readline.question("Select a version to download: ", input => { "**************************************************************",
if (Version[parseInt(input) - 1]) { "* Bds Maneger dirs:",
Readline.close(); `* - Config: ${cli_color.yellowBright(bds_dir)}`,
download(Version[parseInt(input) - 1], true, function(){ `* - Players File: ${cli_color.yellowBright(GetPaths("player"))}`,
if (start) return StartServer(); "*",
console.log("Installation was successful, so start the server with the -s option"); "* Bds Servers dirs:",
process.exit(0); `* - Bedrock Server: ${cli_color.yellowBright(GetServerPaths("bedrock"))}`,
}) `* - Pocketmine-MP Server: ${cli_color.yellowBright(GetServerPaths("pocketmine"))}`,
} else { `* - Dragonfly: ${cli_color.yellowBright(GetServerPaths("dragonfly"))}`,
console.log("Invalid Option"); `* - Java Server: ${cli_color.yellowBright(GetServerPaths("java"))}`,
StartQuestion(Readline); `* - Spigot Server: ${cli_color.yellowBright(GetServerPaths("spigot"))}`,
} "*",
}); "**************************************************************",
"* Servers currently available:",
`* - Bedrock: ${valid_platform.bedrock}`,
`* - Pocketmine-MP: ${valid_platform.pocketmine}`,
`* - Dragonfly: ${valid_platform.dragonfly}`,
`* - Java: ${valid_platform.java}`,
`* - Spigot: ${valid_platform.java}`,
"*",
"**************************************************************"
];
console.log(
cli_color.whiteBright(help.join("\n")
.replace(/true/gi, cli_color.greenBright("true"))
.replace(/false/gi, cli_color.redBright("false"))
.replace(/undefined/gi, cli_color.red("undefined"))
));
process.exit(0)
}
// Download server
if (bds_version){
(async () => {
try {
if (argv.interactive) {
const LoadVersion = (await (await fetch(BdsConfigAndInfo.Fetchs.servers)).json())[GetPlatform()]
const Version = Object.getOwnPropertyNames(LoadVersion)
const StartQuestion = (Readline) => {
Readline.question("Select a version to download: ", input => {
if (Version[parseInt(input) - 1]) {
Readline.close();
download(Version[parseInt(input) - 1], true, function(){
if (start) return StartServer();
console.log("Installation was successful, so start the server with the -s option");
process.exit(0);
})
} else {
console.log("Invalid Option");
StartQuestion(Readline);
}
});
}
console.log(`Selected platform: ${GetPlatform()}, Total available versions: ${Version.length}`);
console.log(`${cli_color.red("Option")} ${cli_color.green("Version")}`);
for (let option in Version) console.log(`${cli_color.red(parseInt(option) + 1)}: ${cli_color.green(Version[option])}`);
StartQuestion(readline.createInterface({input: process.stdin,output: process.stdout}));
} }
else bds.download(bds_version, true, function(){
console.log(`Selected platform: ${GetPlatform()}, Total available versions: ${Version.length}`); if (start) StartServer();
console.log(`${cli_color.red("Option")} ${cli_color.green("Version")}`); })
} catch (error) {console.error(error);process.exit(165);}
for (let option in Version) console.log(`${cli_color.red(parseInt(option) + 1)}: ${cli_color.green(Version[option])}`); })();
StartQuestion(readline.createInterface({input: process.stdin,output: process.stdout})); }
}
else bds.download(bds_version, true, function(){
if (start) StartServer();
})
} catch (error) {console.error(error);process.exit(165);}
})();
}
// Start server // Start server
if (start && !(server || version || SystemCheck || bds_version || help)) StartServer(); if (start && !(server || version || SystemCheck || bds_version || help)) StartServer();
})()

View File

@ -47,7 +47,7 @@ module.exports.telegram_token_save = UpdateTelegramToken
* *
* @param {function} callback - The callback function after start API * @param {function} callback - The callback function after start API
*/ */
module.exports.api = require("./src/rest/api"); module.exports.api = require("./src/api/api");
function token_register(Admin_Scoper = ["web_admin", "admin"]) { function token_register(Admin_Scoper = ["web_admin", "admin"]) {
Admin_Scoper = Array.from(Admin_Scoper).filter(scoper => /admin/.test(scoper)); Admin_Scoper = Array.from(Admin_Scoper).filter(scoper => /admin/.test(scoper));

View File

@ -1,7 +1,7 @@
const { join, resolve, basename } = require("path"); const { join, resolve, basename } = require("path");
const { existsSync, writeFileSync, mkdirSync, readFileSync } = require("fs"); const { existsSync, writeFileSync, mkdirSync, readFileSync } = require("fs");
const { homedir } = require("os"); const { homedir } = require("os");
const { valid_platform } = require("./BdsSystemInfo"); const BdsInfo = require("./BdsSystemInfo");
const yaml = require("js-yaml"); const yaml = require("js-yaml");
// PATHs // PATHs
@ -9,12 +9,19 @@ const home = homedir();
const bds_dir = join(home, "bds_core"); const bds_dir = join(home, "bds_core");
if (!(existsSync(bds_dir))) mkdirSync(bds_dir, {recursive: true}) if (!(existsSync(bds_dir))) mkdirSync(bds_dir, {recursive: true})
// Set default platform for bds maneger BdsInfo().then(validation => {
var default_platformConfig; const { valid_platform } = validation;
if (valid_platform["bedrock"]) default_platformConfig = "bedrock"; // Set default platform for bds maneger
else if (valid_platform["java"]) default_platformConfig = "java"; var default_platformConfig;
else if (valid_platform["pocketmine"]) default_platformConfig = "pocketmine"; if (valid_platform["bedrock"]) default_platformConfig = "bedrock";
else throw new Error("We cannot run any platforms on this system/device"); else if (valid_platform["java"]) default_platformConfig = "java";
else if (valid_platform["pocketmine"]) default_platformConfig = "pocketmine";
else throw new Error("We cannot run any platforms on this system/device");
UpdatePlatform(default_platformConfig);
}).catch(err => {
console.log(err);
process.exit(1);
});
// Config Base to Bds Maneger Core and others Projects // Config Base to Bds Maneger Core and others Projects
var Config = { var Config = {
@ -28,7 +35,7 @@ var Config = {
enable_tmp_host: false enable_tmp_host: false
}, },
server: { server: {
platform: default_platformConfig, platform: "bedrock",
BackupCron: [ BackupCron: [
{ {
enabled: false, enabled: false,

View File

@ -1,62 +1,73 @@
const { execSync } = require("child_process");
const { release } = require("os"); const { release } = require("os");
const { readdirSync } = require("fs"); const { readdirSync } = require("fs");
const { execSync } = require("child_process");
const commadExist = require("./commandExist"); const commadExist = require("./commandExist");
const fetchSync = require("@the-bds-maneger/fetchsync"); const Request = require("./Requests");
// Load JSON for Server and PHP Zip files async function CheckSystemAsync() {
const PHPBin = fetchSync("https://raw.githubusercontent.com/The-Bds-Maneger/Php_Static_Binary/main/binarys.json").json(), const
Servers = fetchSync("https://raw.githubusercontent.com/The-Bds-Maneger/external_files/main/Server.json").json(); PHPBin = await Request.JSON("https://raw.githubusercontent.com/The-Bds-Maneger/Php_Static_Binary/main/binarys.json"),
Servers = await Request.JSON("https://raw.githubusercontent.com/The-Bds-Maneger/external_files/main/Server.json");
// System Architect (x64, aarch64 and others)
var arch; let system, require_qemu = false;
if (process.arch === "arm64") arch = "aarch64"; const valid_platform = {
else arch = process.arch
module.exports.arch = arch
var system,
require_qemu = false,
valid_platform = {
bedrock: true, bedrock: true,
pocketmine: true, pocketmine: true,
java: commadExist("java"), java: commadExist("java"),
dragonfly: commadExist("go"), dragonfly: commadExist("go"),
} };
// check php bin // check php bin
if ((PHPBin[process.platform] || {})[arch]) valid_platform["pocketmine"] = true; if ((PHPBin[process.platform] || {})[arch]) valid_platform["pocketmine"] = true;
else valid_platform["pocketmine"] = false; else valid_platform["pocketmine"] = false;
// SoSystem X // SoSystem X
if (process.platform == "win32") { if (process.platform == "win32") {
system = "Windows"; system = "Windows";
} else if (process.platform == "linux") { } else if (process.platform == "linux") {
system = "Linux"; system = "Linux";
// Bedrock Check // Bedrock Check
if (Servers.bedrock[Servers.latest.bedrock][arch]) { if (Servers.bedrock[Servers.latest.bedrock][arch]) {
if (Servers.bedrock[Servers.latest.bedrock][arch][process.platform]) valid_platform["bedrock"] = true; if (Servers.bedrock[Servers.latest.bedrock][arch][process.platform]) valid_platform["bedrock"] = true;
else valid_platform["bedrock"] = false; else valid_platform["bedrock"] = false;
} else valid_platform["bedrock"] = false; } else valid_platform["bedrock"] = false;
if (valid_platform["bedrock"] === false) { if (valid_platform["bedrock"] === false) {
if (commadExist("qemu-x86_64-static")) { if (commadExist("qemu-x86_64-static")) {
console.warn("The Minecraft Bedrock Server is only being validated because you can use 'qemu-x86_64-static'"); console.warn("The Minecraft Bedrock Server is only being validated because you can use 'qemu-x86_64-static'");
valid_platform["bedrock"] = true valid_platform["bedrock"] = true
require_qemu = true require_qemu = true
}
} }
} else if (process.platform == "darwin") {
system = "MacOS";
valid_platform["bedrock"] = false
} else if (process.platform === "android") {
system = "Android";
valid_platform["bedrock"] = false
} else {
throw new Error(`The Bds Maneger Core does not support ${process.platform} systems, as no tests have been done.`);
} }
} else if (process.platform == "darwin") {
system = "MacOS"; return {
valid_platform["bedrock"] = false system,
} else if (process.platform === "android") { require_qemu,
system = "Android"; valid_platform,
valid_platform["bedrock"] = false };
} else {
console.log(`The Bds Maneger Core does not support ${process.platform} systems, as no tests have been done.`);
process.exit(127);
} }
module.exports = CheckSystemAsync;
// System Architect (x64, aarch64 and others)
let arch;
if (process.arch === "arm64") arch = "aarch64";
else arch = process.arch
module.exports.arch = arch
/**
* Platforms valid from deferents systems
*/
function GetKernel() { function GetKernel() {
if (process.platform === "win32") { if (process.platform === "win32") {
const kernelVersion = parseFloat(release()); const kernelVersion = parseFloat(release());
@ -93,11 +104,4 @@ function GetKernel() {
else return str.replace(/\n|\t|\r/gi, ""); else return str.replace(/\n|\t|\r/gi, "");
} else return "Not identified"; } else return "Not identified";
} }
/**
* Platforms valid from deferents systems
*/
module.exports.valid_platform = valid_platform
module.exports.require_qemu = require_qemu
module.exports.system = system
module.exports.GetKernel = GetKernel; module.exports.GetKernel = GetKernel;

6
lib/Requests.js Normal file
View File

@ -0,0 +1,6 @@
if (typeof fetch === "undefined") global.fetch = require("node-fetch");
module.exports = {
JSON: async (url = "", options) => await (await fetch(url, options)).json(),
TEXT: async (url = "", options) => await (await fetch(url, options)).text(),
BUFFER: async (url = "", options) => Buffer.from(await (await fetch(url, options)).arrayBuffer()),
}

View File

@ -1,7 +1,6 @@
const express = require("express"); const express = require("express");
const app = express.Router(); const app = express.Router();
const { GetPlatform, GetPaths } = require("../../../lib/BdsSettings") const { GetPlatform, GetPaths } = require("../../../lib/BdsSettings")
const bds = require("../../../index");
const { token_verify, CheckPlayer } = require("../../UsersAndtokenChecks"); const { token_verify, CheckPlayer } = require("../../UsersAndtokenChecks");
const { readFileSync } = require("fs"); const { readFileSync } = require("fs");
const docs = require("../../../BdsManegerInfo.json").docs; const docs = require("../../../BdsManegerInfo.json").docs;