68 lines
1.9 KiB
PHP
68 lines
1.9 KiB
PHP
<?php
|
|
// Router simple basado en ?r=nombre (sin .php)
|
|
$route = isset($_GET['r']) ? preg_replace('/[^a-zA-Z0-9_\-]/', '', $_GET['r']) : '';
|
|
if (!$route) {
|
|
require_once __DIR__ . '/bootstrap.php';
|
|
json_error('Ruta no especificada', 404);
|
|
}
|
|
|
|
$map = [
|
|
// Dispositivos (consolidado)
|
|
'get_dispositivos' => 'api_dispositivos.php',
|
|
'add_dispositivo' => 'api_dispositivos.php',
|
|
'update_dispositivo' => 'api_dispositivos.php',
|
|
'delete_dispositivo' => 'api_dispositivos.php',
|
|
'edit_dispositivo' => 'api_dispositivos.php',
|
|
|
|
// Sectores (consolidado)
|
|
'get_sectores' => 'api_sectores.php',
|
|
'add_sector' => 'api_sectores.php',
|
|
'update_sector' => 'api_sectores.php',
|
|
'delete_sector' => 'api_sectores.php',
|
|
|
|
// Puertos (consolidado)
|
|
'get_puertos' => 'api_puertos.php',
|
|
'update_puertos' => 'api_puertos.php',
|
|
'asignar_puertos' => 'api_puertos.php',
|
|
|
|
// Reglas de automatización
|
|
'get_reglas' => 'api_reglas.php',
|
|
'save_reglas' => 'api_reglas.php',
|
|
'delete_regla' => 'api_reglas.php',
|
|
'toggle_regla' => 'api_reglas.php',
|
|
|
|
// Otros
|
|
'add_entidad' => 'add_entidad.php',
|
|
'mqtt_publish' => 'mqtt_publish.php',
|
|
'mqtt_config' => 'mqtt_config.php',
|
|
'login' => 'login.php',
|
|
'logout' => 'logout.php',
|
|
'me' => 'me.php',
|
|
'estado' => 'estado.php'
|
|
];
|
|
|
|
if (!isset($map[$route])) {
|
|
require_once __DIR__ . '/bootstrap.php';
|
|
json_error('Ruta no encontrada', 404);
|
|
}
|
|
|
|
require_once __DIR__ . '/bootstrap.php';
|
|
|
|
$whitelist = ['login', 'estado'];
|
|
if (!in_array($route, $whitelist, true)) {
|
|
if (session_status() !== PHP_SESSION_ACTIVE) {
|
|
session_start();
|
|
}
|
|
if (empty($_SESSION['user'])) {
|
|
json_error('No autenticado', 401);
|
|
}
|
|
}
|
|
|
|
$target = __DIR__ . '/' . $map[$route];
|
|
if (!file_exists($target)) {
|
|
json_error('Handler no disponible', 500);
|
|
}
|
|
|
|
// Incluir el handler seleccionado
|
|
require $target;
|