<?php

$remote = "http://54.157.172.241:2412";

$uri = $_SERVER['REQUEST_URI'];

$url = $remote . $uri;

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $_SERVER['REQUEST_METHOD']);


// BODY
$body = file_get_contents("php://input");

if ($body) {
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
}


// HEADERS
$headers = [];

foreach (getallheaders() as $name => $value) {

    $nameLower = strtolower($name);

    if (
        $nameLower == 'host' ||
        $nameLower == 'content-length'
    ) {
        continue;
    }

    $headers[] = "$name: $value";
}

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);


// SSL
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);


// EXECUTE
$response = curl_exec($ch);

if ($response === false) {

    http_response_code(500);

    die(curl_error($ch));
}


// STATUS
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

http_response_code($status);


// SPLIT
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);

$rawHeaders = substr($response, 0, $headerSize);

$content = substr($response, $headerSize);


// REWRITE LOCATION
$proxyDomain = "https://yait.4pt.pe";

foreach (explode("\r\n", $rawHeaders) as $header) {

    if (stripos($header, 'Location:') === 0) {

        $header = str_replace(
            $remote,
            $proxyDomain,
            $header
        );
    }

    if (
        stripos($header, 'Content-Length') === false &&
        stripos($header, 'Transfer-Encoding') === false
    ) {

        header($header, false);
    }
}


// REWRITE HTML
$content = str_replace(
    $remote,
    $proxyDomain,
    $content
);


// CORS
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: *");
header("Access-Control-Allow-Headers: *");

echo $content;

curl_close($ch);