// 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': '*' } }); } }