mirror of
https://github.com/mivodev/mivo.git
synced 2026-01-26 05:25:42 +07:00
115 lines
4.2 KiB
PHP
115 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Core\Controller;
|
|
use App\Models\Config;
|
|
use App\Libraries\RouterOSAPI;
|
|
use App\Core\Middleware;
|
|
|
|
class DashboardController extends Controller {
|
|
|
|
public function __construct() {
|
|
Middleware::auth();
|
|
}
|
|
|
|
public function index($session) {
|
|
$configModel = new Config();
|
|
$creds = $configModel->getSession($session);
|
|
|
|
if (!$creds) {
|
|
echo "Session not found.";
|
|
return;
|
|
}
|
|
|
|
// Mock Data for Demo (SQLite or Legacy)
|
|
if ($session === 'demo') {
|
|
$data = [
|
|
'session' => $session,
|
|
'clock' => ['time' => '12:00:00', 'date' => 'jan/01/2024'],
|
|
'resource' => [
|
|
'board-name' => 'CHR (Demo SQLite)',
|
|
'version' => '7.12',
|
|
'uptime' => '1w 2d 3h',
|
|
'cpu-load' => '15',
|
|
'free-memory' => 1048576 * 512, // 512 MB
|
|
'free-hdd-space' => 1048576 * 1024, // 1 GB
|
|
],
|
|
// ... rest of mock data
|
|
'routerboard' => ['model' => 'x86_64'],
|
|
'hotspot_active' => 25,
|
|
'hotspot_users' => 150,
|
|
'lang' => [
|
|
'system_date_time' => 'System Date & Time',
|
|
'uptime' => 'Uptime',
|
|
'board_name' => 'Board Name',
|
|
'model' => 'Model',
|
|
'cpu_load' => 'CPU Load',
|
|
'free_memory' => 'Free Memory',
|
|
'free_hdd' => 'Free HDD',
|
|
'hotspot_active' => 'Hotspot Active',
|
|
'hotspot_users' => 'Hotspot Users',
|
|
]
|
|
];
|
|
return $this->view('dashboard', $data);
|
|
}
|
|
|
|
$API = new RouterOSAPI();
|
|
|
|
// Determine password: if legacy, decrypt it. If SQLite (new), assume plain for now
|
|
// (since we just seeded 'admin' plain in setup_database.php) or decrypt if you decide to encrypt in DB.
|
|
// For this Demo, setup_database.php inserted plain 'admin'.
|
|
// Existing v3 passwords are encrypted.
|
|
|
|
$password = $creds['password'];
|
|
if (isset($creds['source']) && $creds['source'] === 'legacy') {
|
|
$password = RouterOSAPI::decrypt($password);
|
|
}
|
|
|
|
if ($API->connect($creds['ip'], $creds['user'], $password)) {
|
|
// ... API calls
|
|
$getclock = $API->comm("/system/clock/print");
|
|
$clock = $getclock[0] ?? [];
|
|
|
|
$getresource = $API->comm("/system/resource/print");
|
|
$resource = $getresource[0] ?? [];
|
|
|
|
$getrouterboard = $API->comm("/system/routerboard/print");
|
|
$routerboard = $getrouterboard[0] ?? [];
|
|
|
|
$counthotspotactive = $API->comm("/ip/hotspot/active/print", array("count-only" => ""));
|
|
$countallusers = $API->comm("/ip/hotspot/user/print", array("count-only" => ""));
|
|
|
|
$API->disconnect();
|
|
|
|
$data = [
|
|
'session' => $session,
|
|
'clock' => $clock,
|
|
'resource' => $resource,
|
|
'routerboard' => $routerboard,
|
|
'hotspot_active' => $counthotspotactive,
|
|
'hotspot_users' => $countallusers,
|
|
'lang' => [
|
|
'system_date_time' => 'System Date & Time',
|
|
'uptime' => 'Uptime',
|
|
'board_name' => 'Board Name',
|
|
'model' => 'Model',
|
|
'cpu_load' => 'CPU Load',
|
|
'free_memory' => 'Free Memory',
|
|
'free_hdd' => 'Free HDD',
|
|
'hotspot_active' => 'Hotspot Active',
|
|
'hotspot_users' => 'Hotspot Users',
|
|
'hotspot_users' => 'Hotspot Users',
|
|
],
|
|
'interface' => $creds['interface'] ?? 'ether1'
|
|
];
|
|
// Pass Users Link (Optional: could be part of layout or card link)
|
|
// Ideally, the "Hotspot Users" card on dashboard should be clickable.
|
|
return $this->view('dashboard', $data);
|
|
|
|
} else {
|
|
echo "Connection Failed to " . $creds['ip'];
|
|
}
|
|
}
|
|
}
|