Update Get Temp Host #229
| @@ -11,6 +11,7 @@ const ProcessArgs = require("minimist")(process.argv.slice(2)); | |||||||
|  |  | ||||||
| // Import Bds Core | // Import Bds Core | ||||||
| const BdsCore = require("../index"); | const BdsCore = require("../index"); | ||||||
|  | const BdsNetwork = require("../src/BdsNetwork"); | ||||||
| const commandExits = require("../lib/commandExist"); | const commandExits = require("../lib/commandExist"); | ||||||
| const readline = require("readline"); | const readline = require("readline"); | ||||||
| // const BdsMenus = require("./bds_maneger/menus"); | // const BdsMenus = require("./bds_maneger/menus"); | ||||||
| @@ -71,6 +72,7 @@ async function help() { | |||||||
|     "*   -i, --info                 Print info about Bds Maneger Core and Platforms", |     "*   -i, --info                 Print info about Bds Maneger Core and Platforms", | ||||||
|     "*   -d, --download             Download a server", |     "*   -d, --download             Download a server", | ||||||
|     "*   -s, --start                Start a server", |     "*   -s, --start                Start a server", | ||||||
|  |     "*       --get_domain           Get temporary public domain to connect in to server or API", | ||||||
|     "*   -p, --platform             Change the platform", |     "*   -p, --platform             Change the platform", | ||||||
|     "*   -n, --no-api               Don't start the Bds Maneger API Rest", |     "*   -n, --no-api               Don't start the Bds Maneger API Rest", | ||||||
|     "*", |     "*", | ||||||
| @@ -116,9 +118,24 @@ async function Runner() { | |||||||
|  |  | ||||||
|   // Download |   // Download | ||||||
|   if (ProcessArgs.download || ProcessArgs.d) await DownloadServer(); |   if (ProcessArgs.download || ProcessArgs.d) await DownloadServer(); | ||||||
|  |  | ||||||
|  |   // Start Server | ||||||
|   if (!(ProcessArgs.start || ProcessArgs.s)) return; |   if (!(ProcessArgs.start || ProcessArgs.s)) return; | ||||||
|  |  | ||||||
|   // Start |   // Get Temporary External Domain | ||||||
|  |   if (ProcessArgs.get_domain) { | ||||||
|  |     try { | ||||||
|  |       const HostInfo = await BdsNetwork.GetHost(); | ||||||
|  |       console.log("Domain:", HostInfo.host); | ||||||
|  |       process.on("exit", async () => { | ||||||
|  |         await HostInfo.delete_host(); | ||||||
|  |         console.log("Sucess remove host"); | ||||||
|  |       }); | ||||||
|  |     } catch (err) { | ||||||
|  |       console.log("Cannot get domain"); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|   const BdsCoreStart = BdsCore.start(); |   const BdsCoreStart = BdsCore.start(); | ||||||
|   BdsCoreStart.log(data => console.log(cli_color.blueBright(data.replace(/\n$/gi, "")))); |   BdsCoreStart.log(data => console.log(cli_color.blueBright(data.replace(/\n$/gi, "")))); | ||||||
|   BdsCoreStart.exit(code => { |   BdsCoreStart.exit(code => { | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ async function CheckSystemAsync() { | |||||||
|     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; | ||||||
|  |  | ||||||
|     //  |     // Check for Dragonfly | ||||||
|     if (!(Servers.dragonfly.versions[Servers.dragonfly.latest][process.platform][bds.arch])) valid_platform["dragonfly"] = false; |     if (!(Servers.dragonfly.versions[Servers.dragonfly.latest][process.platform][bds.arch])) valid_platform["dragonfly"] = false; | ||||||
|  |  | ||||||
|     // SoSystem X |     // SoSystem X | ||||||
| @@ -44,15 +44,16 @@ async function CheckSystemAsync() { | |||||||
|  |  | ||||||
|         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") { |     } else if (process.platform == "darwin") { | ||||||
|         system = "MacOS"; |         system = "MacOS"; | ||||||
|     } else if (process.platform === "android") { |     } else if (process.platform === "android") { | ||||||
|         system = "Android"; |         system = "Android"; | ||||||
|  |         if (valid_platform["bedrock"]) valid_platform["bedrock"] = false; | ||||||
|     } else { |     } else { | ||||||
|         throw new Error(`The Bds Maneger Core does not support ${process.platform} systems, as no tests have been done.`); |         throw new Error(`The Bds Maneger Core does not support ${process.platform} systems, as no tests have been done.`); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,7 +1,52 @@ | |||||||
| // External User ip | // External User ip | ||||||
| const Request = require("../lib/Requests"); | const Request = require("../lib/Requests"); | ||||||
| const os = require("os"); | const os = require("os"); | ||||||
| const { GetTempHost } = require("../lib/BdsSettings"); |  | ||||||
|  | function LocalInterfaces() { | ||||||
|  |   const interfaces = os.networkInterfaces(); | ||||||
|  |   const localInterfaces = []; | ||||||
|  |   for (const name of Object.getOwnPropertyNames(interfaces)) { | ||||||
|  |     const Inter = { | ||||||
|  |       interfaceName: name, | ||||||
|  |       mac: "", | ||||||
|  |       v4: { | ||||||
|  |         addresses: "", | ||||||
|  |         netmask: "", | ||||||
|  |         cidr: "" | ||||||
|  |       }, | ||||||
|  |       v6: { | ||||||
|  |         addresses: "", | ||||||
|  |         netmask: "", | ||||||
|  |         cidr: "" | ||||||
|  |       }, | ||||||
|  |     } | ||||||
|  |     for (let iface of interfaces[name]) { | ||||||
|  |       if (!Inter.mac && iface.mac) Inter.mac = iface.mac; | ||||||
|  |       if (iface.family === "IPv4") { | ||||||
|  |         Inter.v4.addresses = iface.address; | ||||||
|  |         Inter.v4.netmask = iface.netmask; | ||||||
|  |         Inter.v4.cidr = iface.cidr; | ||||||
|  |       } else if (iface.family === "IPv6") { | ||||||
|  |         Inter.v6.addresses = iface.address; | ||||||
|  |         Inter.v6.netmask = iface.netmask; | ||||||
|  |         Inter.v6.cidr = iface.cidr; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     if (!(interfaces[name][0].internal)) localInterfaces.push(Inter); | ||||||
|  |   } | ||||||
|  |   return localInterfaces; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | async function GetExternalPublicAddress() { | ||||||
|  |   const ExternlIPs = { | ||||||
|  |     ipv4: null, | ||||||
|  |     ipv6: null | ||||||
|  |   } | ||||||
|  |   ExternlIPs["ipv4"] = (await Request.TEXT("https://api.ipify.org")).replace("\n", "") | ||||||
|  |   ExternlIPs["ipv6"] = (await Request.TEXT("https://api64.ipify.org/")).replace("\n", "") | ||||||
|  |   if (ExternlIPs["ipv6"] === ExternlIPs["ipv4"]) ExternlIPs["ipv6"] = null; | ||||||
|  |   return ExternlIPs; | ||||||
|  | } | ||||||
|  |  | ||||||
| Request.TEXT("https://api.ipify.org").then(external_ipv4 => { | Request.TEXT("https://api.ipify.org").then(external_ipv4 => { | ||||||
|     Request.TEXT("https://api64.ipify.org/").then(external_ipv6 => { |     Request.TEXT("https://api64.ipify.org/").then(external_ipv6 => { | ||||||
| @@ -49,46 +94,40 @@ const Interfaces = Object.getOwnPropertyNames(interfaces).map(inter => { | |||||||
|     } |     } | ||||||
| }).filter(a=>a); | }).filter(a=>a); | ||||||
|  |  | ||||||
| // Temp Host | async function GetHost() { | ||||||
| var host = null, |   const MacAddr = LocalInterfaces().map(Int => Int.mac); | ||||||
|     HostResponse = null; |   const ExternalAddress = (await GetExternalPublicAddress()).ipv4; | ||||||
|  |   const RequestUpstream = await fetch(`https://upstream.bdsmaneger.com/v1/public_domain?MacAddress=${JSON.stringify(MacAddr)}&ExternalAdress=${ExternalAddress}`, {mode: "cors"}); | ||||||
| if (GetTempHost()){ |   if (!RequestUpstream.ok) { | ||||||
|     // Get HOST |     throw { | ||||||
|     Request.JSON("https://bds-core-back-end.vercel.app/Gethost", { |       Backend: await RequestUpstream.json() | ||||||
|         method: "POST", |     } | ||||||
|  |   } | ||||||
|  |   const HostInfo = await RequestUpstream.json(); | ||||||
|  |   const _toReturn = { | ||||||
|  |     host: "", | ||||||
|  |     UpstreamID: "", | ||||||
|  |     delete_host: async () => { | ||||||
|  |       const RequestDeleteHost = await fetch("https://upstream.bdsmaneger.com/v1/public_domain", { | ||||||
|  |         method: "DELETE", | ||||||
|         mode: "cors", |         mode: "cors", | ||||||
|         body: JSON.stringify({ |         body: JSON.stringify({ | ||||||
|             mac: Interfaces[0].MAC, |           UUID: HostInfo.ID | ||||||
|             ip: external_ip.ipv4, |         }) | ||||||
|         }), |       }); | ||||||
|         headers: { |       return await RequestDeleteHost.json(); | ||||||
|             "Content-Type": "application/json" |  | ||||||
|     } |     } | ||||||
|     }).then(HostResponse => { |  | ||||||
|         global.BdsTempHost = HostResponse.user.host.host |  | ||||||
|         host = HostResponse.user.host.host |  | ||||||
|         console.log(`Bds Maneger Core Temp Host ID: ${HostResponse.user.ID}`) |  | ||||||
|         // Delete Host |  | ||||||
|         process.on("exit", function () { |  | ||||||
|             Request.JSON("https://bds-core-back-end.vercel.app/DeleteHost", { |  | ||||||
|                 method: "post", |  | ||||||
|                 body: JSON.stringify({ |  | ||||||
|                     "ID": HostResponse.user.ID |  | ||||||
|                 }), |  | ||||||
|                 headers: { |  | ||||||
|                     "Content-Type": "application/json" |  | ||||||
|   } |   } | ||||||
|             }).then(deleted_host => { |   _toReturn["host"] = HostInfo.host.host | ||||||
|                 if (deleted_host.error) console.log(deleted_host.error) |   _toReturn["UpstreamID"] = HostInfo.ID | ||||||
|             }); |   return _toReturn; | ||||||
|         }); | } | ||||||
|     }); |  | ||||||
| } else module.exports.host = null |  | ||||||
|  |  | ||||||
| module.exports = { | module.exports = { | ||||||
|     internal_ip, |     internal_ip, | ||||||
|     Interfaces, |     Interfaces, | ||||||
|     HostResponse, |     LocalInterfaces, | ||||||
|     host, |     GetExternalPublicAddress, | ||||||
|  |     host: null, | ||||||
|  |     GetHost | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user