Wordpress 等でのPHPのマルウェア・ウィルス・改ざんコードをデコードして難読化をオンラインで解除し、
元の読みやすいコードに戻し解読できます。
<?php /* * @ https://EasyToYou.eu - IonCube v11 Decoder Online * @ PHP 7.2 & 7.3 * @ Decoder version: 1.0.6 * @ Release: 10/08/2022 */ if (!defined("WHMCS")) { exit("This file cannot be accessed directly"); } function pterobill_MetaData() { return ["DisplayName" => "PteroBill", "APIVersion" => "1.1", "RequiresServer" => true, "ListAccountsUniqueIdentifierField" => "username", "ListAccountsUniqueIdentifierDisplayName" => "Service ID"]; } function pterobill_CreateDatabaseTable() { try { WHMCS\Database\Capsule::schema()->create("tblpterobill_iptracker", function ($table) { $table->increments("id"); $table->string("ip_addr"); $table->integer("external_id"); }); } catch (Exception $_obfuscated_0D2A04310F0E140F3B2A090E3839221803192B0F170122_) { logModuleCall("PteroBill", "Create database failed", "", $_obfuscated_0D2A04310F0E140F3B2A090E3839221803192B0F170122_->getMessage()); } } function pterobill_GetHostname($params) { $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = $params["serverhostname"]; foreach (["DOT" => ".", "DASH" => "-"] as $_obfuscated_0D3E5B40241631263C1B250B04312E213F1A5C1C2A3932_ => $_obfuscated_0D382A3C0E122A1C1D0501050D301206242D2118030F11_) { $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = str_replace($_obfuscated_0D3E5B40241631263C1B250B04312E213F1A5C1C2A3932_, $_obfuscated_0D382A3C0E122A1C1D0501050D301206242D2118030F11_, $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_); } if (ip2long($_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_) !== false) { $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = "http://" . $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_; } else { $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = ($params["serversecure"] ? "https://" : "http://") . $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_; } return rtrim($_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_, "/"); } function pterobill_ApiCall($params, $endpoint, $data = [], $method = "GET", $api_type = "admin") { if ($api_type == "admin") { $_obfuscated_0D2513050A2221212C0F13263C30172B2F052727130532_ = $params["serverpassword"]; $_obfuscated_0D3B31061A1415174038370E143524052A361D2F2D1222_ = "application"; } else { if ($api_type == "client") { $_obfuscated_0D2513050A2221212C0F13263C30172B2F052727130532_ = $params["serveraccesshash"]; $_obfuscated_0D3B31061A1415174038370E143524052A361D2F2D1222_ = "client"; } } $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = pterobill_gethostname($params); $url = $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ . "/api/" . $_obfuscated_0D3B31061A1415174038370E143524052A361D2F2D1222_ . "/" . $endpoint; $_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_ = curl_init(); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_URL, $url); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_POSTREDIR, CURL_REDIR_POST_301); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_RETURNTRANSFER, 1); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_TIMEOUT, 5); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_USERAGENT, "PteroBill"); $_obfuscated_0D162F0B373226171A051A122540353D37222735150801_ = ["Authorization: Bearer " . $_obfuscated_0D2513050A2221212C0F13263C30172B2F052727130532_, "Accept: Application/vnd.pterodactyl.v1+json"]; if ($method === "POST" || $method === "PATCH") { $_obfuscated_0D1529393F2731270921035B3605110722115B310F2E32_ = json_encode($data); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_POSTFIELDS, $_obfuscated_0D1529393F2731270921035B3605110722115B310F2E32_); array_push($_obfuscated_0D162F0B373226171A051A122540353D37222735150801_, "Content-Type: application/json"); array_push($_obfuscated_0D162F0B373226171A051A122540353D37222735150801_, "Content-Length: " . strlen($_obfuscated_0D1529393F2731270921035B3605110722115B310F2E32_)); } curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_HTTPHEADER, $_obfuscated_0D162F0B373226171A051A122540353D37222735150801_); $_obfuscated_0D0A140A2F2B0203245C1C06173D273222290926353E11_ = curl_exec($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_); $_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_ = json_decode($_obfuscated_0D0A140A2F2B0203245C1C06173D273222290926353E11_, true); $_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_["status_code"] = curl_getinfo($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLINFO_HTTP_CODE); if ($_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_["status_code"] === 0) { logModuleCall("PteroBill", "Curl Error", curl_errno($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_) . " - " . curl_error($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_), $_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_); } curl_close($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_); logModuleCall("PteroBill", $method . " - " . $url, isset($data) ? json_encode($data) : "", print_r($_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_, true)); return $_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_; } function pterobill_TestConnection($params) { try { $data = pterobill_apicall($params, "locations"); if ($data["status_code"] === 200) { $_obfuscated_0D08221139331C39390D0615300A3C0F2B0F2631285C32_ = true; $_obfuscated_0D043F1A0B31181C0A071E16242A1B100B2E0C30241E22_ = ""; } else { logModuleCall("PteroBill", "pterobill_TestConnection", $params, $data["status_code"], $data["errors"]); $_obfuscated_0D08221139331C39390D0615300A3C0F2B0F2631285C32_ = false; $_obfuscated_0D043F1A0B31181C0A071E16242A1B100B2E0C30241E22_ = $data["errors"]; } } catch (Exception $_obfuscated_0D2A04310F0E140F3B2A090E3839221803192B0F170122_) { logModuleCall("PteroBill", "pterobill_TestConnection", $params, $data["status_code"], $data["errors"]); $_obfuscated_0D08221139331C39390D0615300A3C0F2B0F2631285C32_ = false; $_obfuscated_0D043F1A0B31181C0A071E16242A1B100B2E0C30241E22_ = $data["errors"]; } return ["success" => $_obfuscated_0D08221139331C39390D0615300A3C0F2B0F2631285C32_, "error" => $_obfuscated_0D043F1A0B31181C0A071E16242A1B100B2E0C30241E22_]; } function pterobill_PopulateLocations($params) { $data = pterobill_apicall($params, "locations"); $_obfuscated_0D230D08113331132B363C3D1C13302902371E11180F32_ = []; foreach ($data["data"] as $_obfuscated_0D291F0F2C2A2A1234161A2B0F161F262F16191C382F01_) { $_obfuscated_0D2E360F5B2928131011010B2A2D06312506050E075C11_ = $_obfuscated_0D291F0F2C2A2A1234161A2B0F161F262F16191C382F01_["attributes"]["id"]; $_obfuscated_0D5C25212A3122195C5C113B5C1D5C0D020209243B0311_ = $_obfuscated_0D291F0F2C2A2A1234161A2B0F161F262F16191C382F01_["attributes"]["long"]; $_obfuscated_0D230D08113331132B363C3D1C13302902371E11180F32_[$_obfuscated_0D2E360F5B2928131011010B2A2D06312506050E075C11_] = $_obfuscated_0D5C25212A3122195C5C113B5C1D5C0D020209243B0311_; } return $_obfuscated_0D230D08113331132B363C3D1C13302902371E11180F32_; } function pterobill_PopulateNests($params) { $data = pterobill_apicall($params, "nests"); $_obfuscated_0D11233B3C3C1C35210537313B2109162C1B0822050B11_ = []; foreach ($data["data"] as $_obfuscated_0D2C061219372D010C1B06281A1B272E1E240404360932_) { $_obfuscated_0D11113F34061D3926145C3C133F2714130B2724193801_ = $_obfuscated_0D2C061219372D010C1B06281A1B272E1E240404360932_["attributes"]["id"]; $_obfuscated_0D3B293B223C39140F391F1D5B4022405B342D05300411_ = $_obfuscated_0D2C061219372D010C1B06281A1B272E1E240404360932_["attributes"]["name"]; $_obfuscated_0D11233B3C3C1C35210537313B2109162C1B0822050B11_[$_obfuscated_0D11113F34061D3926145C3C133F2714130B2724193801_] = $_obfuscated_0D3B293B223C39140F391F1D5B4022405B342D05300411_; } return $_obfuscated_0D11233B3C3C1C35210537313B2109162C1B0822050B11_; } function pterobill_ConfigOptions() { return ["server_name" => ["FriendlyName" => "Server Name", "Type" => "text", "Size" => "20", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Server display name in panel, not required to be unique\">Help</a>", "SimpleMode" => true], "location_id" => ["FriendlyName" => "Location", "Type" => "text", "Size" => "20", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Location to deploy configured in Pterodactyl\">Help</a>", "Loader" => "pterobill_PopulateLocations", "SimpleMode" => true], "cpu" => ["FriendlyName" => "CPU Limit", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Percentage of CPU usable. 100% is 1 core, 250% is 2.5 cores, 0 for unlimited.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "memory" => ["FriendlyName" => "Memory (MB)", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Memory available to server in MB. 0 for unlimited.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "disk" => ["FriendlyName" => "Disk (MB)", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Disk space available to server in MB. 0 for unlimited.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "swap" => ["FriendlyName" => "Swap (MB)", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Swap space available to server in MB. -1 for unlimited, 0 to disable swap.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "io" => ["FriendlyName" => "IO Weight", "Type" => "text", "Size" => "10", "Description" => "<a class=\"text-primary\" target=\"_blank\" href=\"https://docs.docker.com/engine/reference/run/#block-io-bandwidth-blkio-constraint\" data-toggle=\"tooltip\" title=\"Between 10 and 1000. Higher values are increased priority. Click for more info.\">Help</a>", "SimpleMode" => true, "Default" => "500"], "port_array" => ["FriendlyName" => "Port Array", "Type" => "text", "Size" => "20", "Description" => "<a class=\"text-primary\" href=\"https://pterobill.com/setup-guide.html#portarray\" target=\"_blank\" data-toggle=\"tooltip\" title='Array of ports and environment variables they should map to. Must be valid JSON, e.g. {\"SERVER_PORT\": 27015, \"RCON_PORT\": 27017} - SERVER_PORT is required. When specified ports are unavailable auto-allocator will find the best match. Click for more info.'>Help</a>", "SimpleMode" => true], "create_allocations" => ["FriendlyName" => "Create Allocations", "Type" => "yesno", "Description" => "<a class=\"text-primary\" target=\"_blank\" href=\"https://pterobill.com/setup-guide.html#createallocs\" data-toggle=\"tooltip\" title=\"Create allocations on demand. This feature is not yet implemented.\">Help</a>", "SimpleMode" => true], "dedicated_ip" => ["FriendlyName" => "Dedicated IP", "Type" => "yesno", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Assign a dedicated IP for this server.\">Help</a>", "SimpleMode" => true], "nest_id" => ["FriendlyName" => "Nest", "Type" => "text", "Size" => "20", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Pterodactyl Nest including the desired Egg.\">Help</a>", "Loader" => "pterobill_PopulateNests", "SimpleMode" => true], "egg_id" => ["FriendlyName" => "Egg ID", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Pterodactyl Egg ID to install.\">Help</a>", "SimpleMode" => true], "pack_id" => ["FriendlyName" => "Pack", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Pterodactyl Egg Pack ID to install.\">Help</a>", "SimpleMode" => true], "databases" => ["FriendlyName" => "Database Limit", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Number of databases user can create. Leave blank for unlimited.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "autoallocate_increment" => ["FriendlyName" => "AutoAllocator Increment", "Type" => "text", "Size" => "10", "Description" => "<a class=\"text-primary\" href=\"https://pterobill.com/setup-guide.html#allocincrement\" target=\"_blank\" data-toggle=\"tooltip\" title=\"Number of ports the AutoAllocator will increment by. Defaults to 1. Click for more info\">Help</a>", "SimpleMode" => true, "Default" => "1"], "backups" => ["FriendlyName" => "Backup Limit", "Type" => "text", "Size" => "10", "Description" => "<a class=\"text-primary\" data-toggle=\"tooltip\" title=\"Number of backups allowed. 0 for none.\">Help</a>", "SimpleMode" => true, "Default" => "1"]]; } function pterobill_GetOption($params, $id, $default = NULL) { $_obfuscated_0D3E12335C0F40060E370329321E042D153034140E1311_ = pterobill_configoptions(); $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_ = $_obfuscated_0D3E12335C0F40060E370329321E042D153034140E1311_[$id]["FriendlyName"]; if (isset($params["configoptions"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_]) && $params["configoptions"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_] !== "") { return $params["configoptions"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_]; } if (isset($params["configoptions"][$id]) && $params["configoptions"][$id] !== "") { return $params["configoptions"][$id]; } if (isset($params["customfields"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_]) && $params["customfields"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_] !== "") { return $params["customfields"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_]; } if (isset($params["customfields"][$id]) && $params["customfields"][$id] !== "") { return $params["customfields"][$id]; } $_obfuscated_0D3B3B3B3D0F042A1D162C1B050B2405390B0C26303301_ = false; $i = 0; foreach (pterobill_configoptions() as $key => $value) { $i++; if ($key === $id) { $_obfuscated_0D3B3B3B3D0F042A1D162C1B050B2405390B0C26303301_ = true; if ($_obfuscated_0D3B3B3B3D0F042A1D162C1B050B2405390B0C26303301_ && isset($params["configoption" . $i]) && $params["configoption" . $i] !== "") { return $params["configoption" . $i]; } return $default; } } } function pterobill_CalculateNodeUtilization($nodesResult) { $_obfuscated_0D2F2434170F0617293213093F30110717141621341C22_ = $nodesResult["attributes"]["relationships"]["nodes"]["data"]; $_obfuscated_0D2C30220D143F2C10032D38020C0C063D3F1B010D2D22_ = $nodesResult["attributes"]["relationships"]["servers"]["data"]; $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_ = []; foreach ($_obfuscated_0D2F2434170F0617293213093F30110717141621341C22_ as $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_) { $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_ = $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["attributes"]; if ($_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["public"] && !$_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["maintenance_mode"]) { $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["memory_used"] = 0; $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["disk_used"] = 0; $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_[$_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["id"]] = $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_; } } foreach ($_obfuscated_0D2C30220D143F2C10032D38020C0C063D3F1B010D2D22_ as $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_) { $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_ = $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["attributes"]; if (array_key_exists($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["node"], $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_)) { $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_[$_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["node"]]["memory_used"] += $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["limits"]["memory"]; $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_[$_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["node"]]["disk_used"] += $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["limits"]["disk"]; } } return $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_; } function pterobill_FilterAvailableNodes($params, $nodes) { $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_ = []; $_obfuscated_0D0923272D11083B273B061D260B1D1A051C0928330811_ = pterobill_getoption($params, "memory"); $_obfuscated_0D261E3712023223353431193E2B27160C110728231711_ = pterobill_getoption($params, "disk"); foreach ($nodes as $_obfuscated_0D3F3E31390829363B112E19163D141D16312F0E313301_ => $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_) { if ($_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["memory_used"] + $_obfuscated_0D0923272D11083B273B061D260B1D1A051C0928330811_ <= $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["memory"] * (1 + $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["memory_overallocate"] / 100) || $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["disk_used"] + $_obfuscated_0D261E3712023223353431193E2B27160C110728231711_ <= $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["disk"] * (1 + $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["disk_overallocate"] / 100)) { $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_[] = $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_; } } return $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_; } function pterobill_GetNodesForLocation($params) { $_obfuscated_0D2E360F5B2928131011010B2A2D06312506050E075C11_ = pterobill_getoption($params, "location_id"); $_obfuscated_0D010728301A0918212F1E1735180F1C233B0909052D11_ = pterobill_apicall($params, "locations/" . $_obfuscated_0D2E360F5B2928131011010B2A2D06312506050E075C11_ . "?include=nodes,servers"); $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_ = pterobill_calculatenodeutilization($_obfuscated_0D010728301A0918212F1E1735180F1C233B0909052D11_); $_obfuscated_0D101A223B06101A130822090E2E2E335C2B020C030511_ = pterobill_filteravailablenodes($params, $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_); logModuleCall("PteroBill", "Node Utilization", "Found " . count($_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_) . " valid nodes with " . count($_obfuscated_0D101A223B06101A130822090E2E2E335C2B020C030511_) . " available nodes", $_obfuscated_0D101A223B06101A130822090E2E2E335C2B020C030511_); return $_obfuscated_0D101A223B06101A130822090E2E2E335C2B020C030511_; } function pterobill_GetAllocationsForNode($params, $node_id) { $_obfuscated_0D032C152F06232824212B3E25113D0E0C0E2127061F22_ = []; $_obfuscated_0D5C132934031C0401222C3F273D2E221F3E2708090132_ = pterobill_apicall($params, "nodes/" . $node_id . "/allocations"); $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_ = (int) $_obfuscated_0D5C132934031C0401222C3F273D2E221F3E2708090132_["meta"]["pagination"]["total_pages"] + 1; for ($i = 2; $i <= $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_; $i++) { foreach ($_obfuscated_0D5C132934031C0401222C3F273D2E221F3E2708090132_["data"] as $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_) { $_obfuscated_0D032C152F06232824212B3E25113D0E0C0E2127061F22_[] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["attributes"]; } if ($i != $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_) { $_obfuscated_0D5C132934031C0401222C3F273D2E221F3E2708090132_ = pterobill_apicall($params, "nodes/" . $node_id . "/allocations?page=" . $i); } } return $_obfuscated_0D032C152F06232824212B3E25113D0E0C0E2127061F22_; } function pterobill_FilterAvailableAllocations($allocations) { $_obfuscated_0D191527310D4007115B093E29032122153706092A1101_ = []; foreach ($allocations as $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_) { if (!$_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["assigned"]) { $_obfuscated_0D191527310D4007115B093E29032122153706092A1101_[] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_; } } return $_obfuscated_0D191527310D4007115B093E29032122153706092A1101_; } function pterobill_MapAllocsIpsAndPorts($allocations) { $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_ = []; $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_ = []; foreach ($allocations as $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_) { $_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_ = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["ip"]; if (!array_key_exists($_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_, $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_)) { $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_] = ["ports" => [], "available" => 0]; } $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_]["ports"][] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["port"]; if ($_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["assigned"] === false) { $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_]["available"] += 1; $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_]["ports_available"][] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["port"]; } $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_][$_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["port"]] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_; } return [$_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_, $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_]; } function pterobill_FilterIpAddresses($ports_per_ip, $dedicated, $ports) { if (!WHMCS\Database\Capsule::schema()->hasTable("tblpterobill_iptracker")) { pterobill_createdatabasetable(); } $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_ = []; $_obfuscated_0D3B3B40271D28035B2C32210B1F101A302C3E34193E32_ = 0; foreach ($ports_per_ip as $key => $val) { $_obfuscated_0D142528213C1A5B08092D3F063C0A0605381011063D11_ = WHMCS\Database\Capsule::table("tblpterobill_iptracker")->where("ip_addr", $key)->get(); if (is_array($_obfuscated_0D142528213C1A5B08092D3F063C0A0605381011063D11_)) { $_obfuscated_0D02153C35170211360D231A5B240F2B230C08373C0D32_ = !$_obfuscated_0D142528213C1A5B08092D3F063C0A0605381011063D11_; } else { $_obfuscated_0D02153C35170211360D231A5B240F2B230C08373C0D32_ = $_obfuscated_0D142528213C1A5B08092D3F063C0A0605381011063D11_->isEmpty(); } if ($_obfuscated_0D02153C35170211360D231A5B240F2B230C08373C0D32_) { if ($val["available"] === count($val["ports"])) { if ($dedicated === true) { $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_[] = $key; } else { $_obfuscated_0D0C13351B29373B2F35293B252C332724151F371C1D32_ = $key; } } else { if ($val["available"] >= count($ports)) { if ($dedicated === false) { $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_[] = $key; } } } } else { $_obfuscated_0D3B3B40271D28035B2C32210B1F101A302C3E34193E32_ += 1; } } if (empty($_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_) && $dedicated === false && 0 < count($ports_per_ip)) { logModuleCall("PteroBill", "AutoAllocator", "", "No candidate for shared IP address found, using an empty IP."); $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_[] = $_obfuscated_0D0C13351B29373B2F35293B252C332724151F371C1D32_; } logModuleCall("PteroBill", "AutoAllocator", "Considered " . count($ports_per_ip) . " IPs and found " . count($_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_) . " matches skipping " . $_obfuscated_0D3B3B40271D28035B2C32210B1F101A302C3E34193E32_ . " dedicated IPs", $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_); return $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_; } function pterobill_GetPortArray($params) { $_obfuscated_0D0A21371E34380B2E3D22032C283D332C31141C2E2222_ = pterobill_getoption($params, "port_array"); $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_ = json_decode($_obfuscated_0D0A21371E34380B2E3D22032C283D332C31141C2E2222_, true); if (!array_key_exists("SERVER_PORT", $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_)) { throw new Exception("Port array is not valid JSON or does not include a SERVER_PORT entry."); } if (is_array($_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_["NONE"])) { $_obfuscated_0D26060B0D183E3E351D1C333D062D0C2C3B1009100722_ = $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_["NONE"]; unset($_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_["NONE"]); foreach ($_obfuscated_0D26060B0D183E3E351D1C333D062D0C2C3B1009100722_ as $key => $value) { $_obfuscated_0D0D242D1A1C142D401939380D2114211D3B2804052701_ = "NONE" . $key; $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_[$_obfuscated_0D0D242D1A1C142D401939380D2114211D3B2804052701_] = $value; } } return $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_; } function pterobill_AutoAllocatePick($params, $dedicated_ip) { $_obfuscated_0D152A1E0D300F063D161B2415012D031B2E1D38062601_ = pterobill_getoption($params, "autoallocate_increment") ?: 1; $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_ = pterobill_getnodesforlocation($params); logModuleCall("PteroBill", "AutoAllocator", "AutoAllocator starting. Looking on " . count($_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_) . " nodes.", ""); foreach ($_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_ as $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_) { $ports = pterobill_getportarray($params); $node_id = $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["id"]; $_obfuscated_0D0E0A1D3E192109090E40173E0B1B0E09272F2D032C22_ = pterobill_getallocationsfornode($params, $node_id); $_obfuscated_0D2F1D093C1C1015370A5C0835083B032D303E04250222_ = pterobill_filteravailableallocations($_obfuscated_0D0E0A1D3E192109090E40173E0B1B0E09272F2D032C22_); list($ports_per_ip, $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_) = pterobill_mapallocsipsandports($_obfuscated_0D0E0A1D3E192109090E40173E0B1B0E09272F2D032C22_); $_obfuscated_0D222C34372E2A282F3C280F3E0534150F322A23213F01_ = pterobill_filteripaddresses($ports_per_ip, $dedicated_ip, $ports); if (empty($_obfuscated_0D222C34372E2A282F3C280F3E0534150F322A23213F01_)) { return "Failed to find an available IP address."; } logModuleCall("PteroBill", "AutoAllocator", "", "AutoAllocator found " . count($_obfuscated_0D2F1D093C1C1015370A5C0835083B032D303E04250222_) . " available allocations out of " . count($_obfuscated_0D0E0A1D3E192109090E40173E0B1B0E09272F2D032C22_) . " total allocations for node_id " . $node_id . " with " . count($ports_per_ip) . " unique IPs. Using increment of " . $_obfuscated_0D152A1E0D300F063D161B2415012D031B2E1D38062601_ . "."); foreach ($_obfuscated_0D222C34372E2A282F3C280F3E0534150F322A23213F01_ as $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_) { $ports = pterobill_getportarray($params); $_obfuscated_0D2206272C0C5B3E0F2D12303937013C283605152C2D11_ = 1000; logModuleCall("PteroBill", "AutoAllocator", "", "AutoAllocator selected IP " . $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_ . " with " . count($ports_per_ip[$_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_]["ports_available"]) . " available allocations. Trying " . $_obfuscated_0D2206272C0C5B3E0F2D12303937013C283605152C2D11_ . " times."); for ($i = 0; $i < $_obfuscated_0D2206272C0C5B3E0F2D12303937013C283605152C2D11_; $i++) { $_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_ = []; $_obfuscated_0D0A1F3224350C352A0D0B3E1A5B3916300E22061C0222_ = array_intersect($ports, $ports_per_ip[$_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_]["ports_available"]); if ($_obfuscated_0D0A1F3224350C352A0D0B3E1A5B3916300E22061C0222_ === $ports) { foreach ($ports as $key => $port) { $_obfuscated_0D3C12373E32123C032625392132045B0F04165B3E2932_ = $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_[$_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_][$port]; if (!is_null($_obfuscated_0D3C12373E32123C032625392132045B0F04165B3E2932_)) { $_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_[$key] = $_obfuscated_0D3C12373E32123C032625392132045B0F04165B3E2932_; } } if (count($_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_) !== count($ports)) { } } else { $ports = array_map(function ($val) { static $autoallocate_increment = NULL; return (int) $val + (int) $autoallocate_increment; }, $ports); } } if (!empty($_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_)) { return $_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_; } } } return "AutoAllocator failed to find suitable allocations"; } function pterobill_GenerateUsername($length = 8) { $_obfuscated_0D07033D0B4001162C282213373C313C07353B1E290C11_ = array_merge(range(0, 9), range("a", "z"), range("A", "Z")); $username = ""; for ($i = 0; $i < $length; $i++) { $username .= $_obfuscated_0D07033D0B4001162C282213373C313C07353B1E290C11_[mt_rand(0, count($_obfuscated_0D07033D0B4001162C282213373C313C07353B1E290C11_) - 1)]; } return $username; } function pterobill_CreateAccount($params) { try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_GetServerID($params); if (isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { throw new Exception("Server with this ID already exists, aborting account creation."); } $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = pterobill_apicall($params, "users/external/" . $params["clientsdetails"]["id"]); if ($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["status_code"] === 404) { $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = pterobill_apicall($params, "users?filter[email]=" . urlencode($params["clientsdetails"]["email"])); if ($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["meta"]["pagination"]["total"] === 0) { $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = pterobill_apicall($params, "users", ["username" => pterobill_getoption($params, "username", pterobill_generateusername()), "email" => $params["clientsdetails"]["email"], "first_name" => $params["clientsdetails"]["firstname"], "last_name" => $params["clientsdetails"]["lastname"], "external_id" => $params["clientsdetails"]["id"]], "POST"); } else { foreach ($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["data"] as $key => $value) { if ($value["attributes"]["email"] === $params["clientsdetails"]["email"]) { $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = array_merge($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_, $value); $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = array_merge($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_, $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["data"][0]); } } } } if ($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["status_code"] === 200 || $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["status_code"] === 201) { $_obfuscated_0D1D242B2A5C240202083314182C033E0E0C1E2A241E32_ = $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["attributes"]["id"]; $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_ = pterobill_getoption($params, "nest_id"); $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_ = pterobill_getoption($params, "egg_id"); $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_ = pterobill_apicall($params, "nests/" . $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_ . "/eggs/" . $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_ . "?include=variables"); if ($_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["status_code"] !== 200) { throw new Exception("Fetching egg data failed with error: " . $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["status_code"] . ". For additional information enable module debug mode."); } $dedicated_ip = pterobill_getoption($params, "dedicated_ip") ? true : false; $_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_ = pterobill_autoallocatepick($params, $dedicated_ip); if (!is_array($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_)) { throw new Exception($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_); } $_obfuscated_0D1C2C0A3B3E2D15013814311B0F3805060A1A1E3B1322_ = $_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_["SERVER_PORT"]["id"]; $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_ = $_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_["SERVER_PORT"]["ip"]; unset($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_["SERVER_PORT"]); $_obfuscated_0D250B292240340C3B39352C1D19310B39232D262B2C11_ = array_column($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_, "id"); if (($_obfuscated_0D173B151F042D2B06390D282F30180B3C2635053B0132_ = array_search($_obfuscated_0D1C2C0A3B3E2D15013814311B0F3805060A1A1E3B1322_, $_obfuscated_0D250B292240340C3B39352C1D19310B39232D262B2C11_)) !== false) { unset($_obfuscated_0D250B292240340C3B39352C1D19310B39232D262B2C11_[$_obfuscated_0D173B151F042D2B06390D282F30180B3C2635053B0132_]); } $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_ = []; foreach ($_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["attributes"]["relationships"]["variables"]["data"] as $key => $val) { $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_ = $val["attributes"]; $_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_ = $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["env_variable"]; $default = $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["default_value"]; $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_ = pterobill_getoption($params, $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["name"]); $_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_ = pterobill_getoption($params, $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["env_variable"]); if (isset($_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_)) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = (string) $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_; } else { if (isset($_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_)) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = (string) $_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_; } else { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $default; } } } foreach ($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_ as $key => $val) { if (substr($key, 0, 4) !== "NONE") { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$key] = (string) $val["port"]; } } $_obfuscated_0D29260310392B320E2C041C0B3E401E1F350F123E2522_ = pterobill_getoption($params, "server_name", pterobill_generateusername() . "_" . $params["serviceid"]); $_obfuscated_0D0D1D360A04402B40242D1B0F1A3B120B11405B2A1C11_ = pterobill_getoption($params, "memory"); $_obfuscated_0D082F1D06303F3C14022A0539210D282E320B23053832_ = pterobill_getoption($params, "swap"); $_obfuscated_0D0B1C2B0F10340E0F0609182E2F1C1E041E371A102122_ = pterobill_getoption($params, "io"); $_obfuscated_0D105B1E072A0A251A08070C5C0C21112F0126382B1611_ = pterobill_getoption($params, "cpu"); $_obfuscated_0D24191130043004351B3C2D051231180D171E2B130911_ = pterobill_getoption($params, "disk"); $_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_ = pterobill_getoption($params, "pack_id"); $_obfuscated_0D023C2B5B5B351A07190A1F15230F3F3B09400A160D11_ = pterobill_getoption($params, "image", $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["attributes"]["docker_image"]); $_obfuscated_0D311127100338053137293B1A0313365B2A0601141A32_ = pterobill_getoption($params, "startup", $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["attributes"]["startup"]); $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_ = pterobill_getoption($params, "databases"); $allocations = pterobill_getoption($params, "allocations"); $_obfuscated_0D020C37040F3421014012022F22031F0A0B1912214001_ = pterobill_getoption($params, "backups"); $_obfuscated_0D270F1D0A0D243E2C121B0610260815251E383B371501_ = pterobill_getoption($params, "oom_disabled") ? true : false; $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = ["name" => $_obfuscated_0D29260310392B320E2C041C0B3E401E1F350F123E2522_, "user" => (int) $_obfuscated_0D1D242B2A5C240202083314182C033E0E0C1E2A241E32_, "nest" => (int) $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_, "egg" => (int) $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_, "docker_image" => $_obfuscated_0D023C2B5B5B351A07190A1F15230F3F3B09400A160D11_, "startup" => $_obfuscated_0D311127100338053137293B1A0313365B2A0601141A32_, "oom_disabled" => $_obfuscated_0D270F1D0A0D243E2C121B0610260815251E383B371501_, "limits" => ["memory" => (int) $_obfuscated_0D0D1D360A04402B40242D1B0F1A3B120B11405B2A1C11_, "swap" => (int) $_obfuscated_0D082F1D06303F3C14022A0539210D282E320B23053832_, "io" => (int) $_obfuscated_0D0B1C2B0F10340E0F0609182E2F1C1E041E371A102122_, "cpu" => (int) $_obfuscated_0D105B1E072A0A251A08070C5C0C21112F0126382B1611_, "disk" => (int) $_obfuscated_0D24191130043004351B3C2D051231180D171E2B130911_], "feature_limits" => ["databases" => $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_ ? (int) $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_ : NULL, "allocations" => (int) $allocations, "backups" => (int) $_obfuscated_0D020C37040F3421014012022F22031F0A0B1912214001_], "environment" => $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_, "start_on_completion" => true, "external_id" => (string) $params["serviceid"], "allocation" => ["default" => (int) $_obfuscated_0D1C2C0A3B3E2D15013814311B0F3805060A1A1E3B1322_, "additional" => $_obfuscated_0D250B292240340C3B39352C1D19310B39232D262B2C11_]]; if (isset($_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_)) { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["pack"] = (int) $_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_; } $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_ = pterobill_apicall($params, "servers", $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_, "POST"); if ($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["status_code"] === 400) { throw new Exception("No available node matching the request."); } if ($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["status_code"] !== 201) { throw new Exception("Creating server failed with error: " . $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["status_code"] . ". For additional information enable module debug mode."); } } else { throw new Exception("User creation failed with error: " . $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server creation failed", $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_, $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } try { if ($dedicated_ip) { WHMCS\Database\Capsule::table("tblpterobill_iptracker")->insert(["ip_addr" => $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_, "external_id" => $params["serviceid"]]); $params["model"]->serviceProperties->save(["dedicatedip" => $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_]); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return "Error recording the Dedicated IP: " . $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_GetServerID($params, $raw = false) { $_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_ = pterobill_apicall($params, "servers/external/" . $params["serviceid"], [], "GET"); if ($_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_["status_code"] === 200) { if ($raw) { return $_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_; } return $_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_["attributes"]["id"]; } if ($_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_["status_code"] === 500) { throw new Exception("Error getting the server ID from Pterodactyl. For additional information check the panel logs."); } } function pterobill_SuspendAccount($params) { try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_getserverid($params); if (!isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { throw new Exception("Suspending server failed because it does not exist."); } $_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "/suspend", [], "POST"); if ($_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_["status_code"] !== 204) { throw new Exception("Suspending server failed with error: " . $_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_UnsuspendAccount($params) { try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_getserverid($params); if (!isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { throw new Exception("Un-suspending server failed because it does not exist."); } $_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "/unsuspend", [], "POST"); if ($_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_["status_code"] !== 204) { throw new Exception("Un-suspending server failed with error: " . $_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_TerminateAccount($params) { $_obfuscated_0D3E0B3E2F34021F111D2213131F30303E151936401D32_ = $params["serviceid"]; try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_getserverid($params); if (!isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { throw new Exception("Failed to terminate server because it doesn't exist."); } $_obfuscated_0D1B163421351C0F402440362C2E13020D180D283F1622_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_, [], "DELETE"); if ($_obfuscated_0D1B163421351C0F402440362C2E13020D180D283F1622_["status_code"] !== 204) { throw new Exception("Terminating server failed with error: " . $_obfuscated_0D1B163421351C0F402440362C2E13020D180D283F1622_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } try { WHMCS\Database\Capsule::table("tblpterobill_iptracker")->where("external_id", $_obfuscated_0D3E0B3E2F34021F111D2213131F30303E151936401D32_)->delete(); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return "Error freeing dedicated IP: " . $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_ChangePackage($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { throw new Exception("Changing package failed because the specified server does not exist."); } $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"]; $_obfuscated_0D0D1D360A04402B40242D1B0F1A3B120B11405B2A1C11_ = pterobill_getoption($params, "memory"); $_obfuscated_0D082F1D06303F3C14022A0539210D282E320B23053832_ = pterobill_getoption($params, "swap"); $_obfuscated_0D0B1C2B0F10340E0F0609182E2F1C1E041E371A102122_ = pterobill_getoption($params, "io"); $_obfuscated_0D105B1E072A0A251A08070C5C0C21112F0126382B1611_ = pterobill_getoption($params, "cpu"); $_obfuscated_0D24191130043004351B3C2D051231180D171E2B130911_ = pterobill_getoption($params, "disk"); $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_ = pterobill_getoption($params, "databases"); $allocations = pterobill_getoption($params, "options"); $_obfuscated_0D270F1D0A0D243E2C121B0610260815251E383B371501_ = pterobill_getoption($params, "oom_disabled") ? true : false; $_obfuscated_0D390901032D272E04090C302F14291E2407252A211932_ = ["allocation" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["allocation"], "memory" => (int) $_obfuscated_0D0D1D360A04402B40242D1B0F1A3B120B11405B2A1C11_, "swap" => (int) $_obfuscated_0D082F1D06303F3C14022A0539210D282E320B23053832_, "io" => (int) $_obfuscated_0D0B1C2B0F10340E0F0609182E2F1C1E041E371A102122_, "cpu" => (int) $_obfuscated_0D105B1E072A0A251A08070C5C0C21112F0126382B1611_, "disk" => (int) $_obfuscated_0D24191130043004351B3C2D051231180D171E2B130911_, "oom_disabled" => $_obfuscated_0D270F1D0A0D243E2C121B0610260815251E383B371501_, "feature_limits" => ["databases" => (int) $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_, "allocations" => (int) $allocations, "backups" => (int) $_obfuscated_0D020C37040F3421014012022F22031F0A0B1912214001_]]; $_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "/build", $_obfuscated_0D390901032D272E04090C302F14291E2407252A211932_, "PATCH"); if ($_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_["status_code"] !== 200) { throw new Exception("Updating the server build data failed with error: " . $_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_["status_code"] . ". For additional information enable module debug mode."); } $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_ = pterobill_getoption($params, "nest_id"); $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_ = pterobill_getoption($params, "egg_id"); $_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_ = pterobill_getoption($params, "pack_id"); $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_ = pterobill_apicall($params, "nests/" . $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_ . "/eggs/" . $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_ . "?include=variables"); if ($_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["status_code"] !== 200) { throw new Exception("Fetching eggs from panel failed with error: " . $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["status_code"] . ". For additional information enable module debug mode."); } $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_ = []; foreach ($_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["attributes"]["relationships"]["variables"]["data"] as $key => $val) { $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_ = $val["attributes"]; $_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_ = $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["env_variable"]; $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_ = pterobill_getoption($params, $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["name"]); $_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_ = pterobill_getoption($params, $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["env_variable"]); if (isset($_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_)) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_; } else { if (isset($_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_)) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_; } else { if (isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["environment"][$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_])) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["environment"][$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_]; } else { if (isset($_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["default_value"])) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["default_value"]; } } } } } $_obfuscated_0D023C2B5B5B351A07190A1F15230F3F3B09400A160D11_ = pterobill_getoption($params, "image", $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["image"]); $_obfuscated_0D311127100338053137293B1A0313365B2A0601141A32_ = pterobill_getoption($params, "startup", $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["startup_command"]); $_obfuscated_0D390901032D272E04090C302F14291E2407252A211932_ = ["environment" => $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_, "startup" => $_obfuscated_0D311127100338053137293B1A0313365B2A0601141A32_, "egg" => (int) $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_, "pack" => (int) $_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_, "image" => $_obfuscated_0D023C2B5B5B351A07190A1F15230F3F3B09400A160D11_, "skip_scripts" => false]; $_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "/startup", $_obfuscated_0D390901032D272E04090C302F14291E2407252A211932_, "PATCH"); if ($_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_["status_code"] !== 200) { throw new Exception("Updating the server startup config failed with error: " . $_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_ReinstallServer($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $endpoint = "servers/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"] . "/reinstall"; pterobill_apicall($params, $endpoint, [], "POST"); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server Reinstall Failed", "", $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return "Error reinstalling server"; } return "success"; } function pterobill_RebootServer($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $endpoint = "servers/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["identifier"] . "/power"; pterobill_apicall($params, $endpoint, ["signal" => "restart"], "POST", "client"); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server Reboot Failed", "", $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return "Error rebooting server"; } return "success"; } function pterobill_StartServer($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $endpoint = "servers/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["identifier"] . "/power"; pterobill_apicall($params, $endpoint, ["signal" => "start"], "POST", "client"); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server Start Failed", "", $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return "Error starting server"; } return "success"; } function pterobill_StopServer($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $endpoint = "servers/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["identifier"] . "/power"; pterobill_apicall($params, $endpoint, ["signal" => "stop"], "POST", "client"); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server Stop Failed", "", $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return "Error stopping server"; } return "success"; } function pterobill_ClientAreaAllowedFunctions() { $_obfuscated_0D0C0A0110013B1A271B1724274028163D1F0B150D3401_ = ["Reinstall Server" => "ReinstallServer", "Reboot Server" => "RebootServer", "Start Server" => "StartServer", "Stop Server" => "StopServer"]; return $_obfuscated_0D0C0A0110013B1A271B1724274028163D1F0B150D3401_; } function pterobill_LoginLink($params) { if ($params["moduletype"] !== "pterobill") { return NULL; } try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_getserverid($params); if (!isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { return NULL; } $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = pterobill_gethostname($params); echo "<a class=\"text-primary\" href=\"" . $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ . "/admin/servers/view/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "\" target=\"_blank\">Go to Server</a>"; } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { } } function pterobill_ClientArea($params) { if ($params["moduletype"] !== "pterobill") { return NULL; } try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = pterobill_gethostname($params); return ["templatefile" => "clientarea", "vars" => ["serviceurl" => $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ . "/server/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["identifier"], "starturl" => "clientarea.php?action=productdetails&id=" . $params["serviceid"] . "&modop=custom&a=StartServer", "stopurl" => "clientarea.php?action=productdetails&id=" . $params["serviceid"] . "&modop=custom&a=StopServer", "rebooturl" => "clientarea.php?action=productdetails&id=" . $params["serviceid"] . "&modop=custom&a=RebootServer", "reinstallurl" => "clientarea.php?action=productdetails&id=" . $params["serviceid"] . "&modop=custom&a=ReinstallServer", "memory" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["limits"]["memory"] . " MB", "disk" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["limits"]["disk"] / 1000 . " GB", "cpu" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["limits"]["cpu"] . "%", "location" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["environment"]["P_SERVER_LOCATION"]]]; } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { } } function pterobill_ListAccounts($params) { $_obfuscated_0D2A2B0F073726220609081403082D071509103D322601_ = []; $_obfuscated_0D232817242640060D0B3C1625222C3F22182923373511_ = []; try { $data = pterobill_apicall($params, "servers"); $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_ = (int) $data["meta"]["pagination"]["total_pages"] + 1; for ($i = 2; $i <= $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_; $i++) { foreach ($data["data"] as $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_) { $_obfuscated_0D232817242640060D0B3C1625222C3F22182923373511_[] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["attributes"]; } if ($i != $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_) { $data = pterobill_apicall($params, "servers?page=" . $i); } } foreach ($_obfuscated_0D232817242640060D0B3C1625222C3F22182923373511_ as $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_) { if (isset($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["external_id"])) { $_obfuscated_0D342209180927381A0C1D331F280B5B1E5B16222D2711_ = $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_
<?php /* * @ https://EasyToYou.eu - IonCube v11 Decoder Online * @ PHP 7.2 & 7.3 * @ Decoder version: 1.0.6 * @ Release: 10/08/2022 */ if (!defined("WHMCS")) { exit("This file cannot be accessed directly"); } function pterobill_MetaData() { return ["DisplayName" => "PteroBill", "APIVersion" => "1.1", "RequiresServer" => true, "ListAccountsUniqueIdentifierField" => "username", "ListAccountsUniqueIdentifierDisplayName" => "Service ID"]; } function pterobill_CreateDatabaseTable() { try { WHMCS\Database\Capsule::schema()->create("tblpterobill_iptracker", function ($table) { $table->increments("id"); $table->string("ip_addr"); $table->integer("external_id"); }); } catch (Exception $_obfuscated_0D2A04310F0E140F3B2A090E3839221803192B0F170122_) { logModuleCall("PteroBill", "Create database failed", "", $_obfuscated_0D2A04310F0E140F3B2A090E3839221803192B0F170122_->getMessage()); } } function pterobill_GetHostname($params) { $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = $params["serverhostname"]; foreach (["DOT" => ".", "DASH" => "-"] as $_obfuscated_0D3E5B40241631263C1B250B04312E213F1A5C1C2A3932_ => $_obfuscated_0D382A3C0E122A1C1D0501050D301206242D2118030F11_) { $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = str_replace($_obfuscated_0D3E5B40241631263C1B250B04312E213F1A5C1C2A3932_, $_obfuscated_0D382A3C0E122A1C1D0501050D301206242D2118030F11_, $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_); } if (ip2long($_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_) !== false) { $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = "http://" . $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_; } else { $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = ($params["serversecure"] ? "https://" : "http://") . $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_; } return rtrim($_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_, "/"); } function pterobill_ApiCall($params, $endpoint, $data = array(), $method = "GET", $api_type = "admin") { if ($api_type == "admin") { $_obfuscated_0D2513050A2221212C0F13263C30172B2F052727130532_ = $params["serverpassword"]; $_obfuscated_0D3B31061A1415174038370E143524052A361D2F2D1222_ = "application"; } else { if ($api_type == "client") { $_obfuscated_0D2513050A2221212C0F13263C30172B2F052727130532_ = $params["serveraccesshash"]; $_obfuscated_0D3B31061A1415174038370E143524052A361D2F2D1222_ = "client"; } } $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = pterobill_gethostname($params); $url = $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ . "/api/" . $_obfuscated_0D3B31061A1415174038370E143524052A361D2F2D1222_ . "/" . $endpoint; $_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_ = curl_init(); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_URL, $url); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_POSTREDIR, CURL_REDIR_POST_301); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_RETURNTRANSFER, 1); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_TIMEOUT, 5); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_USERAGENT, "PteroBill"); $_obfuscated_0D162F0B373226171A051A122540353D37222735150801_ = ["Authorization: Bearer " . $_obfuscated_0D2513050A2221212C0F13263C30172B2F052727130532_, "Accept: Application/vnd.pterodactyl.v1+json"]; if ($method === "POST" || $method === "PATCH") { $_obfuscated_0D1529393F2731270921035B3605110722115B310F2E32_ = json_encode($data); curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_POSTFIELDS, $_obfuscated_0D1529393F2731270921035B3605110722115B310F2E32_); array_push($_obfuscated_0D162F0B373226171A051A122540353D37222735150801_, "Content-Type: application/json"); array_push($_obfuscated_0D162F0B373226171A051A122540353D37222735150801_, "Content-Length: " . strlen($_obfuscated_0D1529393F2731270921035B3605110722115B310F2E32_)); } curl_setopt($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLOPT_HTTPHEADER, $_obfuscated_0D162F0B373226171A051A122540353D37222735150801_); $_obfuscated_0D0A140A2F2B0203245C1C06173D273222290926353E11_ = curl_exec($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_); $_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_ = json_decode($_obfuscated_0D0A140A2F2B0203245C1C06173D273222290926353E11_, true); $_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_["status_code"] = curl_getinfo($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_, CURLINFO_HTTP_CODE); if ($_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_["status_code"] === 0) { logModuleCall("PteroBill", "Curl Error", curl_errno($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_) . " - " . curl_error($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_), $_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_); } curl_close($_obfuscated_0D0F232A291E220D1C0A2E2540083D1B0B35235B5B1D11_); logModuleCall("PteroBill", $method . " - " . $url, isset($data) ? json_encode($data) : "", print_r($_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_, true)); return $_obfuscated_0D3726262C121A041F2103043D0B222816261F1A120D32_; } function pterobill_TestConnection($params) { try { $data = pterobill_apicall($params, "locations"); if ($data["status_code"] === 200) { $_obfuscated_0D08221139331C39390D0615300A3C0F2B0F2631285C32_ = true; $_obfuscated_0D043F1A0B31181C0A071E16242A1B100B2E0C30241E22_ = ""; } else { logModuleCall("PteroBill", "pterobill_TestConnection", $params, $data["status_code"], $data["errors"]); $_obfuscated_0D08221139331C39390D0615300A3C0F2B0F2631285C32_ = false; $_obfuscated_0D043F1A0B31181C0A071E16242A1B100B2E0C30241E22_ = $data["errors"]; } } catch (Exception $_obfuscated_0D2A04310F0E140F3B2A090E3839221803192B0F170122_) { logModuleCall("PteroBill", "pterobill_TestConnection", $params, $data["status_code"], $data["errors"]); $_obfuscated_0D08221139331C39390D0615300A3C0F2B0F2631285C32_ = false; $_obfuscated_0D043F1A0B31181C0A071E16242A1B100B2E0C30241E22_ = $data["errors"]; } return ["success" => $_obfuscated_0D08221139331C39390D0615300A3C0F2B0F2631285C32_, "error" => $_obfuscated_0D043F1A0B31181C0A071E16242A1B100B2E0C30241E22_]; } function pterobill_PopulateLocations($params) { $data = pterobill_apicall($params, "locations"); $_obfuscated_0D230D08113331132B363C3D1C13302902371E11180F32_ = []; foreach ($data["data"] as $_obfuscated_0D291F0F2C2A2A1234161A2B0F161F262F16191C382F01_) { $_obfuscated_0D2E360F5B2928131011010B2A2D06312506050E075C11_ = $_obfuscated_0D291F0F2C2A2A1234161A2B0F161F262F16191C382F01_["attributes"]["id"]; $_obfuscated_0D5C25212A3122195C5C113B5C1D5C0D020209243B0311_ = $_obfuscated_0D291F0F2C2A2A1234161A2B0F161F262F16191C382F01_["attributes"]["long"]; $_obfuscated_0D230D08113331132B363C3D1C13302902371E11180F32_[$_obfuscated_0D2E360F5B2928131011010B2A2D06312506050E075C11_] = $_obfuscated_0D5C25212A3122195C5C113B5C1D5C0D020209243B0311_; } return $_obfuscated_0D230D08113331132B363C3D1C13302902371E11180F32_; } function pterobill_PopulateNests($params) { $data = pterobill_apicall($params, "nests"); $_obfuscated_0D11233B3C3C1C35210537313B2109162C1B0822050B11_ = []; foreach ($data["data"] as $_obfuscated_0D2C061219372D010C1B06281A1B272E1E240404360932_) { $_obfuscated_0D11113F34061D3926145C3C133F2714130B2724193801_ = $_obfuscated_0D2C061219372D010C1B06281A1B272E1E240404360932_["attributes"]["id"]; $_obfuscated_0D3B293B223C39140F391F1D5B4022405B342D05300411_ = $_obfuscated_0D2C061219372D010C1B06281A1B272E1E240404360932_["attributes"]["name"]; $_obfuscated_0D11233B3C3C1C35210537313B2109162C1B0822050B11_[$_obfuscated_0D11113F34061D3926145C3C133F2714130B2724193801_] = $_obfuscated_0D3B293B223C39140F391F1D5B4022405B342D05300411_; } return $_obfuscated_0D11233B3C3C1C35210537313B2109162C1B0822050B11_; } function pterobill_ConfigOptions() { return ["server_name" => ["FriendlyName" => "Server Name", "Type" => "text", "Size" => "20", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Server display name in panel, not required to be unique\">Help</a>", "SimpleMode" => true], "location_id" => ["FriendlyName" => "Location", "Type" => "text", "Size" => "20", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Location to deploy configured in Pterodactyl\">Help</a>", "Loader" => "pterobill_PopulateLocations", "SimpleMode" => true], "cpu" => ["FriendlyName" => "CPU Limit", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Percentage of CPU usable. 100% is 1 core, 250% is 2.5 cores, 0 for unlimited.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "memory" => ["FriendlyName" => "Memory (MB)", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Memory available to server in MB. 0 for unlimited.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "disk" => ["FriendlyName" => "Disk (MB)", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Disk space available to server in MB. 0 for unlimited.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "swap" => ["FriendlyName" => "Swap (MB)", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Swap space available to server in MB. -1 for unlimited, 0 to disable swap.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "io" => ["FriendlyName" => "IO Weight", "Type" => "text", "Size" => "10", "Description" => "<a class=\"text-primary\" target=\"_blank\" href=\"https://docs.docker.com/engine/reference/run/#block-io-bandwidth-blkio-constraint\" data-toggle=\"tooltip\" title=\"Between 10 and 1000. Higher values are increased priority. Click for more info.\">Help</a>", "SimpleMode" => true, "Default" => "500"], "port_array" => ["FriendlyName" => "Port Array", "Type" => "text", "Size" => "20", "Description" => "<a class=\"text-primary\" href=\"https://pterobill.com/setup-guide.html#portarray\" target=\"_blank\" data-toggle=\"tooltip\" title='Array of ports and environment variables they should map to. Must be valid JSON, e.g. {\"SERVER_PORT\": 27015, \"RCON_PORT\": 27017} - SERVER_PORT is required. When specified ports are unavailable auto-allocator will find the best match. Click for more info.'>Help</a>", "SimpleMode" => true], "create_allocations" => ["FriendlyName" => "Create Allocations", "Type" => "yesno", "Description" => "<a class=\"text-primary\" target=\"_blank\" href=\"https://pterobill.com/setup-guide.html#createallocs\" data-toggle=\"tooltip\" title=\"Create allocations on demand. This feature is not yet implemented.\">Help</a>", "SimpleMode" => true], "dedicated_ip" => ["FriendlyName" => "Dedicated IP", "Type" => "yesno", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Assign a dedicated IP for this server.\">Help</a>", "SimpleMode" => true], "nest_id" => ["FriendlyName" => "Nest", "Type" => "text", "Size" => "20", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Pterodactyl Nest including the desired Egg.\">Help</a>", "Loader" => "pterobill_PopulateNests", "SimpleMode" => true], "egg_id" => ["FriendlyName" => "Egg ID", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Pterodactyl Egg ID to install.\">Help</a>", "SimpleMode" => true], "pack_id" => ["FriendlyName" => "Pack", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Pterodactyl Egg Pack ID to install.\">Help</a>", "SimpleMode" => true], "databases" => ["FriendlyName" => "Database Limit", "Type" => "text", "Size" => "10", "Description" => "<a href=\"#\" data-toggle=\"tooltip\" title=\"Number of databases user can create. Leave blank for unlimited.\">Help</a>", "SimpleMode" => true, "Default" => "0"], "autoallocate_increment" => ["FriendlyName" => "AutoAllocator Increment", "Type" => "text", "Size" => "10", "Description" => "<a class=\"text-primary\" href=\"https://pterobill.com/setup-guide.html#allocincrement\" target=\"_blank\" data-toggle=\"tooltip\" title=\"Number of ports the AutoAllocator will increment by. Defaults to 1. Click for more info\">Help</a>", "SimpleMode" => true, "Default" => "1"], "backups" => ["FriendlyName" => "Backup Limit", "Type" => "text", "Size" => "10", "Description" => "<a class=\"text-primary\" data-toggle=\"tooltip\" title=\"Number of backups allowed. 0 for none.\">Help</a>", "SimpleMode" => true, "Default" => "1"]]; } function pterobill_GetOption($params, $id, $default = NULL) { $_obfuscated_0D3E12335C0F40060E370329321E042D153034140E1311_ = pterobill_configoptions(); $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_ = $_obfuscated_0D3E12335C0F40060E370329321E042D153034140E1311_[$id]["FriendlyName"]; if (isset($params["configoptions"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_]) && $params["configoptions"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_] !== "") { return $params["configoptions"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_]; } if (isset($params["configoptions"][$id]) && $params["configoptions"][$id] !== "") { return $params["configoptions"][$id]; } if (isset($params["customfields"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_]) && $params["customfields"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_] !== "") { return $params["customfields"][$_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_]; } if (isset($params["customfields"][$id]) && $params["customfields"][$id] !== "") { return $params["customfields"][$id]; } $_obfuscated_0D3B3B3B3D0F042A1D162C1B050B2405390B0C26303301_ = false; $i = 0; foreach (pterobill_configoptions() as $key => $value) { $i++; if ($key === $id) { $_obfuscated_0D3B3B3B3D0F042A1D162C1B050B2405390B0C26303301_ = true; if ($_obfuscated_0D3B3B3B3D0F042A1D162C1B050B2405390B0C26303301_ && isset($params["configoption" . $i]) && $params["configoption" . $i] !== "") { return $params["configoption" . $i]; } return $default; } } } function pterobill_CalculateNodeUtilization($nodesResult) { $_obfuscated_0D2F2434170F0617293213093F30110717141621341C22_ = $nodesResult["attributes"]["relationships"]["nodes"]["data"]; $_obfuscated_0D2C30220D143F2C10032D38020C0C063D3F1B010D2D22_ = $nodesResult["attributes"]["relationships"]["servers"]["data"]; $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_ = []; foreach ($_obfuscated_0D2F2434170F0617293213093F30110717141621341C22_ as $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_) { $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_ = $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["attributes"]; if ($_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["public"] && !$_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["maintenance_mode"]) { $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["memory_used"] = 0; $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["disk_used"] = 0; $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_[$_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["id"]] = $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_; } } foreach ($_obfuscated_0D2C30220D143F2C10032D38020C0C063D3F1B010D2D22_ as $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_) { $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_ = $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["attributes"]; if (array_key_exists($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["node"], $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_)) { $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_[$_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["node"]]["memory_used"] += $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["limits"]["memory"]; $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_[$_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["node"]]["disk_used"] += $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["limits"]["disk"]; } } return $_obfuscated_0D163609125C0D1B0B1F190C1D091F3F17071031301501_; } function pterobill_FilterAvailableNodes($params, $nodes) { $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_ = []; $_obfuscated_0D0923272D11083B273B061D260B1D1A051C0928330811_ = pterobill_getoption($params, "memory"); $_obfuscated_0D261E3712023223353431193E2B27160C110728231711_ = pterobill_getoption($params, "disk"); foreach ($nodes as $_obfuscated_0D3F3E31390829363B112E19163D141D16312F0E313301_ => $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_) { if ($_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["memory_used"] + $_obfuscated_0D0923272D11083B273B061D260B1D1A051C0928330811_ <= $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["memory"] * (1 + $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["memory_overallocate"] / 100) || $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["disk_used"] + $_obfuscated_0D261E3712023223353431193E2B27160C110728231711_ <= $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["disk"] * (1 + $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_["disk_overallocate"] / 100)) { $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_[] = $_obfuscated_0D1F132D140F2C1E180D14220440333D3C0E212A2C3B01_; } } return $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_; } function pterobill_GetNodesForLocation($params) { $_obfuscated_0D2E360F5B2928131011010B2A2D06312506050E075C11_ = pterobill_getoption($params, "location_id"); $_obfuscated_0D010728301A0918212F1E1735180F1C233B0909052D11_ = pterobill_apicall($params, "locations/" . $_obfuscated_0D2E360F5B2928131011010B2A2D06312506050E075C11_ . "?include=nodes,servers"); $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_ = pterobill_calculatenodeutilization($_obfuscated_0D010728301A0918212F1E1735180F1C233B0909052D11_); $_obfuscated_0D101A223B06101A130822090E2E2E335C2B020C030511_ = pterobill_filteravailablenodes($params, $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_); logModuleCall("PteroBill", "Node Utilization", "Found " . count($_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_) . " valid nodes with " . count($_obfuscated_0D101A223B06101A130822090E2E2E335C2B020C030511_) . " available nodes", $_obfuscated_0D101A223B06101A130822090E2E2E335C2B020C030511_); return $_obfuscated_0D101A223B06101A130822090E2E2E335C2B020C030511_; } function pterobill_GetAllocationsForNode($params, $node_id) { $_obfuscated_0D032C152F06232824212B3E25113D0E0C0E2127061F22_ = []; $_obfuscated_0D5C132934031C0401222C3F273D2E221F3E2708090132_ = pterobill_apicall($params, "nodes/" . $node_id . "/allocations"); $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_ = (int) $_obfuscated_0D5C132934031C0401222C3F273D2E221F3E2708090132_["meta"]["pagination"]["total_pages"] + 1; for ($i = 2; $i <= $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_; $i++) { foreach ($_obfuscated_0D5C132934031C0401222C3F273D2E221F3E2708090132_["data"] as $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_) { $_obfuscated_0D032C152F06232824212B3E25113D0E0C0E2127061F22_[] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["attributes"]; } if ($i != $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_) { $_obfuscated_0D5C132934031C0401222C3F273D2E221F3E2708090132_ = pterobill_apicall($params, "nodes/" . $node_id . "/allocations?page=" . $i); } } return $_obfuscated_0D032C152F06232824212B3E25113D0E0C0E2127061F22_; } function pterobill_FilterAvailableAllocations($allocations) { $_obfuscated_0D191527310D4007115B093E29032122153706092A1101_ = []; foreach ($allocations as $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_) { if (!$_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["assigned"]) { $_obfuscated_0D191527310D4007115B093E29032122153706092A1101_[] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_; } } return $_obfuscated_0D191527310D4007115B093E29032122153706092A1101_; } function pterobill_MapAllocsIpsAndPorts($allocations) { $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_ = []; $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_ = []; foreach ($allocations as $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_) { $_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_ = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["ip"]; if (!array_key_exists($_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_, $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_)) { $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_] = ["ports" => [], "available" => 0]; } $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_]["ports"][] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["port"]; if ($_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["assigned"] === false) { $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_]["available"] += 1; $_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_]["ports_available"][] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["port"]; } $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_[$_obfuscated_0D3639400D19050F26065B373D103F123505093C340601_][$_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["port"]] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_; } return [$_obfuscated_0D26012D062D103C1A1A144015260C0A121F3631382E32_, $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_]; } function pterobill_FilterIpAddresses($ports_per_ip, $dedicated, $ports) { if (!WHMCS\Database\Capsule::schema()->hasTable("tblpterobill_iptracker")) { pterobill_createdatabasetable(); } $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_ = []; $_obfuscated_0D3B3B40271D28035B2C32210B1F101A302C3E34193E32_ = 0; foreach ($ports_per_ip as $key => $val) { $_obfuscated_0D142528213C1A5B08092D3F063C0A0605381011063D11_ = WHMCS\Database\Capsule::table("tblpterobill_iptracker")->where("ip_addr", $key)->get(); if (is_array($_obfuscated_0D142528213C1A5B08092D3F063C0A0605381011063D11_)) { $_obfuscated_0D02153C35170211360D231A5B240F2B230C08373C0D32_ = !$_obfuscated_0D142528213C1A5B08092D3F063C0A0605381011063D11_; } else { $_obfuscated_0D02153C35170211360D231A5B240F2B230C08373C0D32_ = $_obfuscated_0D142528213C1A5B08092D3F063C0A0605381011063D11_->isEmpty(); } if ($_obfuscated_0D02153C35170211360D231A5B240F2B230C08373C0D32_) { if ($val["available"] === count($val["ports"])) { if ($dedicated === true) { $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_[] = $key; } else { $_obfuscated_0D0C13351B29373B2F35293B252C332724151F371C1D32_ = $key; } } else { if ($val["available"] >= count($ports)) { if ($dedicated === false) { $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_[] = $key; } } } } else { $_obfuscated_0D3B3B40271D28035B2C32210B1F101A302C3E34193E32_ += 1; } } if (empty($_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_) && $dedicated === false && 0 < count($ports_per_ip)) { logModuleCall("PteroBill", "AutoAllocator", "", "No candidate for shared IP address found, using an empty IP."); $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_[] = $_obfuscated_0D0C13351B29373B2F35293B252C332724151F371C1D32_; } logModuleCall("PteroBill", "AutoAllocator", "Considered " . count($ports_per_ip) . " IPs and found " . count($_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_) . " matches skipping " . $_obfuscated_0D3B3B40271D28035B2C32210B1F101A302C3E34193E32_ . " dedicated IPs", $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_); return $_obfuscated_0D11363F0D185B33193F2E5B2818310B32142D092A2E01_; } function pterobill_GetPortArray($params) { $_obfuscated_0D0A21371E34380B2E3D22032C283D332C31141C2E2222_ = pterobill_getoption($params, "port_array"); $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_ = json_decode($_obfuscated_0D0A21371E34380B2E3D22032C283D332C31141C2E2222_, true); if (!array_key_exists("SERVER_PORT", $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_)) { throw new Exception("Port array is not valid JSON or does not include a SERVER_PORT entry."); } if (is_array($_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_["NONE"])) { $_obfuscated_0D26060B0D183E3E351D1C333D062D0C2C3B1009100722_ = $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_["NONE"]; unset($_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_["NONE"]); foreach ($_obfuscated_0D26060B0D183E3E351D1C333D062D0C2C3B1009100722_ as $key => $value) { $_obfuscated_0D0D242D1A1C142D401939380D2114211D3B2804052701_ = "NONE" . $key; $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_[$_obfuscated_0D0D242D1A1C142D401939380D2114211D3B2804052701_] = $value; } } return $_obfuscated_0D2E37262527100732250A123B012B180C132C1E061201_; } function pterobill_AutoAllocatePick($params, $dedicated_ip) { $_obfuscated_0D152A1E0D300F063D161B2415012D031B2E1D38062601_ = pterobill_getoption($params, "autoallocate_increment") ?: 1; $_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_ = pterobill_getnodesforlocation($params); logModuleCall("PteroBill", "AutoAllocator", "AutoAllocator starting. Looking on " . count($_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_) . " nodes.", ""); foreach ($_obfuscated_0D1E33062B312D2C0806403F3114341C03133429121132_ as $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_) { $ports = pterobill_getportarray($params); $node_id = $_obfuscated_0D38341939371E2B3339402D2814231222341A06053411_["id"]; $_obfuscated_0D0E0A1D3E192109090E40173E0B1B0E09272F2D032C22_ = pterobill_getallocationsfornode($params, $node_id); $_obfuscated_0D2F1D093C1C1015370A5C0835083B032D303E04250222_ = pterobill_filteravailableallocations($_obfuscated_0D0E0A1D3E192109090E40173E0B1B0E09272F2D032C22_); list($ports_per_ip, $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_) = pterobill_mapallocsipsandports($_obfuscated_0D0E0A1D3E192109090E40173E0B1B0E09272F2D032C22_); $_obfuscated_0D222C34372E2A282F3C280F3E0534150F322A23213F01_ = pterobill_filteripaddresses($ports_per_ip, $dedicated_ip, $ports); if (empty($_obfuscated_0D222C34372E2A282F3C280F3E0534150F322A23213F01_)) { return "Failed to find an available IP address."; } logModuleCall("PteroBill", "AutoAllocator", "", "AutoAllocator found " . count($_obfuscated_0D2F1D093C1C1015370A5C0835083B032D303E04250222_) . " available allocations out of " . count($_obfuscated_0D0E0A1D3E192109090E40173E0B1B0E09272F2D032C22_) . " total allocations for node_id " . $node_id . " with " . count($ports_per_ip) . " unique IPs. Using increment of " . $_obfuscated_0D152A1E0D300F063D161B2415012D031B2E1D38062601_ . "."); foreach ($_obfuscated_0D222C34372E2A282F3C280F3E0534150F322A23213F01_ as $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_) { $ports = pterobill_getportarray($params); $_obfuscated_0D2206272C0C5B3E0F2D12303937013C283605152C2D11_ = 1000; logModuleCall("PteroBill", "AutoAllocator", "", "AutoAllocator selected IP " . $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_ . " with " . count($ports_per_ip[$_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_]["ports_available"]) . " available allocations. Trying " . $_obfuscated_0D2206272C0C5B3E0F2D12303937013C283605152C2D11_ . " times."); for ($i = 0; $i < $_obfuscated_0D2206272C0C5B3E0F2D12303937013C283605152C2D11_; $i++) { $_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_ = []; $_obfuscated_0D0A1F3224350C352A0D0B3E1A5B3916300E22061C0222_ = array_intersect($ports, $ports_per_ip[$_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_]["ports_available"]); if ($_obfuscated_0D0A1F3224350C352A0D0B3E1A5B3916300E22061C0222_ === $ports) { foreach ($ports as $key => $port) { $_obfuscated_0D3C12373E32123C032625392132045B0F04165B3E2932_ = $_obfuscated_0D0518120B2F2D3B2C06260B3C0D373015032735113122_[$_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_][$port]; if (!is_null($_obfuscated_0D3C12373E32123C032625392132045B0F04165B3E2932_)) { $_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_[$key] = $_obfuscated_0D3C12373E32123C032625392132045B0F04165B3E2932_; } } if (count($_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_) !== count($ports)) { } } else { $ports = array_map(function ($val) { static $autoallocate_increment = NULL; return (int) $val + (int) $autoallocate_increment; }, $ports); } } if (!empty($_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_)) { return $_obfuscated_0D2B3F2640090D251A400F3E2F3E051E11403409232D32_; } } } return "AutoAllocator failed to find suitable allocations"; } function pterobill_GenerateUsername($length = 8) { $_obfuscated_0D07033D0B4001162C282213373C313C07353B1E290C11_ = array_merge(range(0, 9), range("a", "z"), range("A", "Z")); $username = ""; for ($i = 0; $i < $length; $i++) { $username .= $_obfuscated_0D07033D0B4001162C282213373C313C07353B1E290C11_[mt_rand(0, count($_obfuscated_0D07033D0B4001162C282213373C313C07353B1E290C11_) - 1)]; } return $username; } function pterobill_CreateAccount($params) { try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_GetServerID($params); if (isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { throw new Exception("Server with this ID already exists, aborting account creation."); } $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = pterobill_apicall($params, "users/external/" . $params["clientsdetails"]["id"]); if ($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["status_code"] === 404) { $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = pterobill_apicall($params, "users?filter[email]=" . urlencode($params["clientsdetails"]["email"])); if ($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["meta"]["pagination"]["total"] === 0) { $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = pterobill_apicall($params, "users", ["username" => pterobill_getoption($params, "username", pterobill_generateusername()), "email" => $params["clientsdetails"]["email"], "first_name" => $params["clientsdetails"]["firstname"], "last_name" => $params["clientsdetails"]["lastname"], "external_id" => $params["clientsdetails"]["id"]], "POST"); } else { foreach ($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["data"] as $key => $value) { if ($value["attributes"]["email"] === $params["clientsdetails"]["email"]) { $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = array_merge($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_, $value); $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_ = array_merge($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_, $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["data"][0]); } } } } if ($_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["status_code"] === 200 || $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["status_code"] === 201) { $_obfuscated_0D1D242B2A5C240202083314182C033E0E0C1E2A241E32_ = $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["attributes"]["id"]; $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_ = pterobill_getoption($params, "nest_id"); $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_ = pterobill_getoption($params, "egg_id"); $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_ = pterobill_apicall($params, "nests/" . $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_ . "/eggs/" . $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_ . "?include=variables"); if ($_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["status_code"] !== 200) { throw new Exception("Fetching egg data failed with error: " . $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["status_code"] . ". For additional information enable module debug mode."); } $dedicated_ip = pterobill_getoption($params, "dedicated_ip") ? true : false; $_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_ = pterobill_autoallocatepick($params, $dedicated_ip); if (!is_array($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_)) { throw new Exception($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_); } $_obfuscated_0D1C2C0A3B3E2D15013814311B0F3805060A1A1E3B1322_ = $_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_["SERVER_PORT"]["id"]; $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_ = $_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_["SERVER_PORT"]["ip"]; unset($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_["SERVER_PORT"]); $_obfuscated_0D250B292240340C3B39352C1D19310B39232D262B2C11_ = array_column($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_, "id"); if (($_obfuscated_0D173B151F042D2B06390D282F30180B3C2635053B0132_ = array_search($_obfuscated_0D1C2C0A3B3E2D15013814311B0F3805060A1A1E3B1322_, $_obfuscated_0D250B292240340C3B39352C1D19310B39232D262B2C11_)) !== false) { unset($_obfuscated_0D250B292240340C3B39352C1D19310B39232D262B2C11_[$_obfuscated_0D173B151F042D2B06390D282F30180B3C2635053B0132_]); } $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_ = []; foreach ($_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["attributes"]["relationships"]["variables"]["data"] as $key => $val) { $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_ = $val["attributes"]; $_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_ = $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["env_variable"]; $default = $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["default_value"]; $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_ = pterobill_getoption($params, $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["name"]); $_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_ = pterobill_getoption($params, $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["env_variable"]); if (isset($_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_)) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = (string) $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_; } else { if (isset($_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_)) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = (string) $_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_; } else { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $default; } } } foreach ($_obfuscated_0D21351D310B0D1E2B3B113F1C08212C06101204180B01_ as $key => $val) { if (substr($key, 0, 4) !== "NONE") { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$key] = (string) $val["port"]; } } $_obfuscated_0D29260310392B320E2C041C0B3E401E1F350F123E2522_ = pterobill_getoption($params, "server_name", pterobill_generateusername() . "_" . $params["serviceid"]); $_obfuscated_0D0D1D360A04402B40242D1B0F1A3B120B11405B2A1C11_ = pterobill_getoption($params, "memory"); $_obfuscated_0D082F1D06303F3C14022A0539210D282E320B23053832_ = pterobill_getoption($params, "swap"); $_obfuscated_0D0B1C2B0F10340E0F0609182E2F1C1E041E371A102122_ = pterobill_getoption($params, "io"); $_obfuscated_0D105B1E072A0A251A08070C5C0C21112F0126382B1611_ = pterobill_getoption($params, "cpu"); $_obfuscated_0D24191130043004351B3C2D051231180D171E2B130911_ = pterobill_getoption($params, "disk"); $_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_ = pterobill_getoption($params, "pack_id"); $_obfuscated_0D023C2B5B5B351A07190A1F15230F3F3B09400A160D11_ = pterobill_getoption($params, "image", $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["attributes"]["docker_image"]); $_obfuscated_0D311127100338053137293B1A0313365B2A0601141A32_ = pterobill_getoption($params, "startup", $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["attributes"]["startup"]); $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_ = pterobill_getoption($params, "databases"); $allocations = pterobill_getoption($params, "allocations"); $_obfuscated_0D020C37040F3421014012022F22031F0A0B1912214001_ = pterobill_getoption($params, "backups"); $_obfuscated_0D270F1D0A0D243E2C121B0610260815251E383B371501_ = pterobill_getoption($params, "oom_disabled") ? true : false; $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = ["name" => $_obfuscated_0D29260310392B320E2C041C0B3E401E1F350F123E2522_, "user" => (int) $_obfuscated_0D1D242B2A5C240202083314182C033E0E0C1E2A241E32_, "nest" => (int) $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_, "egg" => (int) $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_, "docker_image" => $_obfuscated_0D023C2B5B5B351A07190A1F15230F3F3B09400A160D11_, "startup" => $_obfuscated_0D311127100338053137293B1A0313365B2A0601141A32_, "oom_disabled" => $_obfuscated_0D270F1D0A0D243E2C121B0610260815251E383B371501_, "limits" => ["memory" => (int) $_obfuscated_0D0D1D360A04402B40242D1B0F1A3B120B11405B2A1C11_, "swap" => (int) $_obfuscated_0D082F1D06303F3C14022A0539210D282E320B23053832_, "io" => (int) $_obfuscated_0D0B1C2B0F10340E0F0609182E2F1C1E041E371A102122_, "cpu" => (int) $_obfuscated_0D105B1E072A0A251A08070C5C0C21112F0126382B1611_, "disk" => (int) $_obfuscated_0D24191130043004351B3C2D051231180D171E2B130911_], "feature_limits" => ["databases" => $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_ ? (int) $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_ : NULL, "allocations" => (int) $allocations, "backups" => (int) $_obfuscated_0D020C37040F3421014012022F22031F0A0B1912214001_], "environment" => $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_, "start_on_completion" => true, "external_id" => (string) $params["serviceid"], "allocation" => ["default" => (int) $_obfuscated_0D1C2C0A3B3E2D15013814311B0F3805060A1A1E3B1322_, "additional" => $_obfuscated_0D250B292240340C3B39352C1D19310B39232D262B2C11_]]; if (isset($_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_)) { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["pack"] = (int) $_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_; } $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_ = pterobill_apicall($params, "servers", $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_, "POST"); if ($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["status_code"] === 400) { throw new Exception("No available node matching the request."); } if ($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["status_code"] !== 201) { throw new Exception("Creating server failed with error: " . $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["status_code"] . ". For additional information enable module debug mode."); } } else { throw new Exception("User creation failed with error: " . $_obfuscated_0D222705352E2F0E1F135C3D053810120206173C2E2122_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server creation failed", $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_, $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } try { if ($dedicated_ip) { WHMCS\Database\Capsule::table("tblpterobill_iptracker")->insert(["ip_addr" => $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_, "external_id" => $params["serviceid"]]); $params["model"]->serviceProperties->save(["dedicatedip" => $_obfuscated_0D2A243F120F103B32083E2C07321001282221113C3D01_]); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return "Error recording the Dedicated IP: " . $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_GetServerID($params, $raw = false) { $_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_ = pterobill_apicall($params, "servers/external/" . $params["serviceid"], [], "GET"); if ($_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_["status_code"] === 200) { if ($raw) { return $_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_; } return $_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_["attributes"]["id"]; } if ($_obfuscated_0D40031C4029241A175B0401372C220F353E0A0F061722_["status_code"] === 500) { throw new Exception("Error getting the server ID from Pterodactyl. For additional information check the panel logs."); } } function pterobill_SuspendAccount($params) { try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_getserverid($params); if (!isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { throw new Exception("Suspending server failed because it does not exist."); } $_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "/suspend", [], "POST"); if ($_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_["status_code"] !== 204) { throw new Exception("Suspending server failed with error: " . $_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_UnsuspendAccount($params) { try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_getserverid($params); if (!isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { throw new Exception("Un-suspending server failed because it does not exist."); } $_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "/unsuspend", [], "POST"); if ($_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_["status_code"] !== 204) { throw new Exception("Un-suspending server failed with error: " . $_obfuscated_0D35382538123D0B2E041D043337342A2B3F181F5B0222_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_TerminateAccount($params) { $_obfuscated_0D3E0B3E2F34021F111D2213131F30303E151936401D32_ = $params["serviceid"]; try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_getserverid($params); if (!isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { throw new Exception("Failed to terminate server because it doesn't exist."); } $_obfuscated_0D1B163421351C0F402440362C2E13020D180D283F1622_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_, [], "DELETE"); if ($_obfuscated_0D1B163421351C0F402440362C2E13020D180D283F1622_["status_code"] !== 204) { throw new Exception("Terminating server failed with error: " . $_obfuscated_0D1B163421351C0F402440362C2E13020D180D283F1622_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } try { WHMCS\Database\Capsule::table("tblpterobill_iptracker")->where("external_id", $_obfuscated_0D3E0B3E2F34021F111D2213131F30303E151936401D32_)->delete(); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return "Error freeing dedicated IP: " . $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_ChangePackage($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { throw new Exception("Changing package failed because the specified server does not exist."); } $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"]; $_obfuscated_0D0D1D360A04402B40242D1B0F1A3B120B11405B2A1C11_ = pterobill_getoption($params, "memory"); $_obfuscated_0D082F1D06303F3C14022A0539210D282E320B23053832_ = pterobill_getoption($params, "swap"); $_obfuscated_0D0B1C2B0F10340E0F0609182E2F1C1E041E371A102122_ = pterobill_getoption($params, "io"); $_obfuscated_0D105B1E072A0A251A08070C5C0C21112F0126382B1611_ = pterobill_getoption($params, "cpu"); $_obfuscated_0D24191130043004351B3C2D051231180D171E2B130911_ = pterobill_getoption($params, "disk"); $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_ = pterobill_getoption($params, "databases"); $allocations = pterobill_getoption($params, "options"); $_obfuscated_0D270F1D0A0D243E2C121B0610260815251E383B371501_ = pterobill_getoption($params, "oom_disabled") ? true : false; $_obfuscated_0D390901032D272E04090C302F14291E2407252A211932_ = ["allocation" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["allocation"], "memory" => (int) $_obfuscated_0D0D1D360A04402B40242D1B0F1A3B120B11405B2A1C11_, "swap" => (int) $_obfuscated_0D082F1D06303F3C14022A0539210D282E320B23053832_, "io" => (int) $_obfuscated_0D0B1C2B0F10340E0F0609182E2F1C1E041E371A102122_, "cpu" => (int) $_obfuscated_0D105B1E072A0A251A08070C5C0C21112F0126382B1611_, "disk" => (int) $_obfuscated_0D24191130043004351B3C2D051231180D171E2B130911_, "oom_disabled" => $_obfuscated_0D270F1D0A0D243E2C121B0610260815251E383B371501_, "feature_limits" => ["databases" => (int) $_obfuscated_0D16092D0E2A1E09091E0B32022F0B3537161229025C32_, "allocations" => (int) $allocations, "backups" => (int) $_obfuscated_0D020C37040F3421014012022F22031F0A0B1912214001_]]; $_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "/build", $_obfuscated_0D390901032D272E04090C302F14291E2407252A211932_, "PATCH"); if ($_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_["status_code"] !== 200) { throw new Exception("Updating the server build data failed with error: " . $_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_["status_code"] . ". For additional information enable module debug mode."); } $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_ = pterobill_getoption($params, "nest_id"); $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_ = pterobill_getoption($params, "egg_id"); $_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_ = pterobill_getoption($params, "pack_id"); $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_ = pterobill_apicall($params, "nests/" . $_obfuscated_0D23223E33382825381D5B08171A060D14092F16090622_ . "/eggs/" . $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_ . "?include=variables"); if ($_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["status_code"] !== 200) { throw new Exception("Fetching eggs from panel failed with error: " . $_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["status_code"] . ". For additional information enable module debug mode."); } $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_ = []; foreach ($_obfuscated_0D2413240D2A042D3C2C3B03345C3C160F3F1A2E2A3B01_["attributes"]["relationships"]["variables"]["data"] as $key => $val) { $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_ = $val["attributes"]; $_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_ = $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["env_variable"]; $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_ = pterobill_getoption($params, $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["name"]); $_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_ = pterobill_getoption($params, $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["env_variable"]); if (isset($_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_)) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $_obfuscated_0D391D1F2C19171F040D1E24112F252B2C0F23092B0132_; } else { if (isset($_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_)) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $_obfuscated_0D281D26020A36195B0F270229393C291B300A181A1A01_; } else { if (isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["environment"][$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_])) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["environment"][$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_]; } else { if (isset($_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["default_value"])) { $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_[$_obfuscated_0D0A310D0C27173F403F0B5B5C3F0C1C05331A1F290601_] = $_obfuscated_0D3C2D3921363F1F3410251F2A0C330B162F3F121C1311_["default_value"]; } } } } } $_obfuscated_0D023C2B5B5B351A07190A1F15230F3F3B09400A160D11_ = pterobill_getoption($params, "image", $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["image"]); $_obfuscated_0D311127100338053137293B1A0313365B2A0601141A32_ = pterobill_getoption($params, "startup", $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["startup_command"]); $_obfuscated_0D390901032D272E04090C302F14291E2407252A211932_ = ["environment" => $_obfuscated_0D2E0F5C17232B0E1C1C023D050708101C252C2D2C1401_, "startup" => $_obfuscated_0D311127100338053137293B1A0313365B2A0601141A32_, "egg" => (int) $_obfuscated_0D2D2422160340031E095B283924172908352C1F093D11_, "pack" => (int) $_obfuscated_0D010F13363B133607342531042135090E1E023D3C0A01_, "image" => $_obfuscated_0D023C2B5B5B351A07190A1F15230F3F3B09400A160D11_, "skip_scripts" => false]; $_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_ = pterobill_apicall($params, "servers/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "/startup", $_obfuscated_0D390901032D272E04090C302F14291E2407252A211932_, "PATCH"); if ($_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_["status_code"] !== 200) { throw new Exception("Updating the server startup config failed with error: " . $_obfuscated_0D5C222D35160B185C0721142609030227012C2F260232_["status_code"] . ". For additional information enable module debug mode."); } } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { return $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage(); } return "success"; } function pterobill_ReinstallServer($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $endpoint = "servers/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"] . "/reinstall"; pterobill_apicall($params, $endpoint, [], "POST"); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server Reinstall Failed", "", $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return "Error reinstalling server"; } return "success"; } function pterobill_RebootServer($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $endpoint = "servers/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["identifier"] . "/power"; pterobill_apicall($params, $endpoint, ["signal" => "restart"], "POST", "client"); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server Reboot Failed", "", $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return "Error rebooting server"; } return "success"; } function pterobill_StartServer($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $endpoint = "servers/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["identifier"] . "/power"; pterobill_apicall($params, $endpoint, ["signal" => "start"], "POST", "client"); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server Start Failed", "", $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return "Error starting server"; } return "success"; } function pterobill_StopServer($params) { try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $endpoint = "servers/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["identifier"] . "/power"; pterobill_apicall($params, $endpoint, ["signal" => "stop"], "POST", "client"); } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { logModuleCall("PteroBill", "Server Stop Failed", "", $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_->getMessage()); return "Error stopping server"; } return "success"; } function pterobill_ClientAreaAllowedFunctions() { $_obfuscated_0D0C0A0110013B1A271B1724274028163D1F0B150D3401_ = ["Reinstall Server" => "ReinstallServer", "Reboot Server" => "RebootServer", "Start Server" => "StartServer", "Stop Server" => "StopServer"]; return $_obfuscated_0D0C0A0110013B1A271B1724274028163D1F0B150D3401_; } function pterobill_LoginLink($params) { if ($params["moduletype"] !== "pterobill") { return NULL; } try { $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ = pterobill_getserverid($params); if (!isset($_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_)) { return NULL; } $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = pterobill_gethostname($params); echo "<a class=\"text-primary\" href=\"" . $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ . "/admin/servers/view/" . $_obfuscated_0D282331143F013F3F261F5C082E0C1015373D1D1A1211_ . "\" target=\"_blank\">Go to Server</a>"; } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { } } function pterobill_ClientArea($params) { if ($params["moduletype"] !== "pterobill") { return NULL; } try { $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_ = pterobill_getserverid($params, true); if ($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["status_code"] === 404 || !isset($_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["id"])) { return NULL; } $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ = pterobill_gethostname($params); return ["templatefile" => "clientarea", "vars" => ["serviceurl" => $_obfuscated_0D2A12053606101E1205210504303E39330F2222043E22_ . "/server/" . $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["identifier"], "starturl" => "clientarea.php?action=productdetails&id=" . $params["serviceid"] . "&modop=custom&a=StartServer", "stopurl" => "clientarea.php?action=productdetails&id=" . $params["serviceid"] . "&modop=custom&a=StopServer", "rebooturl" => "clientarea.php?action=productdetails&id=" . $params["serviceid"] . "&modop=custom&a=RebootServer", "reinstallurl" => "clientarea.php?action=productdetails&id=" . $params["serviceid"] . "&modop=custom&a=ReinstallServer", "memory" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["limits"]["memory"] . " MB", "disk" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["limits"]["disk"] / 1000 . " GB", "cpu" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["limits"]["cpu"] . "%", "location" => $_obfuscated_0D0E2A2E5C155C36103B2634022F0B29083B2B25242B11_["attributes"]["container"]["environment"]["P_SERVER_LOCATION"]]]; } catch (Exception $_obfuscated_0D27013E22280D3011170F1A025C02381F083F0B300911_) { } } function pterobill_ListAccounts($params) { $_obfuscated_0D2A2B0F073726220609081403082D071509103D322601_ = []; $_obfuscated_0D232817242640060D0B3C1625222C3F22182923373511_ = []; try { $data = pterobill_apicall($params, "servers"); $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_ = (int) $data["meta"]["pagination"]["total_pages"] + 1; for ($i = 2; $i <= $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_; $i++) { foreach ($data["data"] as $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_) { $_obfuscated_0D232817242640060D0B3C1625222C3F22182923373511_[] = $_obfuscated_0D111112142B2F5C2D18183D343D0E362D0D0A3B2E3311_["attributes"]; } if ($i != $_obfuscated_0D191B1E34382C14262B273F19160B1A282A5C1E051101_) { $data = pterobill_apicall($params, "servers?page=" . $i); } } foreach ($_obfuscated_0D232817242640060D0B3C1625222C3F22182923373511_ as $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_) { if (isset($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["external_id"])) { $_obfuscated_0D342209180927381A0C1D331F280B5B1E5B16222D2711_ = $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["suspended"] ? WHMCS\Service\Status::SUSPENDED : WHMCS\Service\Status::ACTIVE; $_obfuscated_0D0909142805030F05241C0715231114312D140E2C2F32_ = new DateTime($_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["created_at"]); $_obfuscated_0D2A2B0F073726220609081403082D071509103D322601_[] = ["email" => "", "username" => "", "domain" => "", "uniqueIdentifier" => $_obfuscated_0D231B2B0C3F39183C05221D2A072F381B2F2314232311_["identifier"], "primaryip" => "", "created" => $_obfuscated_0D0909142805030F05241C0715231114312D140E2C2F32_->format("Y-m-d H:i:s"), "status" => $_obfuscated_0D342209180927381A0C1D331F280B5B1E5B16222D2711_]; }
■【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除]
■WordPress のマルウェア駆除、セキュリティー対策 カスタマイズや修正、引っ越し・復旧のご依頼承ります
(C)2019 ワードプレス ドクター All rights reserved.