true, 'customAdminRangesJson' => '{"segmentos":[{"segmento":"18","administrativas_iniciales":[{"inicio":1,"hasta":50}],"administrativas_finales":[{"inicio":253,"hasta":255}]},{"segmento":"15","administrativas_iniciales":[{"inicio":2,"hasta":30}],"administrativas_finales":[{"inicio":253,"hasta":255}]},{"segmento":"13","administrativas_iniciales":[{"inicio":2,"hasta":60}],"administrativas_finales":[{"inicio":253,"hasta":255}]}]}' ]; $ip = "172.16.13.52"; echo "Probando IP: $ip\n"; echo "Config JSON: " . $config['customAdminRangesJson'] . "\n"; $parts = explode('.', $ip); $segment = $parts[2]; echo "Segmento extraído: $segment\n"; $limits = AdminRangeHelper::getSegmentLimits($segment, $config['customAdminRangesJson']); if ($limits) { echo "Límites encontrados para segmento $segment:\n"; print_r($limits); } else { echo "NO se encontraron límites para segmento $segment\n"; } $isAdmin = AdminRangeHelper::isAdminIpCustom($ip, $config['customAdminRangesJson']); echo "Es Admin IP (Custom)? " . ($isAdmin ? "SI" : "NO") . "\n"; // Prueba de la lógica completa de IpSearchService (simulada) function isAdminIp($ip, $config) { if (!empty($config['useCustomAdminRanges']) && !empty($config['customAdminRangesJson'])) { $parts = explode('.', $ip); if (count($parts) === 4) { $segment = $parts[2]; $limits = AdminRangeHelper::getSegmentLimits($segment, $config['customAdminRangesJson']); if ($limits !== null) { echo "[DEBUG] Usando rangos custom para segmento $segment\n"; return AdminRangeHelper::isAdminIpCustom($ip, $config['customAdminRangesJson']); } else { echo "[DEBUG] Fallback a rangos globales para segmento $segment\n"; } } } return false; // Simplificado } $result = isAdminIp($ip, $config); echo "Resultado final isAdminIp: " . ($result ? "TRUE" : "FALSE") . "\n";