dptxa-proxy / src /pages /api /video /resolve.js
TXAVLOG
Deploy DPTXA to Hugging Face Spaces
4bea261
Raw
History Blame Contribute Delete
2.31 kB
// src/pages/api/video/resolve.js
// Ultra-Premium SSL Guard Auto-Resolver
// Automatically upgrades untrusted SSL direct streams to use Cloudflare R2 Proxy
export const prerender = false;
export async function GET({ request }) {
const urlObj = new URL(request.url);
const base64Url = urlObj.searchParams.get('url');
if (!base64Url) {
return new Response(JSON.stringify({ success: false, error: 'Missing parameter: url' }), {
status: 400,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}
});
}
try {
// Decode base64 URL sent by txaplayer SSL Guard
const decodedUrl = atob(decodeURIComponent(base64Url));
console.log('[API Video Resolve] SSL Guard triggered for:', decodedUrl);
const cloudflareProxy = import.meta.env.PUBLIC_CLOUDFLARE_PROXY_URL;
let resolvedUrl = decodedUrl;
// Check if the domain is known to geo-block or block Cloudflare Workers (e.g., phimmoi.net)
const isCloudflareBlocked = decodedUrl.includes('phimmoi.net') ||
decodedUrl.includes('streamvda.top');
if (isCloudflareBlocked) {
resolvedUrl = `/api/proxy-media?url=${encodeURIComponent(decodedUrl)}`;
console.log('[API Video Resolve] Upgrading to Vercel Fallback Proxy (Forced due to geo-blocking/Cloudflare restriction):', resolvedUrl);
} else if (cloudflareProxy) {
resolvedUrl = `${cloudflareProxy}/?url=${encodeURIComponent(decodedUrl)}`;
console.log('[API Video Resolve] Upgrading to Cloudflare Proxy:', resolvedUrl);
} else {
resolvedUrl = `/api/proxy-media?url=${encodeURIComponent(decodedUrl)}`;
console.log('[API Video Resolve] Upgrading to Vercel Fallback Proxy:', resolvedUrl);
}
return new Response(JSON.stringify({ success: true, url: resolvedUrl }), {
status: 200,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}
});
} catch (e) {
console.error('[API Video Resolve] Error decoding URL:', e);
return new Response(JSON.stringify({ success: false, error: e.message }), {
status: 500,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}
});
}
}