summaryrefslogtreecommitdiffstats
path: root/lib/request.php
diff options
context:
space:
mode:
authorherbrechtsmeier <stefan@herbrechtsmeier.net>2013-01-06 12:24:40 +0100
committerherbrechtsmeier <stefan@herbrechtsmeier.net>2013-01-31 18:43:30 +0100
commit7747f49263bb45674228318a81bb0f2bd214df34 (patch)
treef899205b411749bc9605cb515733df1cf027f387 /lib/request.php
parentab2b79cda682a697baba2128a21d3a9b5e90853c (diff)
downloadnextcloud-server-7747f49263bb45674228318a81bb0f2bd214df34.tar.gz
nextcloud-server-7747f49263bb45674228318a81bb0f2bd214df34.zip
add SSL proxy support
Add support for a reverse proxy that only forwards SSL connections unencrypted to the web server. This patch allows to detect the reverse proxy via regular expression for the remote IP address and conditional overwrite the host name, protocol and web root.
Diffstat (limited to 'lib/request.php')
-rwxr-xr-xlib/request.php17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/request.php b/lib/request.php
index 4c056ce9b2f..1661a1406ca 100755
--- a/lib/request.php
+++ b/lib/request.php
@@ -8,6 +8,15 @@
class OC_Request {
/**
+ * @brief Check overwrite condition
+ * @returns true/false
+ */
+ private static function isOverwriteCondition() {
+ $regex = '/' . OC_Config::getValue('overwritecondaddr', '') . '/';
+ return $regex === '//' or preg_match($regex, $_SERVER['REMOTE_ADDR']) === 1;
+ }
+
+ /**
* @brief Returns the server host
* @returns the server host
*
@@ -18,7 +27,7 @@ class OC_Request {
if(OC::$CLI) {
return 'localhost';
}
- if(OC_Config::getValue('overwritehost', '')<>'') {
+ if(OC_Config::getValue('overwritehost', '')<>'' and self::isOverwriteCondition()) {
return OC_Config::getValue('overwritehost');
}
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
@@ -43,7 +52,7 @@ class OC_Request {
* Returns the server protocol. It respects reverse proxy servers and load balancers
*/
public static function serverProtocol() {
- if(OC_Config::getValue('overwriteprotocol', '')<>'') {
+ if(OC_Config::getValue('overwriteprotocol', '')<>'' and self::isOverwriteCondition()) {
return OC_Config::getValue('overwriteprotocol');
}
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
@@ -67,7 +76,7 @@ class OC_Request {
*/
public static function requestUri() {
$uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
- if (OC_Config::getValue('overwritewebroot', '') <> '') {
+ if (OC_Config::getValue('overwritewebroot', '') <> '' and self::isOverwriteCondition()) {
$uri = self::scriptName() . substr($uri, strlen($_SERVER['SCRIPT_NAME']));
}
return $uri;
@@ -82,7 +91,7 @@ class OC_Request {
*/
public static function scriptName() {
$name = $_SERVER['SCRIPT_NAME'];
- if (OC_Config::getValue('overwritewebroot', '') <> '') {
+ if (OC_Config::getValue('overwritewebroot', '') <> '' and self::isOverwriteCondition()) {
$serverroot = str_replace("\\", '/', substr(__DIR__, 0, -4));
$suburi = str_replace("\\", "/", substr(realpath($_SERVER["SCRIPT_FILENAME"]), strlen($serverroot)));
$name = OC_Config::getValue('overwritewebroot', '') . $suburi;