diff options
Diffstat (limited to 'proxy/proxy.php')
-rw-r--r-- | proxy/proxy.php | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/proxy/proxy.php b/proxy/proxy.php new file mode 100644 index 0000000..3985308 --- /dev/null +++ b/proxy/proxy.php @@ -0,0 +1,34 @@ +<?php + // Secret key to use this script + $secret = ''; + // HTTP authorization (USERNAME:PASSWORD Base64 encoded) + $authorization = ''; + + if (isset($_GET['secret']) && $_GET['secret'] == $secret && isset($_GET['url']) && !empty($_GET['url'])) { + + $request_headers = array('Authorization: Basic '.$authorization); + $url = $_GET['url']; + + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_HTTPHEADER, $request_headers); + $content = curl_exec($curl); + $contenttype = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); + curl_close($curl); + + if (str_starts_with($contenttype, 'text/html')) { + $proxyurl = substr($url, 0, strrpos($url, '/') + 1); + $scripturl = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?secret='.$secret.'&'; + + $content = preg_replace('#href="(?!https)(.+)"#i', 'href="'.$scripturl.'url='.$proxyurl.'$1"', $content); + $content = preg_replace('#src="(?!https)(.+)"#i', 'src="'.$scripturl.'url='.$proxyurl.'$1"', $content); + } + + header('Content-Type: '.$contenttype); + echo $content; + + } else { + throw new Exception('Insufficient request'); + } +?> |