$app->post("/update", function () use($app) { if (!$app->authed()) { $app->makeError("Access denied"); return; } $body = $app->request()->getBody(); $qres = mysql_query("SELECT s.* FROM `tblservers` s WHERE s.`type` = 'cpanel' and s.`disabled` = 0;"); if ($qres === FALSE) { $app->makeError("Unable to get list of cPanel servers"); return; } $servers = array(); while (($row = mysql_fetch_assoc($qres)) !== FALSE) { $servers[] = array("id" => intval($row["id"]), "name" => $row["name"], "hostname" => $row["hostname"], "username" => $row["username"], "accesshash" => $row["accesshash"]); } $plan = $body["plan"]; $changes = array(); // Update each WHM package foreach ($servers as $server) { $cpanel = new \Gufy\CpanelPhp\Cpanel(array("host" => "https://" . $server["hostname"] . ":2087", "username" => $server["username"], "password" => $server["accesshash"], "auth_type" => "hash")); $package = $cpanel->getpkginfo(array("pkg" => $plan["name"], "api.version" => 1)); if ($package["metadata"]["result"] !== 1) { continue; } $package = $package["data"]["pkg"]; $edits = array(); if ($plan["limits"]["overage"] == 1) { if ($package["BWLIMIT"]) { $edits["bwlimit"] = "unlimited"; } if ($package["QUOTA"]) { $edits["quota"] = "unlimited"; } } else { if ($package["BWLIMIT"] != $plan["limits"]["bandwidth"]) { $edits["bwlimit"] = $plan["limits"]["bandwidth"]; } if ($package["QUOTA"] != $plan["limits"]["disk"]) { $edits["quota"] = $plan["limits"]["disk"]; } } if (count($edits) > 0) { $keys = array_keys($edits); $edits["name"] = $plan["name"]; $edits["api.version"] = 1; $result = $cpanel->editpkg($edits); if ($result["metadata"]["result"] !== 1) { $app->makeError($result); continue; } $changes[] = $plan["name"] . " on " . $server["hostname"] . " updated: " . implode(",", $keys); } } // Update WHMCS $uPlanId = intval($plan["id"]); $uDisk = intval($plan["limits"]["disk"]); $uBw = intval($plan["limits"]["bandwidth"]); $uDesc = mysql_real_escape_string($plan["description"]); $uOverages = $plan["limits"]["overage"] == 1 ? "1,MB,MB" : ""; $update = mysql_query("UPDATE tblproducts SET configoption3 = '{$uDisk}', configoption5 = '{$uBw}', description = '{$uDesc}', overagesenabled = '{$uOverages}', overagesdisklimit = {$uDisk}, overagesbwlimit = {$uBw} WHERE id = {$uPlanId}"); if ($update === FALSE) { $changes[] = "*** WARNING: Changes could not be synced to WHMCS - please resolve this manually! ***"; $changes[] = mysql_error(); } echo json_encode($changes); });