getHost(), ['127.0.0.1', 'localhost', '::1'], true)
|| !is_file($marker) || trim(file_get_contents($marker)) !== $origin) {
return $html;
}
// A stale marker after an interrupted process falls back to built assets.
$socket = @fsockopen('127.0.0.1', 5173, $error, $message, 0.1);
if (!$socket) return $html;
fclose($socket);
$html = preg_replace('##', '', $html);
$html = preg_replace('#]*href="/theme/Stellar/assets/[^"]+"[^>]*>#', '', $html);
$html = str_replace('src="/theme/Stellar/env.js"', 'src="'.$origin.'/env.js"', $html);
// Allow only this loopback dev origin; production HTML is left unchanged.
$html = str_replace("script-src 'self'", "script-src 'self' ".$origin, $html);
$html = str_replace("style-src 'self'", "style-src 'self' ".$origin, $html);
$html = str_replace("connect-src 'self'", "connect-src 'self' ".$origin." ws://127.0.0.1:5173", $html);
$html = str_replace("img-src 'self'", "img-src 'self' ".$origin, $html);
$html = str_replace("font-src 'self'", "font-src 'self' ".$origin, $html);
$scripts = ''
.'';
return str_replace('', $scripts.'', $html);
}
}