Compare commits

..

8 Commits

Author SHA1 Message Date
2f55cb9934 Standradport geändert 2025-11-17 06:36:38 +01:00
cea7419298 Pfade angepasst 2025-11-17 06:36:25 +01:00
8688167da6 SNMP Teil hinzugefügt und router angepasst 2025-11-17 06:36:08 +01:00
e30660a446 SNMP Teil hinzugefügt 2025-11-17 06:35:41 +01:00
e4b51997ee SNMP Teil hinzugefügt und Pfade angepasst 2025-11-17 06:35:22 +01:00
e3691c35f2 SNMP Teil hinzugefügt 2025-11-17 06:34:54 +01:00
aeba728564 Pfade angepasst 2025-11-17 06:34:36 +01:00
49e995e35b Dateien gelöscht 2025-11-17 06:33:56 +01:00
19 changed files with 313 additions and 87 deletions

View File

@ -0,0 +1,120 @@
<?php
// Strenge Typprüfung für Parameter- und Rückgabetypen aktivieren.
declare(strict_types=1);
namespace App\Controllers;
use App\Services\Snmp\SnmpServerStatusService;
/**
* Controller für das Dashboard.
* Zuständig für:
* - Abrufen des Serverstatus (über SnmpServerStatusService)
* - Auswählen und Rendern der Dashboard-View
*/
class DashboardController
{
/** @var array<string, mixed> Vollständige Anwendungskonfiguration (aus config.php) */
private array $config;
/** @var SnmpServerStatusService Service, der den Serverstatus (später per SNMP) liefert */
private SnmpServerStatusService $snmpService;
/**
* Übergibt die Konfiguration an den Controller und initialisiert den SNMP-Statusservice.
*
* @param array<string, mixed> $config Vollständige Konfiguration aus config.php
*/
public function __construct(array $config)
{
// Komplette Config lokal speichern (falls später weitere Werte benötigt werden).
$this->config = $config;
// Teilbereich "snmp" aus der Konfiguration ziehen.
// Wenn nicht vorhanden, wird ein leeres Array übergeben (der Service prüft das selbst).
$snmpConfig = $config['snmp'] ?? [];
// SNMP-Service initialisieren, der den Serverstatus liefert.
$this->snmpService = new SnmpServerStatusService($snmpConfig);
}
/**
* Zeigt das Dashboard an.
* Holt die Serverstatus-Daten aus dem SnmpServerStatusService und übergibt sie an die View.
*/
public function show(): void
{
// Serverstatus über den SNMP-Service ermitteln.
// In der aktuellen Version liefert der Service noch Demo-Daten.
$serverStatus = $this->snmpService->getServerStatus();
// Pfad zur Dashboard-View (Template-Datei) ermitteln.
$viewPath = __DIR__ . '/../../public/views/dashboard.php';
// Falls die View-Datei (noch) nicht existiert, Fallback-HTML direkt aus dem Controller ausgeben.
if (file_exists($viewPath) === false) {
$this->renderInlineDashboard($serverStatus);
return;
}
// View-Datei einbinden. Die Variable $serverStatus steht in der View zur Verfügung.
require $viewPath;
}
/**
* Fallback-Dashboard-Ausgabe direkt aus dem Controller (ohne separate View-Datei).
* Nur als Notlösung gedacht, falls die eigentliche View noch nicht vorhanden ist.
*
* @param array<string, mixed> $serverStatus Serverstatus-Daten (Hostname, CPU%, RAM%, etc.)
*/
private function renderInlineDashboard(array $serverStatus): void
{
?>
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>AD Admin Tool Dashboard</title>
</head>
<body>
<h1>Dashboard</h1>
<h2>Serverstatus</h2>
<ul>
<li>
Hostname:
<?php echo htmlspecialchars((string)$serverStatus['hostname'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
</li>
<li>
Betriebssystem:
<?php echo htmlspecialchars((string)$serverStatus['os'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
</li>
<li>
Uptime:
<?php echo htmlspecialchars((string)$serverStatus['uptime'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
</li>
<li>
CPU-Auslastung:
<?php echo (int)$serverStatus['cpu_usage']; ?>%
</li>
<li>
RAM-Auslastung:
<?php echo (int)$serverStatus['memory_usage']; ?>%
</li>
<li>
Datenträger C:
<?php echo (int)$serverStatus['disk_usage_c']; ?>%
</li>
<li>
Letzte Aktualisierung:
<?php echo htmlspecialchars((string)$serverStatus['last_update'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
</li>
</ul>
<p><a href="index.php?route=logout">Logout</a></p>
</body>
</html>
<?php
}
}

View File

@ -51,7 +51,7 @@ class LdapAuthService
// Benötigte Werte aus der LDAP-Konfiguration auslesen.
// Falls einzelne Werte fehlen, werden sinnvolle Standardwerte gesetzt.
$server = (string)($this->config['server'] ?? '');
$port = (int)($this->config['port'] ?? 636);
$port = (int)($this->config['port'] ?? 389);
$domainSuffix = (string)($this->config['domain_suffix'] ?? '');
$timeout = (int)($this->config['timeout'] ?? 5);

View File

@ -0,0 +1,68 @@
<?php
// Strenge Typprüfung für Parameter- und Rückgabetypen aktivieren.
declare(strict_types=1);
namespace App\Services\Snmp;
use RuntimeException;
/**
* Service zur Ermittlung des Serverstatus.
*
* In dieser ersten Version werden noch statische Demo-Daten zurückgegeben.
* Später können hier echte SNMP-Abfragen eingebaut werden, ohne dass sich
* der DashboardController oder die Views ändern müssen.
*/
class SnmpServerStatusService
{
/** @var array<string, mixed> SNMP-spezifische Konfiguration (Host, Community, Timeout, OIDs, etc.) */
private array $config;
/**
* Erwartet den Teilbereich "snmp" aus der allgemeinen Konfiguration (config.php).
*
* @param array<string, mixed> $snmpConfig Konfiguration für die SNMP-Abfragen
*/
public function __construct(array $snmpConfig)
{
// SNMP-Konfiguration in der Instanz speichern.
$this->config = $snmpConfig;
}
/**
* Liefert den aktuellen Serverstatus zurück.
*
* In dieser Version werden Demo-Daten auf Basis der Konfiguration erzeugt.
* Später können hier echte SNMP-Queries (z. B. über die PHP-SNMP-Extension) verwendet werden.
*
* @return array<string, mixed> Assoziatives Array mit Statuswerten (Hostname, CPU%, RAM%, etc.)
*
* @throws RuntimeException wenn die SNMP-Konfiguration unvollständig ist (z. B. host fehlt)
*/
public function getServerStatus(): array
{
// Hostnamen aus der SNMP-Konfiguration lesen.
$host = (string)($this->config['host'] ?? '');
// Ohne Host ist keine sinnvolle Abfrage möglich -> Konfigurationsfehler.
if ($host === '') {
throw new RuntimeException('SNMP-Konfiguration ist unvollständig (host fehlt).');
}
// TODO: Später hier echte SNMP-Abfragen einbauen (z. B. snmp2_get/snmp2_walk).
// Die OIDs können aus $this->config['oids'] gelesen werden.
// Für den Anfang verwenden wir dieselben Demo-Werte wie vorher im DashboardController.
$status = [
'hostname' => $host,
'os' => 'Windows Server 2025 Datacenter',
'uptime' => '3 Tage 12 Stunden',
'cpu_usage' => 23, // CPU-Auslastung in Prozent (Demo)
'memory_usage' => 62, // RAM-Auslastung in Prozent (Demo)
'disk_usage_c' => 71, // Datenträger C in Prozent (Demo)
'last_update' => date('d.m.Y H:i:s'), // Zeitpunkt der letzten Aktualisierung
];
return $status;
}
}

View File

@ -7,7 +7,7 @@ declare(strict_types=1);
return [
'ldap' => [
// LDAP-URL des Domain Controllers
'server' => 'ITFA-PROJ-SRV.ITFA-PROJ-DOM.local',
'server' => 'itfa-proj-srv.itfa-proj-dom.local',
'port' => 389,
// wird an den Benutzernamen angehängt (z.B. "admin" + "@ITFA-PROJ-DOM.local")
@ -24,4 +24,19 @@ return [
// Session-Key unter dem der eingeloggte Admin gespeichert wird
'session_key_user' => 'admin_user',
],
'snmp' => [
'host' => 'itfa-proj-srv.itfa-proj-dom.local',
'community' => 'public_ro', // später: sinnvoller Community-String
'timeout' => 2, // Sekunden
'retries' => 1, // Anzahl Wiederholungen
// Platzhalter für OIDs später können wir die auf echte Werte setzen
'oids' => [
'uptime' => '1.3.6.1.2.1.1.3.0',
'cpu_usage' => '1.3.6.1.4.1.example.cpu.0',
'memory_usage' => '1.3.6.1.4.1.example.memory.0',
'disk_c' => '1.3.6.1.4.1.example.diskc.0',
],
],
];

View File

@ -31,7 +31,7 @@
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -43,7 +43,7 @@
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span>
</a>
@ -365,7 +365,7 @@
<div class="error mx-auto" data-text="404">404</div>
<p class="lead text-gray-800 mb-5">Page Not Found</p>
<p class="text-gray-500 mb-0">It looks like you found a glitch in the matrix...</p>
<a href="dashboard.php">&larr; Back to Dashboard</a>
<a href="views/dashboard.php">&larr; Back to Dashboard</a>
</div>
</div>

View File

@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -46,6 +46,7 @@ if (file_exists($configPath) === false) {
$config = require $configPath;
use App\Controllers\AuthController;
use App\Controllers\DashboardController;
// Hilfsfunktion für geschützte Routen
function requireLogin(array $config): void
@ -67,6 +68,9 @@ $route = $_GET['route'] ?? 'login';
// Neue Instanz der Klasse AuthController erstellen (wird bei Bedarf über den Autoloader geladen).
$authController = new AuthController($config);
// Neue Instanz der Klasse DashboardController erstellen (wird bei Bedarf über den Autoloader geladen).
$dashboardController = new DashboardController($config);
// Anhand des Routing-Ziels (route) entscheiden, welcher Code ausgeführt wird.
switch ($route) {
case 'login':
@ -87,10 +91,7 @@ switch ($route) {
case 'dashboard':
requireLogin($config);
// Später: DashboardController aufrufen
echo '<h1>Dashboard (Platzhalter)</h1>';
echo '<p>Hier kommt später dein SNMP/Server-Status hin.</p>';
echo '<p><a href="index.php?route=logout">Logout</a></p>';
$dashboardController->show();
break;
default:

View File

@ -65,10 +65,10 @@
Register Account
</a>
<hr>
<a href="dashboard.php" class="btn btn-google btn-user btn-block">
<a href="views/dashboard.php" class="btn btn-google btn-user btn-block">
<i class="fab fa-google fa-fw"></i> Register with Google
</a>
<a href="dashboard.php" class="btn btn-facebook btn-user btn-block">
<a href="views/dashboard.php" class="btn btn-facebook btn-user btn-block">
<i class="fab fa-facebook-f fa-fw"></i> Register with Facebook
</a>
</form>

View File

@ -39,7 +39,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -51,7 +51,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="views/dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="dashboard.php">
<a class="nav-link" href="views/dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>

View File

@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
/** @var array<string, mixed> $serverStatus */
?>
<!DOCTYPE html>
<html lang="en">
@ -17,13 +17,13 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<title>SB Admin 2 - Dashboard</title>
<!-- Custom fonts for this template-->
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
<link href="../vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
<link
href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i"
rel="stylesheet">
<!-- Custom styles for this template-->
<link href="css/sb-admin-2.min.css" rel="stylesheet">
<link href="../css/sb-admin-2.min.css" rel="stylesheet">
</head>
@ -36,7 +36,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.html">
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="dashboard.php">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
@ -48,7 +48,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" href="dashboard.html">
<a class="nav-link" href="dashboard.php">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>
@ -71,8 +71,8 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Custom Components:</h6>
<a class="collapse-item" href="buttons.php">Buttons</a>
<a class="collapse-item" href="cards.php">Cards</a>
<a class="collapse-item" href="../buttons.php">Buttons</a>
<a class="collapse-item" href="../cards.php">Cards</a>
</div>
</div>
</li>
@ -88,10 +88,10 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Custom Utilities:</h6>
<a class="collapse-item" href="utilities-color.php">Colors</a>
<a class="collapse-item" href="utilities-border.php">Borders</a>
<a class="collapse-item" href="utilities-animation.php">Animations</a>
<a class="collapse-item" href="utilities-other.php">Other</a>
<a class="collapse-item" href="../utilities-color.php">Colors</a>
<a class="collapse-item" href="../utilities-border.php">Borders</a>
<a class="collapse-item" href="../utilities-animation.php">Animations</a>
<a class="collapse-item" href="../utilities-other.php">Other</a>
</div>
</div>
</li>
@ -115,26 +115,26 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Login Screens:</h6>
<a class="collapse-item" href="login.php">Login</a>
<a class="collapse-item" href="register.php">Register</a>
<a class="collapse-item" href="forgot-password.php">Forgot Password</a>
<a class="collapse-item" href="../register.php">Register</a>
<a class="collapse-item" href="../forgot-password.php">Forgot Password</a>
<div class="collapse-divider"></div>
<h6 class="collapse-header">Other Pages:</h6>
<a class="collapse-item" href="404.php">404 Page</a>
<a class="collapse-item" href="blank.php">Blank Page</a>
<a class="collapse-item" href="../404.php">404 Page</a>
<a class="collapse-item" href="../blank.php">Blank Page</a>
</div>
</div>
</li>
<!-- Nav Item - Charts -->
<li class="nav-item">
<a class="nav-link" href="charts.php">
<a class="nav-link" href="../charts.php">
<i class="fas fa-fw fa-chart-area"></i>
<span>Charts</span></a>
</li>
<!-- Nav Item - Tables -->
<li class="nav-item">
<a class="nav-link" href="tables.php">
<a class="nav-link" href="../tables.php">
<i class="fas fa-fw fa-table"></i>
<span>Tables</span></a>
</li>
@ -149,7 +149,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Sidebar Message -->
<div class="sidebar-card d-none d-lg-flex">
<img class="sidebar-card-illustration mb-2" src="images/undraw_rocket.svg" alt="...">
<img class="sidebar-card-illustration mb-2" src="../images/undraw_rocket.svg" alt="...">
<p class="text-center mb-2"><strong>SB Admin Pro</strong> is packed with premium features, components, and more!</p>
<a class="btn btn-success btn-sm" href="https://startbootstrap.com/theme/sb-admin-pro">Upgrade to Pro!</a>
</div>
@ -279,7 +279,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
</h6>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="images/undraw_profile_1.svg"
<img class="rounded-circle" src="../images/undraw_profile_1.svg"
alt="...">
<div class="status-indicator bg-success"></div>
</div>
@ -291,7 +291,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="images/undraw_profile_2.svg"
<img class="rounded-circle" src="../images/undraw_profile_2.svg"
alt="...">
<div class="status-indicator"></div>
</div>
@ -303,7 +303,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="images/undraw_profile_3.svg"
<img class="rounded-circle" src="../images/undraw_profile_3.svg"
alt="...">
<div class="status-indicator bg-warning"></div>
</div>
@ -337,7 +337,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="mr-2 d-none d-lg-inline text-gray-600 small">Douglas McGee</span>
<img class="img-profile rounded-circle"
src="images/undraw_profile.svg">
src="../images/undraw_profile.svg">
</a>
<!-- Dropdown - User Information -->
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
@ -382,34 +382,27 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<!-- Earnings (Monthly) Card Example -->
<div class="col-xl-3 col-md-6 mb-4">
<div class="card border-left-primary shadow h-100 py-2">
<div class="card border-left-info shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-primary text-uppercase mb-1">
Earnings (Monthly)</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">$40,000</div>
<div class="text-xs font-weight-bold text-info text-uppercase mb-1">CPU
</div>
<div class="row no-gutters align-items-center">
<div class="col-auto">
<div class="h5 mb-0 mr-3 font-weight-bold text-gray-800"><?php echo (int)$serverStatus['cpu_usage']; ?>%</div>
</div>
<div class="col">
<div class="progress progress-sm mr-2">
<div class="progress-bar bg-info" role="progressbar"
style=<?php echo"\"width:". (int)$serverStatus['cpu_usage'] . "%\""; ?> aria-valuenow=<?php echo"\"". (int)$serverStatus['cpu_usage'] . "\""; ?> aria-valuemin="0"
aria-valuemax="100"></div>
</div>
</div>
</div>
</div>
<div class="col-auto">
<i class="fas fa-calendar fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Earnings (Monthly) Card Example -->
<div class="col-xl-3 col-md-6 mb-4">
<div class="card border-left-success shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-success text-uppercase mb-1">
Earnings (Annual)</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">$215,000</div>
</div>
<div class="col-auto">
<i class="fas fa-dollar-sign fa-2x text-gray-300"></i>
<i class="fas fa-clipboard-list fa-2x text-gray-300"></i>
</div>
</div>
</div>
@ -422,17 +415,46 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-info text-uppercase mb-1">Tasks
<div class="text-xs font-weight-bold text-info text-uppercase mb-1">RAM
</div>
<div class="row no-gutters align-items-center">
<div class="col-auto">
<div class="h5 mb-0 mr-3 font-weight-bold text-gray-800">50%</div>
<div class="h5 mb-0 mr-3 font-weight-bold text-gray-800"><?php echo (int)$serverStatus['memory_usage']; ?>%</div>
</div>
<div class="col">
<div class="progress progress-sm mr-2">
<div class="progress-bar bg-info" role="progressbar"
style="width: 50%" aria-valuenow="50" aria-valuemin="0"
aria-valuemax="100"></div>
style=<?php echo"\"width:". (int)$serverStatus['memory_usage'] . "%\""; ?> aria-valuenow=<?php echo"\"". (int)$serverStatus['memory_usage'] . "\""; ?> aria-valuemin="0"
aria-valuemax="100"></div>
</div>
</div>
</div>
</div>
<div class="col-auto">
<i class="fas fa-clipboard-list fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Earnings (Monthly) Card Example -->
<div class="col-xl-3 col-md-6 mb-4">
<div class="card border-left-info shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-info text-uppercase mb-1">HDD (C:)
</div>
<div class="row no-gutters align-items-center">
<div class="col-auto">
<div class="h5 mb-0 mr-3 font-weight-bold text-gray-800"><?php echo (int)$serverStatus['disk_usage_c']; ?>%</div>
</div>
<div class="col">
<div class="progress progress-sm mr-2">
<div class="progress-bar bg-info" role="progressbar"
style=<?php echo"\"width:". (int)$serverStatus['disk_usage_c'] . "%\""; ?> aria-valuenow=<?php echo"\"". (int)$serverStatus['disk_usage_c'] . "\""; ?> aria-valuemin="0"
aria-valuemax="100"></div>
</div>
</div>
</div>
@ -667,7 +689,7 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
<div class="card-body">
<div class="text-center">
<img class="img-fluid px-3 px-sm-4 mt-3 mb-4" style="width: 25rem;"
src="images/undraw_posting_photo.svg" alt="...">
src="../images/undraw_posting_photo.svg" alt="...">
</div>
<p>Add some quality, svg illustrations to your project courtesy of <a
target="_blank" rel="nofollow" href="https://undraw.co/">unDraw</a>, a
@ -743,21 +765,21 @@ require_once __DIR__ . '/../app/Helpers/AuthenticatedUserHelper.php';
</div>
<!-- Bootstrap core JavaScript-->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="../vendor/jquery/jquery.min.js"></script>
<script src="../vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Core plugin JavaScript-->
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<script src="../vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom scripts for all pages-->
<script src="js/sb-admin-2.min.js"></script>
<script src="../js/sb-admin-2.min.js"></script>
<!-- Page level plugins -->
<script src="vendor/chart.js/Chart.min.js"></script>
<script src="../vendor/chart.js/Chart.min.js"></script>
<!-- Page level custom scripts -->
<script src="js/demo/chart-area-demo.js"></script>
<script src="js/demo/chart-pie-demo.js"></script>
<script src="../js/demo/chart-area-demo.js"></script>
<script src="../js/demo/chart-pie-demo.js"></script>
</body>