Update chat_window.php
This commit is contained in:
+28
-2
@@ -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 = `<video controls class="message-media-video">
|
||||
@@ -724,7 +746,11 @@ if (empty($user_id)) {
|
||||
break;
|
||||
case 'audio':
|
||||
// Determinar mejor fuente de media para audio
|
||||
const mediaSrcAudio = isValidMediaUrl(fullUrl) ? fullUrl : (isValidMediaUrl(thumbUrl) ? thumbUrl : (isValidMediaUrl(msg.media_url) ? msg.media_url : (isValidMediaUrl(msg.media_url_external) ? msg.media_url_external : '')));
|
||||
let mediaSrcAudio = 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(mediaSrcAudio)) {
|
||||
mediaSrcAudio = ensureProxyUrl(mediaSrcAudio);
|
||||
}
|
||||
if (isValidMediaUrl(mediaSrcAudio)) {
|
||||
contentHtml = `<audio controls class="message-media-audio">
|
||||
<source src="${escapeHtml(mediaSrcAudio)}" type="audio/webm">
|
||||
|
||||
Reference in New Issue
Block a user