/** * Reescribe URLs en archivos JavaScript * * @param string $js Contenido JavaScript * @return string JavaScript reescrito */ function rewriteJs($js) { // Extraer dominios para buscar y reemplazar $target_domain = parse_url(TARGET_HOST, PHP_URL_HOST); $proxy_domain = parse_url(PROXY_HOST, PHP_URL_HOST); // 1. Reemplazar URLs absolutas (https://dinorank.com/...) $js = str_replace(TARGET_HOST, PROXY_HOST, $js); // 2. Reemplazar URLs sin protocolo (//dinorank.com/...) $js = str_replace('//' . $target_domain, '//' . $proxy_domain, $js); // 3. Reemplazar dominios en strings $js = preg_replace('/(["\'])(https?:)?\/\/' . preg_quote($target_domain, '/') . '([^"\']*+)(["\'])/i', '$1$2//' . $proxy_domain . '$3$4', $js ); // 4. Reemplazar dominios en objetos y configuraciones $js = preg_replace('/(["\']?)domain(["\']?)\s*:\s*(["\'])' . preg_quote($target_domain, '/') . '(["\'])/i', '$1domain$2:$3' . $proxy_domain . '$4', $js ); return $js; }/** * Función principal que controla el flujo de la aplicación */ function main() { // Verificar autenticación if (!isAuthenticated()) { showLoginForm(); return; } // Si es la primera vez que accede después de autenticarse y está en la raíz, // redirigir a la herramienta (homed) if ($_SESSION['first_login'] && $_SERVER['REQUEST_URI'] === '/') { $_SESSION['first_login'] = false; header('Location: ' . DEFAULT_LANDING_PAGE); exit; } // Procesamiento de recursos estáticos $uri = $_SERVER['REQUEST_URI']; // Verificar si es una solicitud de recurso estático $is_static = preg_match('/\.(jpe?g|png|gif|svg|css|js|ico|woff2?|ttf|eot)(\?.*)?$/i', $uri); // Para algunos recursos específicos, servir directamente desde el servidor original if ($is_static && strpos($uri, '/img/') !== false) { // Servir recursos de imágenes directamente desde el servidor origen proxyStaticResource($uri); return; } // Ejecutar el proxy normal proxyRequest(); } /** * Proxy para recursos estáticos * * @param string $uri URI del recurso */ function proxyStaticResource($uri) { // Construir URL completa $url = TARGET_HOST . $uri; // Enviar petición al servidor de origen $curl = curl_init($url); curl_setopt_array($curl, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => 5, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, ]); $response = curl_exec($curl); if ($response === false) { header('HTTP/1.1 404 Not Found'); echo 'Recurso no encontrado'; exit; } $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $headers_str = substr($response, 0, $header_size); $body/** * Reescribe URLs en archivos CSS * * @param string $css Contenido CSS * @return string CSS reescrito */ function rewriteCss($css) { // Extraer dominios para buscar y reemplazar $target_domain = parse_url(TARGET_HOST, PHP_URL_HOST); $proxy_domain = parse_url(PROXY_HOST, PHP_URL_HOST); // 1. Reemplazar URLs absolutas (https://dinorank.com/...) $css = str_replace(TARGET_HOST, PROXY_HOST, $css); // 2. Reemplazar URLs sin protocolo (//dinorank.com/...) $css = str_replace('//' . $target_domain, '//' . $proxy_domain, $css); // 3. Reemplazar URLs en la sintaxis url(...) $css = preg_replace_callback('/url\([\'"]?((?!data:)[^)\'"]++)[\'"]?\)/i', function($matches) { $url = $matches[1]; // Si la URL no es absoluta y no comienza con / añadimos / if (!preg_match('~^(https?:)?//|/~', $url)) { $url = '/' . $url; } return 'url("' . rewriteUrl($url) . '")'; }, $css ); return $css; } Acceso Proxy DinoRank

Acceso Proxy DinoRank