From e8537afd60d2c5d37e48a99aca9e72394cc044dd Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 7 Jul 2014 14:39:06 +0200 Subject: [PATCH 1/3] Only overwrite serverHost when in unit tests The intention of the original commit 12f7cb87679453fa96c796df857b7e7193d4ee09 was to fix tests. But cron should always return a valid host not localhost. --- lib/private/request.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/request.php b/lib/private/request.php index 619eae3e9b..5fd5b3a719 100755 --- a/lib/private/request.php +++ b/lib/private/request.php @@ -95,7 +95,7 @@ class OC_Request { * reverse proxies */ public static function serverHost() { - if(OC::$CLI) { + if (OC::$CLI && defined('PHPUNIT_RUN')) { return 'localhost'; } From 5d3e1bc023d48bc080fa0a65dad120b7e2530867 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 7 Jul 2014 15:01:02 +0200 Subject: [PATCH 2/3] Only calculate the WEBROOT from scriptName if it contains $SUBURI If not we are most likely in CLI mode. However to be able to still generate valid URLs, we need to use the overwrite webroot instead. Fix #9490 --- lib/base.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/base.php b/lib/base.php index b526840a97..840d904471 100644 --- a/lib/base.php +++ b/lib/base.php @@ -117,10 +117,18 @@ class OC { } } - OC::$WEBROOT = substr($scriptName, 0, strlen($scriptName) - strlen(OC::$SUBURI)); + if (substr($scriptName, 0 - strlen(OC::$SUBURI)) === OC::$SUBURI) { + OC::$WEBROOT = substr($scriptName, 0, 0 - strlen(OC::$SUBURI)); - if (OC::$WEBROOT != '' and OC::$WEBROOT[0] !== '/') { - OC::$WEBROOT = '/' . OC::$WEBROOT; + if (OC::$WEBROOT != '' && OC::$WEBROOT[0] !== '/') { + OC::$WEBROOT = '/' . OC::$WEBROOT; + } + } else { + // The scriptName is not ending with OC::$SUBURI + // This most likely means that we are calling from CLI. + // However some cron jobs still need to generate + // a web URL, so we use overwritewebroot as a fallback. + OC::$WEBROOT = OC_Config::getValue('overwritewebroot', ''); } // search the 3rdparty folder From bef093471933e434cafba69f1e50ad5308da6dd2 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 7 Jul 2014 15:04:43 +0200 Subject: [PATCH 3/3] Add comment to overwrite* configs about CLI/cron problems --- config/config.sample.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/config.sample.php b/config/config.sample.php index e613609bce..1bfae366ff 100755 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -41,16 +41,16 @@ $CONFIG = array( /* Blacklist a specific file and disallow the upload of files with this name - WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING. */ "blacklisted_files" => array('.htaccess'), -/* The automatic hostname detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */ +/* The automatic hostname detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */ "overwritehost" => "", -/* The automatic protocol detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the protocol detection. For example "https" */ +/* The automatic protocol detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the protocol detection. For example "https" */ "overwriteprotocol" => "", -/* The automatic webroot detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud". The value "/" can be used to remove the root. */ +/* The automatic webroot detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud". The value "/" can be used to remove the root. */ "overwritewebroot" => "", -/* The automatic detection of ownCloud can fail in certain reverse proxy situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */ +/* The automatic detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */ "overwritecondaddr" => "", /* A proxy to use to connect to the internet. For example "myproxy.org:88" */