From 1dbd439061b88bfe3ec1b8589dbc67a5bf473f0b Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:04:18 -0500 Subject: [PATCH] Update chat_window.php --- chat_window.php | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/chat_window.php b/chat_window.php index fd6101c..d3cf7cf 100644 --- a/chat_window.php +++ b/chat_window.php @@ -548,6 +548,24 @@ if (empty($user_id)) { function isValidMediaUrl(u) { return (typeof u === 'string') && u.trim() !== '' && u !== 'null' && u !== 'undefined'; } + + // Helper: mapear URLs externas a proxy seguro cuando sea necesario + function ensureProxyUrl(u, download = false) { + if (!isValidMediaUrl(u)) return ''; + // Si ya es una URL interna o una ruta proxy, devolverla tal cual + if (u.startsWith('/') || u.indexOf('/api/version/media-url.php') === 0) return u; + try { + const parsed = new URL(u); + const host = parsed.host.toLowerCase(); + // Si es Facebook lookaside / graph, preferir proxy para aƱadir Authorization + if (host.includes('lookaside.fbsbx.com') || host.includes('facebook.com') || host.includes('graph.facebook.com')) { + return `/api/version/media-url.php?url=${encodeURIComponent(u)}${download ? '&download=1' : ''}`; + } + } catch (e) { + // Si no es URL absoluta, devolver tal cual + } + return u; + } // Cargar datos del usuario y mensajes async function loadUserData() { @@ -711,7 +729,11 @@ if (empty($user_id)) { break; case 'video': // Determinar mejor fuente de media - const mediaSrcVid = isValidMediaUrl(fullUrl) ? fullUrl : (isValidMediaUrl(thumbUrl) ? thumbUrl : (isValidMediaUrl(msg.media_url) ? msg.media_url : (isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : ''))); + let mediaSrcVid = isValidMediaUrl(fullUrl) ? fullUrl : (isValidMediaUrl(thumbUrl) ? thumbUrl : (isValidMediaUrl(msg.media_url) ? msg.media_url : (isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : ''))); + // Mapear a proxy si es necesario (Facebook/media protegida) + if (isValidMediaUrl(mediaSrcVid)) { + mediaSrcVid = ensureProxyUrl(mediaSrcVid); + } console.debug('video media src:', mediaSrcVid, 'fullUrl:', fullUrl, 'thumbUrl:', thumbUrl, 'msg.media_url:', msg.media_url, 'msg.media_url_external:', msg.media_url_external); if (isValidMediaUrl(mediaSrcVid)) { contentHtml = `