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);
 |