aboutsummaryrefslogtreecommitdiff
path: root/proxy/proxy.php
diff options
context:
space:
mode:
Diffstat (limited to 'proxy/proxy.php')
-rw-r--r--proxy/proxy.php34
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');
+ }
+?>