Beispiel #1
0
 /**
  * Append the correct ErrorDocument path for Apache hosts
  */
 public static function updateHtaccess()
 {
     // From CLI we don't know the defined web root. Thus we can't write any
     // directives into the .htaccess file.
     if (\OC::$CLI) {
         return;
     }
     $setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom());
     $htaccessContent = file_get_contents($setupHelper->pathToHtaccess());
     $content = '';
     if (strpos($htaccessContent, 'ErrorDocument 403') === false) {
         //custom 403 error page
         $content .= "\nErrorDocument 403 " . \OC::$WEBROOT . "/core/templates/403.php";
     }
     if (strpos($htaccessContent, 'ErrorDocument 404') === false) {
         //custom 404 error page
         $content .= "\nErrorDocument 404 " . \OC::$WEBROOT . "/core/templates/404.php";
     }
     // Add rewrite base
     $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/';
     $content .= "\n<IfModule mod_rewrite.c>";
     $content .= "\n  RewriteBase " . $webRoot;
     $content .= "\n  <IfModule mod_env.c>";
     $content .= "\n    SetEnv front_controller_active true";
     $content .= "\n    <IfModule mod_dir.c>";
     $content .= "\n      DirectorySlash off";
     $content .= "\n    </IfModule>";
     $content .= "\n  </IfModule>";
     $content .= "\n</IfModule>";
     if ($content !== '') {
         //suppress errors in case we don't have permissions for it
         @file_put_contents($setupHelper->pathToHtaccess(), $content . "\n", FILE_APPEND);
     }
 }
Beispiel #2
0
 /**
  * Append the correct ErrorDocument path for Apache hosts
  */
 public static function updateHtaccess()
 {
     $config = \OC::$server->getConfig();
     // For CLI read the value from overwrite.cli.url
     if (\OC::$CLI) {
         $webRoot = $config->getSystemValue('overwrite.cli.url', '');
         if ($webRoot === '') {
             return;
         }
         $webRoot = parse_url($webRoot, PHP_URL_PATH);
         $webRoot = rtrim($webRoot, '/');
     } else {
         $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/';
     }
     $setupHelper = new \OC\Setup($config, \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom());
     $htaccessContent = file_get_contents($setupHelper->pathToHtaccess());
     $content = "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####\n";
     $htaccessContent = explode($content, $htaccessContent, 2)[0];
     //custom 403 error page
     $content .= "\nErrorDocument 403 " . $webRoot . "/core/templates/403.php";
     //custom 404 error page
     $content .= "\nErrorDocument 404 " . $webRoot . "/core/templates/404.php";
     // Add rewrite rules if the RewriteBase is configured
     $rewriteBase = $config->getSystemValue('htaccess.RewriteBase', '');
     if ($rewriteBase !== '') {
         $content .= "\n<IfModule mod_rewrite.c>";
         $content .= "\n  Options -MultiViews";
         $content .= "\n  RewriteRule ^core/js/oc.js\$ index.php [PT,E=PATH_INFO:\$1]";
         $content .= "\n  RewriteRule ^core/preview.png\$ index.php [PT,E=PATH_INFO:\$1]";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !\\.(css|js|svg|gif|png|html|ttf|woff|ico|jpg|jpeg)\$";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !core/img/favicon.ico\$";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/remote.php";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/public.php";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/cron.php";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/core/ajax/update.php";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/status.php";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/ocs/v1.php";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/ocs/v2.php";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/updater/";
         $content .= "\n  RewriteCond %{REQUEST_FILENAME} !/ocs-provider/";
         $content .= "\n  RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*";
         $content .= "\n  RewriteRule . index.php [PT,E=PATH_INFO:\$1]";
         $content .= "\n  RewriteBase " . $rewriteBase;
         $content .= "\n  <IfModule mod_env.c>";
         $content .= "\n    SetEnv front_controller_active true";
         $content .= "\n    <IfModule mod_dir.c>";
         $content .= "\n      DirectorySlash off";
         $content .= "\n    </IfModule>";
         $content .= "\n  </IfModule>";
         $content .= "\n</IfModule>";
     }
     if ($content !== '') {
         //suppress errors in case we don't have permissions for it
         @file_put_contents($setupHelper->pathToHtaccess(), $htaccessContent . $content . "\n");
     }
 }
Beispiel #3
0
 /**
  * Append the correct ErrorDocument path for Apache hosts
  */
 public static function updateHtaccess()
 {
     $config = \OC::$server->getConfig();
     // For CLI read the value from overwrite.cli.url
     if (\OC::$CLI) {
         $webRoot = $config->getSystemValue('overwrite.cli.url', '');
         if ($webRoot === '') {
             return;
         }
         $webRoot = parse_url($webRoot, PHP_URL_PATH);
         $webRoot = rtrim($webRoot, '/');
     } else {
         $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/';
     }
     $setupHelper = new \OC\Setup($config, \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom());
     $htaccessContent = file_get_contents($setupHelper->pathToHtaccess());
     $content = "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####\n";
     if (strpos($htaccessContent, $content) === false) {
         //custom 403 error page
         $content .= "\nErrorDocument 403 " . $webRoot . "/core/templates/403.php";
         //custom 404 error page
         $content .= "\nErrorDocument 404 " . $webRoot . "/core/templates/404.php";
         // ownCloud may be configured to live at the root folder without a
         // trailing slash being specified. In this case manually set the
         // rewrite base to `/`
         $rewriteBase = $webRoot;
         if ($webRoot === '') {
             $rewriteBase = '/';
         }
         // Add rewrite base
         $content .= "\n<IfModule mod_rewrite.c>";
         $content .= "\n  RewriteRule . index.php [PT,E=PATH_INFO:\$1]";
         $content .= "\n  RewriteBase " . $rewriteBase;
         $content .= "\n  <IfModule mod_env.c>";
         $content .= "\n    SetEnv front_controller_active true";
         $content .= "\n    <IfModule mod_dir.c>";
         $content .= "\n      DirectorySlash off";
         $content .= "\n    </IfModule>";
         $content .= "\n  </IfModule>";
         $content .= "\n</IfModule>";
         if ($content !== '') {
             //suppress errors in case we don't have permissions for it
             @file_put_contents($setupHelper->pathToHtaccess(), $content . "\n", FILE_APPEND);
         }
     }
 }
Beispiel #4
0
 /**
  * Append the correct ErrorDocument path for Apache hosts
  *
  * @throws \OC\HintException If .htaccess does not include the current version
  */
 public static function updateHtaccess()
 {
     $setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults());
     if (!$setupHelper->isCurrentHtaccess()) {
         throw new \OC\HintException('.htaccess file has the wrong version. Please upload the correct version. Maybe you forgot to replace it after updating?');
     }
     $htaccessContent = file_get_contents($setupHelper->pathToHtaccess());
     $content = '';
     if (strpos($htaccessContent, 'ErrorDocument 403') === false) {
         //custom 403 error page
         $content .= "\nErrorDocument 403 " . \OC::$WEBROOT . "/core/templates/403.php";
     }
     if (strpos($htaccessContent, 'ErrorDocument 404') === false) {
         //custom 404 error page
         $content .= "\nErrorDocument 404 " . \OC::$WEBROOT . "/core/templates/404.php";
     }
     if ($content !== '') {
         //suppress errors in case we don't have permissions for it
         @file_put_contents($setupHelper->pathToHtaccess(), $content . "\n", FILE_APPEND);
     }
 }
Beispiel #5
0
 /**
  * Append the correct ErrorDocument path for Apache hosts
  *
  * @throws \OC\HintException If .htaccess does not include the current version
  */
 public static function updateHtaccess()
 {
     $setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom());
     if (!$setupHelper->isCurrentHtaccess()) {
         throw new \OC\HintException('.htaccess file has the wrong version. Please upload the correct version. Maybe you forgot to replace it after updating?');
     }
     $htaccessContent = file_get_contents($setupHelper->pathToHtaccess());
     $content = '';
     if (strpos($htaccessContent, 'ErrorDocument 403') === false) {
         //custom 403 error page
         $content .= "\nErrorDocument 403 " . \OC::$WEBROOT . "/core/templates/403.php";
     }
     if (strpos($htaccessContent, 'ErrorDocument 404') === false) {
         //custom 404 error page
         $content .= "\nErrorDocument 404 " . \OC::$WEBROOT . "/core/templates/404.php";
     }
     // Add rewrite base
     $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/';
     $content .= "\n<IfModule mod_rewrite.c>";
     $content .= "\n  RewriteBase " . $webRoot;
     $content .= "\n  <IfModule mod_env.c>";
     $content .= "\n    SetEnv front_controller_active true";
     $content .= "\n  </IfModule>";
     $content .= "\n</IfModule>";
     if ($content !== '') {
         //suppress errors in case we don't have permissions for it
         @file_put_contents($setupHelper->pathToHtaccess(), $content . "\n", FILE_APPEND);
     }
 }