You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.4 KiB
64 lines
1.4 KiB
<?php
|
|
use function Hestiacp\quoteshellarg\quoteshellarg;
|
|
// Main include
|
|
include $_SERVER["DOCUMENT_ROOT"] . "/inc/main.php";
|
|
|
|
// Check user
|
|
if ($_SESSION["userContext"] != "admin") {
|
|
header("Location: /list/user");
|
|
exit();
|
|
}
|
|
|
|
$requestPayload = json_decode(file_get_contents("php://input"), true);
|
|
|
|
$allowedPeriods = ["daily", "weekly", "monthly", "yearly", "biennially", "triennially"];
|
|
|
|
if (!empty($requestPayload["period"]) && in_array($requestPayload["period"], $allowedPeriods)) {
|
|
$period = $requestPayload["period"];
|
|
} else {
|
|
$period = "daily";
|
|
}
|
|
|
|
if (!empty($requestPayload["service"])) {
|
|
$service = $requestPayload["service"];
|
|
} else {
|
|
$service = "la";
|
|
}
|
|
|
|
// Data
|
|
exec(
|
|
HESTIA_CMD . "v-export-rrd " . quoteshellarg($service) . " " . quoteshellarg($period),
|
|
$output,
|
|
$return_var,
|
|
);
|
|
|
|
if ($return_var != 0) {
|
|
http_response_code(500);
|
|
exit("Error fetching RRD data");
|
|
}
|
|
|
|
$serviceUnits = [
|
|
"la" => "Points",
|
|
"mem" => "Mbytes",
|
|
"apache2" => "Connections",
|
|
"nginx" => "Connections",
|
|
"mail" => "Queue Size",
|
|
"ftp" => "Connections",
|
|
"ssh" => "Connections",
|
|
];
|
|
|
|
if (preg_match("/^net_/", $service)) {
|
|
$serviceUnits[$service] = "KBytes";
|
|
}
|
|
if (preg_match("/^pgsql_/", $service)) {
|
|
$serviceUnits[$service] = "Queries";
|
|
}
|
|
if (preg_match("/^mysql_/", $service)) {
|
|
$serviceUnits[$service] = "Queries";
|
|
}
|
|
|
|
$data = json_decode(implode("", $output), true);
|
|
$data["service"] = $service;
|
|
$data["unit"] = $serviceUnits[$service] ?? null;
|
|
echo json_encode($data);
|