forked from Business/BinStack
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /*
 | |
|  * This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
|  */
 | |
| 
 | |
| require __DIR__ . '/../required.php';
 | |
| require __DIR__ . '/functions.php';
 | |
| require __DIR__ . '/apisettings.php';
 | |
| 
 | |
| header("Access-Control-Allow-Origin: *");
 | |
| 
 | |
| $VARS = $_GET;
 | |
| if ($_SERVER['REQUEST_METHOD'] != "GET") {
 | |
|     $VARS = array_merge($VARS, $_POST);
 | |
| }
 | |
| 
 | |
| $requestbody = file_get_contents('php://input');
 | |
| $requestjson = json_decode($requestbody, TRUE);
 | |
| if (json_last_error() == JSON_ERROR_NONE) {
 | |
|     $VARS = array_merge($VARS, $requestjson);
 | |
| }
 | |
| 
 | |
| // If we're not using the old api.php file, allow more flexible requests
 | |
| if (strpos($_SERVER['REQUEST_URI'], "/api.php") === FALSE) {
 | |
|     $route = explode("/", substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], "api/") + 4));
 | |
| 
 | |
|     if (count($route) >= 1) {
 | |
|         $VARS["action"] = $route[0];
 | |
|     }
 | |
|     if (count($route) >= 2 && strpos($route[1], "?") !== 0) {
 | |
|         for ($i = 1; $i < count($route); $i++) {
 | |
|             if (empty($route[$i]) || strpos($route[$i], "=") === false) {
 | |
|                 continue;
 | |
|             }
 | |
|             $key = explode("=", $route[$i], 2)[0];
 | |
|             $val = explode("=", $route[$i], 2)[1];
 | |
|             $VARS[$key] = $val;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     if (strpos($route[count($route) - 1], "?") === 0) {
 | |
|         $morevars = explode("&", substr($route[count($route) - 1], 1));
 | |
|         foreach ($morevars as $var) {
 | |
|             $key = explode("=", $var, 2)[0];
 | |
|             $val = explode("=", $var, 2)[1];
 | |
|             $VARS[$key] = $val;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| if (!authenticate()) {
 | |
|     header('WWW-Authenticate: Basic realm="' . $SETTINGS['site_title'] . '"');
 | |
|     header('HTTP/1.1 401 Unauthorized');
 | |
|     die("401 Unauthorized: you need to supply valid credentials.");
 | |
| }
 | |
| 
 | |
| if (empty($VARS['action'])) {
 | |
|     http_response_code(404);
 | |
|     die("404 No action specified");
 | |
| }
 | |
| 
 | |
| if (!isset($APIS[$VARS['action']])) {
 | |
|     http_response_code(404);
 | |
|     die("404 Action not defined");
 | |
| }
 | |
| 
 | |
| $APIACTION = $APIS[$VARS["action"]];
 | |
| 
 | |
| if (!file_exists(__DIR__ . "/actions/" . $APIACTION["load"])) {
 | |
|     http_response_code(404);
 | |
|     die("404 Action not found");
 | |
| }
 | |
| 
 | |
| if (!empty($APIACTION["vars"])) {
 | |
|     checkVars($APIACTION["vars"]);
 | |
| }
 | |
| 
 | |
| require_once __DIR__ . "/actions/" . $APIACTION["load"];
 |