| <?php |
| require_once '../../resources/portabilityLayer.php'; |
| |
| $tmpFile = sys_get_temp_dir() . "/" . $_GET["test"]; |
| |
| function fail($state) |
| { |
| header("Access-Control-Allow-Origin: http://127.0.0.1:8000"); |
| header("Access-Control-Allow-Credentials: true"); |
| header("Access-Control-Allow-Methods: GET"); |
| header("Access-Control-Max-Age: 1"); |
| echo "FAILED: Issued a " . $_SERVER['REQUEST_METHOD'] . " request during state '" . $state . "'\n"; |
| exit(); |
| } |
| |
| function setState($newState, $file) |
| { |
| file_put_contents($file, $newState); |
| } |
| |
| function getState($file) |
| { |
| $state = NULL; |
| if (file_exists($file)) |
| $state = file_get_contents($file); |
| return $state ? $state : "Uninitialized"; |
| } |
| |
| $state = getState($tmpFile); |
| |
| if ($_SERVER['REQUEST_METHOD'] == "GET" |
| && $_GET['state'] == "reset") { |
| if (file_exists($tmpFile)) unlink($tmpFile); |
| header("Access-Control-Allow-Origin: http://127.0.0.1:8000"); |
| header("Access-Control-Max-Age: 1"); |
| echo "Server state reset.\n"; |
| } else if ($state == "Uninitialized") { |
| if ($_SERVER['REQUEST_METHOD'] == "OPTIONS") { |
| if ($_GET['state'] == "method" || $_GET['state'] == "header") { |
| header("Access-Control-Allow-Methods: GET"); |
| header("Access-Control-Allow-Origin: http://127.0.0.1:8000"); |
| header("Access-Control-Max-Age: 1"); |
| } |
| echo("FAIL: This request should not be displayed.\n"); |
| setState("Denied", $tmpFile); |
| } else { |
| fail($state); |
| } |
| } else if ($state == "Denied") { |
| if ($_SERVER['REQUEST_METHOD'] == "GET" |
| && $_GET['state'] == "complete") { |
| unlink($tmpFile); |
| header("Access-Control-Allow-Origin: http://127.0.0.1:8000"); |
| header("Access-Control-Max-Age: 1"); |
| echo "PASS: Request successfully blocked.\n"; |
| } else { |
| setState("Deny Ignored", $tmpFile); |
| fail($state); |
| } |
| } else if ($state == "Deny Ignored") { |
| unlink($tmpFile); |
| fail($state); |
| } else { |
| if (file_exists($tmpFile)) unlink($tmpFile); |
| fail("Unknown"); |
| } |
| ?> |