Browse Source

Replace hardcoded status headers with calls to http_response_code()

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Morris Jobke 5 years ago
parent
commit
79d9841bce

+ 1 - 1
apps/files/ajax/list.php

@@ -38,7 +38,7 @@ $dir = \OC\Files\Filesystem::normalizePath($dir);
 try {
 	$dirInfo = \OC\Files\Filesystem::getFileInfo($dir);
 	if (!$dirInfo || !$dirInfo->getType() === 'dir') {
-		header("HTTP/1.0 404 Not Found");
+		http_response_code(404);
 		exit();
 	}
 

+ 3 - 4
apps/files_sharing/public.php

@@ -30,14 +30,13 @@ $route = isset($_GET['download']) ? 'files_sharing.sharecontroller.downloadShare
 if($token !== '') {
 	$protocol = \OC::$server->getRequest()->getHttpProtocol();
 	if ($protocol == 'HTTP/1.0') {
-		$status = '302 Found';
+		http_response_code(302);
 	} else {
-		$status = '307 Temporary Redirect';
+		http_response_code(307);
 	}
-	header($protocol.' ' . $status);
 	header('Location: ' . $urlGenerator->linkToRoute($route, array('token' => $token)));
 } else {
-	header('HTTP/1.0 404 Not Found');
+	http_response_code(404);
 	$tmpl = new OCP\Template('', '404', 'guest');
 	print_unescaped($tmpl->fetchPage());
 }

+ 1 - 1
apps/files_trashbin/ajax/list.php

@@ -34,7 +34,7 @@ $data = array();
 try {
 	$files = \OCA\Files_Trashbin\Helper::getTrashFiles($dir, \OCP\User::getUser(), $sortAttribute, $sortDirection);
 } catch (Exception $e) {
-	header("HTTP/1.0 404 Not Found");
+	http_response_code(404);
 	exit();
 }
 

+ 1 - 1
apps/files_versions/download.php

@@ -34,7 +34,7 @@ $revision=(int)$_GET['revision'];
 try {
 	list($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($file);
 } catch(\OCP\Files\NotFoundException $e) {
-	header("HTTP/1.1 404 Not Found");
+	http_response_code(404);
 	$tmpl = new OCP\Template('', '404', 'guest');
 	$tmpl->assign('file', '');
 	$tmpl->printPage();

+ 3 - 15
index.php

@@ -54,7 +54,7 @@ try {
 		\OC::$server->getLogger()->logException($ex2, array('app' => 'index'));
 
 		//show the user a detailed error page
-		OC_Template::printExceptionErrorPage($ex, \OC_Response::STATUS_INTERNAL_SERVER_ERROR);
+		OC_Template::printExceptionErrorPage($ex, 500);
 	}
 } catch (\OC\User\LoginException $ex) {
 	OC_Template::printErrorPage($ex->getMessage(), $ex->getMessage(), OC_Response::STATUS_FORBIDDEN);
@@ -62,24 +62,12 @@ try {
 	\OC::$server->getLogger()->logException($ex, array('app' => 'index'));
 
 	//show the user a detailed error page
-	OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR);
-	OC_Template::printExceptionErrorPage($ex);
+	OC_Template::printExceptionErrorPage($ex, 500);
 } catch (Error $ex) {
 	try {
 		\OC::$server->getLogger()->logException($ex, array('app' => 'index'));
 	} catch (Error $e) {
-
-		$claimedProtocol = strtoupper($_SERVER['SERVER_PROTOCOL']);
-		$validProtocols = [
-			'HTTP/1.0',
-			'HTTP/1.1',
-			'HTTP/2',
-		];
-		$protocol = 'HTTP/1.1';
-		if(in_array($claimedProtocol, $validProtocols, true)) {
-			$protocol = $claimedProtocol;
-		}
-		header($protocol . ' 500 Internal Server Error');
+		http_response_code(500);
 		header('Content-Type: text/plain; charset=utf-8');
 		print("Internal Server Error\n\n");
 		print("The server encountered an internal error and was unable to complete your request.\n");

+ 8 - 15
lib/base.php

@@ -287,8 +287,7 @@ class OC {
 		// Allow ajax update script to execute without being stopped
 		if (\OC::$server->getSystemConfig()->getValue('maintenance', false) && OC::$SUBURI != '/core/ajax/update.php') {
 			// send http status 503
-			header('HTTP/1.1 503 Service Temporarily Unavailable');
-			header('Status: 503 Service Temporarily Unavailable');
+			http_response_code(503);
 			header('Retry-After: 120');
 
 			// render error page
@@ -344,8 +343,7 @@ class OC {
 
 		if ($disableWebUpdater || ($tooBig && !$ignoreTooBigWarning)) {
 			// send http status 503
-			header('HTTP/1.1 503 Service Temporarily Unavailable');
-			header('Status: 503 Service Temporarily Unavailable');
+			http_response_code(503);
 			header('Retry-After: 120');
 
 			// render error page
@@ -600,9 +598,7 @@ class OC {
 
 		} catch (\RuntimeException $e) {
 			if (!self::$CLI) {
-				$claimedProtocol = strtoupper($_SERVER['SERVER_PROTOCOL']);
-				$protocol = in_array($claimedProtocol, ['HTTP/1.0', 'HTTP/1.1', 'HTTP/2']) ? $claimedProtocol : 'HTTP/1.1';
-				header($protocol . ' ' . OC_Response::STATUS_SERVICE_UNAVAILABLE);
+				http_response_code(503);
 			}
 			// we can't use the template error page here, because this needs the
 			// DI container which isn't available yet
@@ -689,7 +685,7 @@ class OC {
 					}
 					exit(1);
 				} else {
-					OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
+					http_response_code(503);
 					OC_Util::addStyle('guest');
 					OC_Template::printGuestPage('', 'error', array('errors' => $errors));
 					exit;
@@ -778,16 +774,14 @@ class OC {
 			}
 
 			if(substr($request->getRequestUri(), -11) === '/status.php') {
-				OC_Response::setStatus(\OC_Response::STATUS_BAD_REQUEST);
-				header('Status: 400 Bad Request');
+				http_response_code(400);
 				header('Content-Type: application/json');
 				echo '{"error": "Trusted domain error.", "code": 15}';
 				exit();
 			}
 
 			if (!$isScssRequest) {
-				OC_Response::setStatus(\OC_Response::STATUS_BAD_REQUEST);
-				header('Status: 400 Bad Request');
+				http_response_code(400);
 
 				\OC::$server->getLogger()->info(
 					'Trusted domain error. "{remoteAddress}" tried to access using "{host}" as host.',
@@ -997,7 +991,7 @@ class OC {
 			} catch (Symfony\Component\Routing\Exception\ResourceNotFoundException $e) {
 				//header('HTTP/1.0 404 Not Found');
 			} catch (Symfony\Component\Routing\Exception\MethodNotAllowedException $e) {
-				OC_Response::setStatus(405);
+				http_response_code(405);
 				return;
 			}
 		}
@@ -1007,8 +1001,7 @@ class OC {
 			// not allowed any more to prevent people
 			// mounting this root directly.
 			// Users need to mount remote.php/webdav instead.
-			header('HTTP/1.1 405 Method Not Allowed');
-			header('Status: 405 Method Not Allowed');
+			http_response_code(405);
 			return;
 		}
 

+ 2 - 2
lib/private/legacy/api.php

@@ -88,7 +88,7 @@ class OC_API {
 			} else {
 				header('WWW-Authenticate: Basic realm="Authorisation Required"');
 			}
-			header('HTTP/1.0 401 Unauthorized');
+			http_response_code(401);
 		}
 
 		foreach($result->getHeaders() as $name => $value) {
@@ -101,7 +101,7 @@ class OC_API {
 			$statusCode = self::mapStatusCodes($result->getStatusCode());
 			if (!is_null($statusCode)) {
 				$meta['statuscode'] = $statusCode;
-				OC_Response::setStatus($statusCode);
+				http_response_code($statusCode);
 			}
 		}
 

+ 4 - 4
lib/private/legacy/files.php

@@ -83,7 +83,7 @@ class OC_Files {
 		$type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
 		if ($fileSize > -1) {
 			if (!empty($rangeArray)) {
-			    header('HTTP/1.1 206 Partial Content', true);
+			    http_response_code(206);
 			    header('Accept-Ranges: bytes', true);
 			    if (count($rangeArray) > 1) {
 				$type = 'multipart/byteranges; boundary='.self::getBoundary();
@@ -286,12 +286,12 @@ class OC_Files {
 		if (\OC\Files\Filesystem::isReadable($filename)) {
 			self::sendHeaders($filename, $name, $rangeArray);
 		} elseif (!\OC\Files\Filesystem::file_exists($filename)) {
-			header("HTTP/1.1 404 Not Found");
+			http_response_code(404);
 			$tmpl = new OC_Template('', '404', 'guest');
 			$tmpl->printPage();
 			exit();
 		} else {
-			header("HTTP/1.1 403 Forbidden");
+			http_response_code(403);
 			die('403 Forbidden');
 		}
 		if (isset($params['head']) && $params['head']) {
@@ -321,7 +321,7 @@ class OC_Files {
 			    // file is unseekable
 			    header_remove('Accept-Ranges');
 			    header_remove('Content-Range');
-			    header("HTTP/1.1 200 OK");
+			    http_response_code(200);
 			    self::sendHeaders($filename, $name, array());
 			    $view->readfile($filename);
 			}

+ 0 - 34
lib/private/legacy/response.php

@@ -40,40 +40,6 @@ class OC_Response {
 	const STATUS_INTERNAL_SERVER_ERROR = 500;
 	const STATUS_SERVICE_UNAVAILABLE = 503;
 
-	/**
-	* Set response status
-	* @param int $status a HTTP status code, see also the STATUS constants
-	*/
-	static public function setStatus($status) {
-		$protocol = \OC::$server->getRequest()->getHttpProtocol();
-		switch($status) {
-			case self::STATUS_NOT_MODIFIED:
-				$status = $status . ' Not Modified';
-				break;
-			case self::STATUS_TEMPORARY_REDIRECT:
-				if ($protocol == 'HTTP/1.0') {
-					$status = self::STATUS_FOUND;
-					// fallthrough
-				} else {
-					$status = $status . ' Temporary Redirect';
-					break;
-				}
-			case self::STATUS_FOUND;
-				$status = $status . ' Found';
-				break;
-			case self::STATUS_NOT_FOUND;
-				$status = $status . ' Not Found';
-				break;
-			case self::STATUS_INTERNAL_SERVER_ERROR;
-				$status = $status . ' Internal Server Error';
-				break;
-			case self::STATUS_SERVICE_UNAVAILABLE;
-				$status = $status . ' Service Unavailable';
-				break;
-		}
-		header($protocol.' '.$status);
-	}
-
 	/**
 	 * Sets the content disposition header (with possible workarounds)
 	 * @param string $filename file name

+ 3 - 3
ocs/v1.php

@@ -36,7 +36,7 @@ if (\OCP\Util::needUpgrade()
 	|| \OC::$server->getSystemConfig()->getValue('maintenance', false)) {
 	// since the behavior of apps or remotes are unpredictable during
 	// an upgrade, return a 503 directly
-	OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
+	http_response_code(503);
 	$response = new \OC\OCS\Result(null, OC_Response::STATUS_SERVICE_UNAVAILABLE, 'Service unavailable');
 	OC_API::respond($response, OC_API::requestedFormat());
 	exit;
@@ -65,7 +65,7 @@ try {
 	// Fall through the not found
 } catch (MethodNotAllowedException $e) {
 	OC_API::setContentType();
-	OC_Response::setStatus(405);
+	http_response_code(405);
 	exit();
 } catch (Exception $ex) {
 	OC_API::respond($ex->getResult(), OC_API::requestedFormat());
@@ -89,7 +89,7 @@ try {
 	OC_API::respond(new \OC\OCS\Result(null, \OCP\API::RESPOND_NOT_FOUND, $txt), $format);
 } catch (MethodNotAllowedException $e) {
 	OC_API::setContentType();
-	OC_Response::setStatus(405);
+	http_response_code(405);
 } catch (\OC\OCS\Exception $ex) {
 	OC_API::respond($ex->getResult(), OC_API::requestedFormat());
 } catch (\OC\User\LoginException $e) {

+ 2 - 2
public.php

@@ -45,7 +45,7 @@ try {
 	$pathInfo = $request->getPathInfo();
 
 	if (!$pathInfo && $request->getParam('service', '') === '') {
-		header('HTTP/1.0 404 Not Found');
+		http_response_code(404);
 		exit;
 	} elseif ($request->getParam('service', '')) {
 		$service = $request->getParam('service', '');
@@ -55,7 +55,7 @@ try {
 	}
 	$file = \OC::$server->getConfig()->getAppValue('core', 'public_' . strip_tags($service));
 	if ($file === null) {
-		header('HTTP/1.0 404 Not Found');
+		http_response_code(404);
 		exit;
 	}
 

+ 1 - 1
status.php

@@ -59,6 +59,6 @@ try {
 	}
 
 } catch (Exception $ex) {
-	OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR);
+	http_response_code(500);
 	\OC::$server->getLogger()->logException($ex, ['app' => 'remote']);
 }