diff options
author | Lukas Reschke <lukas@owncloud.com> | 2015-02-10 13:02:48 +0100 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2015-02-16 22:13:00 +0100 |
commit | 886bda5f81d52ba4443094e4c2fffac33c27bc4b (patch) | |
tree | 7915861a5d11f8f45d7a279c51e6bcc827c37367 /lib/public | |
parent | 7f624188a77534856ecd53ac1d303ce5358e681e (diff) | |
download | nextcloud-server-886bda5f81d52ba4443094e4c2fffac33c27bc4b.tar.gz nextcloud-server-886bda5f81d52ba4443094e4c2fffac33c27bc4b.zip |
Refactor OC_Request into TrustedDomainHelper and IRequest
This changeset removes the static class `OC_Request` and moves the functions either into `IRequest` which is accessible via `\OC::$server::->getRequest()` or into a separated `TrustedDomainHelper` class for some helper methods which should not be publicly exposed.
This changes only internal methods and nothing on the public API. Some public functions in `util.php` have been deprecated though in favour of the new non-static functions.
Unfortunately some part of this code uses things like `__DIR__` and thus is not completely unit-testable. Where tests where possible they ahve been added though.
Fixes https://github.com/owncloud/core/issues/13976 which was requested in https://github.com/owncloud/core/pull/13973#issuecomment-73492969
Diffstat (limited to 'lib/public')
-rw-r--r-- | lib/public/irequest.php | 65 | ||||
-rw-r--r-- | lib/public/util.php | 12 |
2 files changed, 73 insertions, 4 deletions
diff --git a/lib/public/irequest.php b/lib/public/irequest.php index b5ea1fa95da..814fc0251cf 100644 --- a/lib/public/irequest.php +++ b/lib/public/irequest.php @@ -134,4 +134,69 @@ interface IRequest { * @return string */ public function getId(); + + /** + * Returns the remote address, if the connection came from a trusted proxy + * and `forwarded_for_headers` has been configured then the IP address + * specified in this header will be returned instead. + * Do always use this instead of $_SERVER['REMOTE_ADDR'] + * @return string IP address + */ + public function getRemoteAddress(); + + /** + * Returns the server protocol. It respects reverse proxy servers and load + * balancers. + * @return string Server protocol (http or https) + */ + public function getServerProtocol(); + + /** + * Returns the request uri, even if the website uses one or more + * reverse proxies + * @return string + */ + public function getRequestUri(); + + /** + * Get raw PathInfo from request (not urldecoded) + * @throws \Exception + * @return string|false Path info or false when not found + */ + public function getRawPathInfo(); + + /** + * Get PathInfo from request + * @throws \Exception + * @return string|false Path info or false when not found + */ + public function getPathInfo(); + + /** + * Returns the script name, even if the website uses one or more + * reverse proxies + * @return string the script name + */ + public function getScriptName(); + + /** + * Checks whether the user agent matches a given regex + * @param array $agent array of agent names + * @return bool true if at least one of the given agent matches, false otherwise + */ + public function isUserAgent(array $agent); + + /** + * Returns the unverified server host from the headers without checking + * whether it is a trusted domain + * @return string Server host + */ + public function getInsecureServerHost(); + + /** + * Returns the server host from the headers, or the first configured + * trusted domain if the host isn't in the trusted list + * @return string Server host + */ + public function getServerHost(); } diff --git a/lib/public/util.php b/lib/public/util.php index 7f1974a421d..e6e14a26e01 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -234,9 +234,10 @@ class Util { /** * Returns the server host, even if the website uses one or more reverse proxy * @return string the server host + * @deprecated Use \OCP\IRequest::getServerHost */ public static function getServerHost() { - return(\OC_Request::serverHost()); + return \OC::$server->getRequest()->getServerHost(); } /** @@ -285,25 +286,28 @@ class Util { /** * Returns the server protocol. It respects reverse proxy servers and load balancers * @return string the server protocol + * @deprecated Use \OCP\IRequest::getServerProtocol */ public static function getServerProtocol() { - return(\OC_Request::serverProtocol()); + return \OC::$server->getRequest()->getServerProtocol(); } /** * Returns the request uri, even if the website uses one or more reverse proxies * @return string the request uri + * @deprecated Use \OCP\IRequest::getRequestUri */ public static function getRequestUri() { - return(\OC_Request::requestUri()); + return \OC::$server->getRequest()->getRequestUri(); } /** * Returns the script name, even if the website uses one or more reverse proxies * @return string the script name + * @deprecated Use \OCP\IRequest::getScriptName */ public static function getScriptName() { - return(\OC_Request::scriptName()); + return \OC::$server->getRequest()->getScriptName(); } /** |