Example #1
0
 public function testScriptNameOverWrite()
 {
     $_SERVER['REMOTE_ADDR'] = '10.0.0.1';
     $_SERVER['SCRIPT_FILENAME'] = __FILE__;
     $scriptName = OC_Request::scriptName();
     $this->assertEquals('/domain.tld/ownCloud/tests/lib/request.php', $scriptName);
 }
Example #2
0
 /**
  * get the id of loaded app
  *
  * @return string
  */
 public static function getCurrentApp()
 {
     $script = substr(OC_Request::scriptName(), strlen(OC::$WEBROOT) + 1);
     $topFolder = substr($script, 0, strpos($script, '/'));
     if (empty($topFolder)) {
         $path_info = OC_Request::getPathInfo();
         if ($path_info) {
             $topFolder = substr($path_info, 1, strpos($path_info, '/', 1) - 1);
         }
     }
     if ($topFolder == 'apps') {
         $length = strlen($topFolder);
         return substr($script, $length + 1, strpos($script, '/', $length + 1) - $length - 1);
     } else {
         return $topFolder;
     }
 }
Example #3
0
 /**
  * @brief Returns the script name
  * @returns the script name
  *
  * Returns the script name, even if the website uses one or more
  * reverse proxies
  */
 public static function getScriptName()
 {
     return \OC_Request::scriptName();
 }
Example #4
0
 public static function initPaths()
 {
     // calculate the root directories
     OC::$SERVERROOT = str_replace("\\", '/', substr(__DIR__, 0, -4));
     // ensure we can find OC_Config
     set_include_path(OC::$SERVERROOT . '/lib' . PATH_SEPARATOR . get_include_path());
     OC::$SUBURI = str_replace("\\", "/", substr(realpath($_SERVER["SCRIPT_FILENAME"]), strlen(OC::$SERVERROOT)));
     $scriptName = OC_Request::scriptName();
     if (substr($scriptName, -1) == '/') {
         $scriptName .= 'index.php';
         //make sure suburi follows the same rules as scriptName
         if (substr(OC::$SUBURI, -9) != 'index.php') {
             if (substr(OC::$SUBURI, -1) != '/') {
                 OC::$SUBURI = OC::$SUBURI . '/';
             }
             OC::$SUBURI = OC::$SUBURI . 'index.php';
         }
     }
     OC::$WEBROOT = substr($scriptName, 0, strlen($scriptName) - strlen(OC::$SUBURI));
     if (OC::$WEBROOT != '' and OC::$WEBROOT[0] !== '/') {
         OC::$WEBROOT = '/' . OC::$WEBROOT;
     }
     // search the 3rdparty folder
     if (OC_Config::getValue('3rdpartyroot', '') != '' and OC_Config::getValue('3rdpartyurl', '') != '') {
         OC::$THIRDPARTYROOT = OC_Config::getValue('3rdpartyroot', '');
         OC::$THIRDPARTYWEBROOT = OC_Config::getValue('3rdpartyurl', '');
     } elseif (file_exists(OC::$SERVERROOT . '/3rdparty')) {
         OC::$THIRDPARTYROOT = OC::$SERVERROOT;
         OC::$THIRDPARTYWEBROOT = OC::$WEBROOT;
     } elseif (file_exists(OC::$SERVERROOT . '/../3rdparty')) {
         OC::$THIRDPARTYWEBROOT = rtrim(dirname(OC::$WEBROOT), '/');
         OC::$THIRDPARTYROOT = rtrim(dirname(OC::$SERVERROOT), '/');
     } else {
         echo '3rdparty directory not found! Please put the ownCloud 3rdparty' . ' folder in the ownCloud folder or the folder above.' . ' You can also configure the location in the config.php file.';
         exit;
     }
     // search the apps folder
     $config_paths = OC_Config::getValue('apps_paths', array());
     if (!empty($config_paths)) {
         foreach ($config_paths as $paths) {
             if (isset($paths['url']) && isset($paths['path'])) {
                 $paths['url'] = rtrim($paths['url'], '/');
                 $paths['path'] = rtrim($paths['path'], '/');
                 OC::$APPSROOTS[] = $paths;
             }
         }
     } elseif (file_exists(OC::$SERVERROOT . '/apps')) {
         OC::$APPSROOTS[] = array('path' => OC::$SERVERROOT . '/apps', 'url' => '/apps', 'writable' => true);
     } elseif (file_exists(OC::$SERVERROOT . '/../apps')) {
         OC::$APPSROOTS[] = array('path' => rtrim(dirname(OC::$SERVERROOT), '/') . '/apps', 'url' => '/apps', 'writable' => true);
     }
     if (empty(OC::$APPSROOTS)) {
         echo 'apps directory not found! Please put the ownCloud apps folder in the ownCloud folder' . ' or the folder above. You can also configure the location in the config.php file.';
         exit;
     }
     $paths = array();
     foreach (OC::$APPSROOTS as $path) {
         $paths[] = $path['path'];
     }
     // set the right include path
     set_include_path(OC::$SERVERROOT . '/lib' . PATH_SEPARATOR . OC::$SERVERROOT . '/config' . PATH_SEPARATOR . OC::$THIRDPARTYROOT . '/3rdparty' . PATH_SEPARATOR . implode($paths, PATH_SEPARATOR) . PATH_SEPARATOR . get_include_path() . PATH_SEPARATOR . OC::$SERVERROOT);
 }
Example #5
0
	public static function initPaths() {
		// calculate the root directories
		OC::$SERVERROOT = str_replace("\\", '/', substr(__DIR__, 0, -4));

		// ensure we can find OC_Config
		set_include_path(
			OC::$SERVERROOT . '/lib' . PATH_SEPARATOR .
			get_include_path()
		);

		if(defined('PHPUNIT_CONFIG_DIR')) {
			self::$configDir = OC::$SERVERROOT . '/' . PHPUNIT_CONFIG_DIR . '/';
		} elseif(defined('PHPUNIT_RUN') and PHPUNIT_RUN and is_dir(OC::$SERVERROOT . '/tests/config/')) {
			self::$configDir = OC::$SERVERROOT . '/tests/config/';
		} else {
			self::$configDir = OC::$SERVERROOT . '/config/';
		}
		OC_Config::$object = new \OC\Config(self::$configDir);

		OC::$SUBURI = str_replace("\\", "/", substr(realpath($_SERVER["SCRIPT_FILENAME"]), strlen(OC::$SERVERROOT)));
		$scriptName = OC_Request::scriptName();
		if (substr($scriptName, -1) == '/') {
			$scriptName .= 'index.php';
			//make sure suburi follows the same rules as scriptName
			if (substr(OC::$SUBURI, -9) != 'index.php') {
				if (substr(OC::$SUBURI, -1) != '/') {
					OC::$SUBURI = OC::$SUBURI . '/';
				}
				OC::$SUBURI = OC::$SUBURI . 'index.php';
			}
		}

		if (substr($scriptName, 0 - strlen(OC::$SUBURI)) === OC::$SUBURI) {
			OC::$WEBROOT = substr($scriptName, 0, 0 - strlen(OC::$SUBURI));

			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
		OC::$THIRDPARTYROOT = OC_Config::getValue('3rdpartyroot', null);
		OC::$THIRDPARTYWEBROOT = OC_Config::getValue('3rdpartyurl', null);
		
		if (empty(OC::$THIRDPARTYROOT) && empty(OC::$THIRDPARTYWEBROOT)) {
			if (file_exists(OC::$SERVERROOT . '/3rdparty')) {
				OC::$THIRDPARTYROOT = OC::$SERVERROOT;
				OC::$THIRDPARTYWEBROOT = OC::$WEBROOT;
			} elseif (file_exists(OC::$SERVERROOT . '/../3rdparty')) {
				OC::$THIRDPARTYWEBROOT = rtrim(dirname(OC::$WEBROOT), '/');
				OC::$THIRDPARTYROOT = rtrim(dirname(OC::$SERVERROOT), '/');
			}
		}
		if (empty(OC::$THIRDPARTYROOT) || !file_exists(OC::$THIRDPARTYROOT)) {
			echo('3rdparty directory not found! Please put the ownCloud 3rdparty'
				. ' folder in the ownCloud folder or the folder above.'
				. ' You can also configure the location in the config.php file.');
			return;
		}
		
		// search the apps folder
		$config_paths = OC_Config::getValue('apps_paths', array());
		if (!empty($config_paths)) {
			foreach ($config_paths as $paths) {
				if (isset($paths['url']) && isset($paths['path'])) {
					$paths['url'] = rtrim($paths['url'], '/');
					$paths['path'] = rtrim($paths['path'], '/');
					OC::$APPSROOTS[] = $paths;
				}
			}
		} elseif (file_exists(OC::$SERVERROOT . '/apps')) {
			OC::$APPSROOTS[] = array('path' => OC::$SERVERROOT . '/apps', 'url' => '/apps', 'writable' => true);
		} elseif (file_exists(OC::$SERVERROOT . '/../apps')) {
			OC::$APPSROOTS[] = array(
				'path' => rtrim(dirname(OC::$SERVERROOT), '/') . '/apps',
				'url' => '/apps',
				'writable' => true
			);
		}

		if (empty(OC::$APPSROOTS)) {
			throw new Exception('apps directory not found! Please put the ownCloud apps folder in the ownCloud folder'
				. ' or the folder above. You can also configure the location in the config.php file.');
		}
		$paths = array();
		foreach (OC::$APPSROOTS as $path) {
			$paths[] = $path['path'];
		}

		// set the right include path
		set_include_path(
			OC::$SERVERROOT . '/lib/private' . PATH_SEPARATOR .
			OC::$SERVERROOT . '/config' . PATH_SEPARATOR .
			OC::$THIRDPARTYROOT . '/3rdparty' . PATH_SEPARATOR .
			implode(PATH_SEPARATOR, $paths) . PATH_SEPARATOR .
			get_include_path() . PATH_SEPARATOR .
			OC::$SERVERROOT
		);
	}