diff --git a/services/proxy/html/virt/index.php b/services/proxy/html/virt/index.php new file mode 100644 index 00000000..cd46d7d9 --- /dev/null +++ b/services/proxy/html/virt/index.php @@ -0,0 +1,114 @@ +$ip on port 80 - make sure that domain $domen exists on the server $ip and has SSL certificate.
"; + if (strpos($errorMessage, 'SSL') !== false) { + curl_close($ch); + echo "response:
" . $errorMessage . "
"; + } else { + http_response_code(500); + curl_close($ch); + echo "response:
" . curl_error($ch) . "
"; + exit; + } +} + + +// Return proper types for extensions +$filePath = parse_url($targetUrl, PHP_URL_PATH); +$fileExtension = pathinfo($filePath, PATHINFO_EXTENSION); +if (substr($fileExtension, -4) === '.jpg') { + $fileExtension = 'jpg'; +} + +switch (strtolower($fileExtension)) { + case 'svg': + header("Content-Type: image/svg+xml"); + break; + case 'png': + header("Content-Type: image/png"); + break; + case 'jpg': + case 'jpeg': + header("Content-Type: image/jpeg"); + break; + case 'gif': + header("Content-Type: image/gif"); + break; + case 'bmp': + header("Content-Type: image/bmp"); + break; + case 'webp': + header("Content-Type: image/webp"); + break; + case 'css': + header("Content-Type: text/css"); + break; + case 'js': + header("Content-Type: application/javascript"); + break; + case 'txt': + header("Content-Type: text/plain"); + break; + case 'ttf': + header("Content-Type: font/ttf"); + break; + default: + header("Content-Type: text/html"); +} + + +// matches: /domain http://domain https://domain https:\/\/domain http://www.domain https://www.domain +$visitingDomain = $_SERVER['HTTP_HOST']; +$response = str_replace( + ["/$domen", "http://$domen", "https://$domen", "http://www.$domen", "https://www.$domen"], + ["/$visitingDomain", "$scheme$visitingDomain", "$scheme$visitingDomain", "$scheme$visitingDomain", "$scheme$visitingDomain"], + $response +); + + +header("Access-Control-Allow-Origin: *"); +header("Access-Control-Allow-Headers: Content-Type"); + +echo $response; +curl_close($ch); +?>