82 lines
2.0 KiB
PHP
82 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
* later.
|
|
* See the COPYING-README file.
|
|
*/
|
|
|
|
class OC_Request {
|
|
/**
|
|
* @brief Returns the server host
|
|
* @returns the server host
|
|
*
|
|
* Returns the server host, even if the website uses one or more
|
|
* reverse proxies
|
|
*/
|
|
public static function serverHost() {
|
|
if(OC::$CLI){
|
|
return 'localhost';
|
|
}
|
|
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
|
|
if (strpos($_SERVER['HTTP_X_FORWARDED_HOST'], ",") !== false) {
|
|
$host = trim(array_pop(explode(",", $_SERVER['HTTP_X_FORWARDED_HOST'])));
|
|
}
|
|
else{
|
|
$host=$_SERVER['HTTP_X_FORWARDED_HOST'];
|
|
}
|
|
}
|
|
else{
|
|
$host = $_SERVER['HTTP_HOST'];
|
|
}
|
|
return $host;
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Returns the server protocol
|
|
* @returns the server protocol
|
|
*
|
|
* Returns the server protocol. It respects reverse proxy servers and load balancers
|
|
*/
|
|
public static function serverProtocol() {
|
|
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
|
|
$proto = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']);
|
|
}else{
|
|
if(isset($_SERVER['HTTPS']) and !empty($_SERVER['HTTPS']) and ($_SERVER['HTTPS']!='off')) {
|
|
$proto = 'https';
|
|
}else{
|
|
$proto = 'http';
|
|
}
|
|
}
|
|
return($proto);
|
|
}
|
|
|
|
/**
|
|
* @brief Check if this is a no-cache request
|
|
* @returns true for no-cache
|
|
*/
|
|
static public function isNoCache() {
|
|
if (!isset($_SERVER['HTTP_CACHE_CONTROL'])) {
|
|
return false;
|
|
}
|
|
return $_SERVER['HTTP_CACHE_CONTROL'] == 'no-cache';
|
|
}
|
|
|
|
/**
|
|
* @brief Check if the requestor understands gzip
|
|
* @returns true for gzip encoding supported
|
|
*/
|
|
static public function acceptGZip() {
|
|
if (!isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
|
|
return false;
|
|
}
|
|
$HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"];
|
|
if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false )
|
|
return 'x-gzip';
|
|
else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false )
|
|
return 'gzip';
|
|
return false;
|
|
}
|
|
}
|