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
			| 
											2 years ago
										 | <?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); |