From 07f3c69977c6af294d1aec81be5a2093ba36d223 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sun, 10 Sep 2023 20:36:22 -0400 Subject: [PATCH] Added changes done by BlinkohHost. See https://github.com/BlinkohHost/virtfusion-whmcs-module --- .../VirtFusionDirect/VirtFusionDirect.php | 11 ++++- .../VirtFusionDirect/lib/ModuleFunctions.php | 40 +++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/modules/servers/VirtFusionDirect/VirtFusionDirect.php b/modules/servers/VirtFusionDirect/VirtFusionDirect.php index adfc955..a49df0b 100644 --- a/modules/servers/VirtFusionDirect/VirtFusionDirect.php +++ b/modules/servers/VirtFusionDirect/VirtFusionDirect.php @@ -83,9 +83,16 @@ function VirtFusionDirect_updateServerObject(array $params) return (new ModuleFunctions())->updateServerObject($params); } +/** + * Allows changing of the package of a server + * + * @author https://github.com/BlinkohHost/virtfusion-whmcs-module + * @param array $params + * @return string + */ function VirtFusionDirect_ChangePackage(array $params) { - return 'success'; + return (new ModuleFunctions())->changePackage($params); } function VirtFusionDirect_AdminServicesTabFields(array $params) @@ -101,4 +108,4 @@ function VirtFusionDirect_AdminServicesTabFieldsSave(array $params) function VirtFusionDirect_ClientArea(array $params) { return (new ModuleFunctions())->clientArea($params); -} +} \ No newline at end of file diff --git a/modules/servers/VirtFusionDirect/lib/ModuleFunctions.php b/modules/servers/VirtFusionDirect/lib/ModuleFunctions.php index 5d4f259..b2b37d5 100644 --- a/modules/servers/VirtFusionDirect/lib/ModuleFunctions.php +++ b/modules/servers/VirtFusionDirect/lib/ModuleFunctions.php @@ -181,6 +181,46 @@ class ModuleFunctions extends Module } } + // This function was implemented by Zander Scott / awildboop of Blinkoh, LLC + // Please read this function thoroughly before use to ensure security & integrity + + /** + * Allows changing of the package of a server + * + * @author https://github.com/BlinkohHost/virtfusion-whmcs-module + * @param $params + * @return string + */ + public function changePackage($params) + { + $service = Database::getSystemService($params['serviceid']); + + if ($service) { + $whmcsService = Database::getWhmcsService($params['serviceid']); + $cp = $this->getCP($whmcsService->server); + $request = $this->initCurl($cp['token']); + $data = $request->put($cp['url'] . '/servers/' . $service->server_id . '/package/' . $params['configoption2']); + $data = json_decode($data); + + Log::insert(__FUNCTION__, $request->getRequestInfo(), $data); + + switch ($request->getRequestInfo('http_code')) { + + case 204: + return 'success'; + case 404: + return '404 was returned from the web service without the msg property. The service may be currently unavailable.'; + case 423: + if (property_exists($data, 'msg')) { + return $data->msg; + } + default: + return 'Update package request failed. The web service reported HTTP code ' . $request->getRequestInfo('http_code'); + } + } + return 'Service not found.'; + } + /** * * TERMINATE SERVER