nestict 3d46b68bd6 Upload files to "system"
Signed-off-by: nestict <icttechnest@gmail.com>
2025-05-24 10:40:20 +02:00

58 lines
1.8 KiB
PHP

<?php
/**
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
* by https://t.me/ibnux
**/
require_once 'system/autoload/PEAR2/Autoload.php';
function mikrotik_get_resources($routerId)
{
$mikrotik = ORM::for_table('tbl_routers')->where('enabled', '1')->find_one($routerId);
if (!$mikrotik) {
// Handle case where router is not found
return null;
}
try {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
$health = $client->sendSync(new RouterOS\Request('/system health print'));
$res = $client->sendSync(new RouterOS\Request('/system resource print'));
$resourceData = $res->getAllOfType(RouterOS\Response::TYPE_DATA)[0];
$uptime = $resourceData->getProperty('uptime');
$freeMemory = $resourceData->getProperty('free-memory');
$totalMemory = $resourceData->getProperty('total-memory');
$cpuLoad = $resourceData->getProperty('cpu-load');
return [
'uptime' => $uptime,
'freeMemory' => mikrotik_formatSize($freeMemory),
'totalMemory' => mikrotik_formatSize($totalMemory),
'cpuLoad' => $cpuLoad . '%'
];
} catch (Exception $e) {
// Handle exceptions, e.g., connection errors
return null;
}
}
// Function to round the value and append the appropriate unit
function mikrotik_formatSize($size)
{
$units = ['B', 'KB', 'MB', 'GB'];
$unitIndex = 0;
while ($size >= 1024 && $unitIndex < count($units) - 1) {
$size /= 1024;
$unitIndex++;
}
return round($size, 2) . ' ' . $units[$unitIndex];
}
if (isset($_GET['router_id'])) {
$routerId = $_GET['router_id'];
$resources = mikrotik_get_resources($routerId);
echo json_encode($resources);
}