testWriteAccessToDirectory() статический публичный Метод

Check Write Access to a directory
static public testWriteAccessToDirectory ( $dir ) : 2
$dir string: directory to check
Результат 2
Пример #1
1
   public function testDir() {

      // From Toolbox::commonCheckForUseGLPI
      $this->assertTrue(error_log("PHPUnit\n", 3, GLPI_LOG_DIR."/php-errors.log"),
                        "Fail: no write access to ".GLPI_LOG_DIR);
      $this->assertEquals(0, Toolbox::testWriteAccessToDirectory(GLPI_DUMP_DIR),
                          "Fail: no write access to ".GLPI_DUMP_DIR);
      $this->assertEquals(0, Toolbox::testWriteAccessToDirectory(GLPI_DOC_DIR),
                          "Fail: no write access to ".GLPI_DOC_DIR);
      $this->assertEquals(0, Toolbox::testWriteAccessToDirectory(GLPI_CONFIG_DIR),
                          "Fail: no write access to ".GLPI_CONFIG_DIR);
      $this->assertEquals(0, Toolbox::testWriteAccessToDirectory(GLPI_SESSION_DIR),
                          "Fail: no write access to ".GLPI_SESSION_DIR);
      $this->assertEquals(0, Toolbox::testWriteAccessToDirectory(GLPI_CRON_DIR),
                          "Fail: no write access to ".GLPI_CRON_DIR);
      $this->assertEquals(0, Toolbox::testWriteAccessToDirectory(GLPI_CACHE_DIR),
                          "Fail: no write access to ".GLPI_CACHE_DIR);
   }
Пример #2
0
 /**
  * Print the rssfeed form
  *
  * @param $ID        integer  Id of the item to print
  * @param $options   array    of possible options:
  *     - target filename : where to go when done.
  **/
 function showForm($ID, $options = array())
 {
     global $CFG_GLPI;
     // Test _rss cache directory. I permission trouble : unable to edit
     if (Toolbox::testWriteAccessToDirectory(GLPI_RSS_DIR) > 0) {
         echo "<div class='center'>";
         printf(__('Check permissions to the directory: %s'), GLPI_RSS_DIR);
         echo "<p class='red b'>" . __('Error') . "</p>";
         echo "</div>";
         return false;
     }
     $this->initForm($ID, $options);
     $canedit = $this->can($ID, UPDATE);
     $this->showFormHeader($options);
     $rowspan = 4;
     if (!$this->isNewID($ID)) {
         // Force getting feed :
         $feed = self::getRSSFeed($this->fields['url'], $this->fields['refresh_rate']);
         if (!$feed || $feed->error()) {
             $this->setError(true);
         } else {
             $this->setError(false);
         }
         echo "<tr class='tab_bg_2'>";
         echo "<td>" . __('Name') . "</td>";
         echo "<td>";
         Html::autocompletionTextField($this, "name", array('entity' => -1, 'user' => $this->fields["users_id"]));
         echo "</td><td colspan ='2'>&nbsp;</td></tr>\n";
     }
     echo "<tr class='tab_bg_1'><td>" . __('URL') . "</td>";
     echo "<td colspan='3'>";
     echo "<input type='text' name='url' size='100' value='" . $this->fields["url"] . "'>";
     echo "</td></tr>";
     echo "<tr class='tab_bg_2'>";
     echo "<td>" . __('By') . "</td>";
     echo "<td>";
     echo getUserName($this->fields["users_id"]);
     echo "<input type='hidden' name='users_id' value='" . $this->fields['users_id'] . "'>\n";
     echo "</td>";
     echo "<td rowspan='{$rowspan}'>" . __('Comments') . "</td>";
     echo "<td rowspan='{$rowspan}' class='middle'>";
     echo "<textarea cols='45' rows='" . ($rowspan + 3) . "' name='comment' >" . $this->fields["comment"] . "</textarea>";
     echo "</td></tr>\n";
     echo "<tr class='tab_bg_2'>";
     echo "<td>" . __('Active') . "</td>";
     echo "<td>";
     Dropdown::showYesNo('is_active', $this->fields['is_active']);
     echo "</td></tr>\n";
     echo "<tr class='tab_bg_2'>";
     echo "<td>" . __('Refresh rate') . "</td>";
     echo "<td>";
     Dropdown::showTimeStamp("refresh_rate", array('value' => $this->fields["refresh_rate"], 'min' => HOUR_TIMESTAMP, 'max' => DAY_TIMESTAMP, 'step' => HOUR_TIMESTAMP, 'display_emptychoice' => false, 'toadd' => array(5 * MINUTE_TIMESTAMP, 15 * MINUTE_TIMESTAMP, 30 * MINUTE_TIMESTAMP, 45 * MINUTE_TIMESTAMP)));
     echo "</td></tr>\n";
     echo "<tr class='tab_bg_2'>";
     echo "<td>" . __('Number of items displayed') . "</td>";
     echo "<td>";
     Dropdown::showNumber("max_items", array('value' => $this->fields["max_items"], 'min' => 5, 'max' => 100, 'step' => 5, 'toadd' => array(1), 'display_emptychoice' => false));
     echo "</td></tr>\n";
     echo "<tr class='tab_bg_2'>";
     echo "<td>" . __('Error retrieving RSS feed') . "</td>";
     echo "<td>";
     echo Dropdown::getYesNo($this->fields['have_error']);
     echo "</td>";
     if ($this->fields['have_error']) {
         echo "<td>" . __('RSS feeds found');
         echo "</td><td>";
         $this->showDiscoveredFeeds();
         echo "</td>\n";
     } else {
         echo "<td colspan='2'>&nbsp;</td>";
     }
     echo "</tr>";
     $this->showFormButtons($options);
     return true;
 }
 /**
  * Check Write Access to needed directories
  *
  * @param $fordebug boolean display for debug (no html, no gettext required) (false by default)
  *
  * @return 2 : creation error 1 : delete error 0: OK
  **/
 static function checkWriteAccessToDirs($fordebug = false)
 {
     global $CFG_GLPI;
     $dir_to_check = array(GLPI_CONFIG_DIR => __('Checking write permissions for setting files'), GLPI_DOC_DIR => __('Checking write permissions for document files'), GLPI_DUMP_DIR => __('Checking write permissions for dump files'), GLPI_SESSION_DIR => __('Checking write permissions for session files'), GLPI_CRON_DIR => __('Checking write permissions for automatic actions files'), GLPI_GRAPH_DIR => __('Checking write permissions for graphic files'), GLPI_LOCK_DIR => __('Checking write permissions for lock files'), GLPI_PLUGIN_DOC_DIR => __('Checking write permissions for plugins document files'), GLPI_TMP_DIR => __('Checking write permissions for temporary files'), GLPI_RSS_DIR => __('Checking write permissions for rss files'), GLPI_UPLOAD_DIR => __('Checking write permissions for upload files'), GLPI_PICTURE_DIR => __('Checking write permissions for pictures files'));
     $error = 0;
     foreach ($dir_to_check as $dir => $message) {
         if (!$fordebug) {
             echo "<tr class='tab_bg_1'><td class='left b'>" . $message . "</td>";
         }
         $tmperror = Toolbox::testWriteAccessToDirectory($dir);
         $errors = array(4 => __('The directory could not be created.'), 3 => __('The directory was created but could not be removed.'), 2 => __('The file could not be created.'), 1 => __("The file was created but can't be deleted."));
         if ($tmperror > 0) {
             if ($fordebug) {
                 echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/ko_min.png'> " . sprintf(__('Check permissions to the directory: %s'), $dir) . " " . $errors[$tmperror] . "\n";
             } else {
                 echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/ko_min.png'><p class='red'>" . $errors[$tmperror] . "</p> " . sprintf(__('Check permissions to the directory: %s'), $dir) . "'</td></tr>";
             }
             $error = 2;
         } else {
             if ($fordebug) {
                 echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/ok_min.png' alt=\"" . __s('OK') . "\">{$dir} : OK\n";
             } else {
                 echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/ok_min.png' alt=\"" . __s('A file and a directory have be created and deleted - Perfect!') . "\"\n                          title=\"" . __s('A file and a directory have be created and deleted - Perfect!') . "\">" . "</td></tr>";
             }
         }
     }
     // Only write test for GLPI_LOG as SElinux prevent removing log file.
     if (!$fordebug) {
         echo "<tr class='tab_bg_1'><td class='b left'>" . __('Checking write permissions for log files') . "</td>";
     }
     if (error_log("Test\n", 3, GLPI_LOG_DIR . "/php-errors.log")) {
         if ($fordebug) {
             echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/ok_min.png' alt=\"" . __s('OK') . "\">" . GLPI_LOG_DIR . " : OK\n";
         } else {
             echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/ok_min.png' alt=\"" . __s('A file was created - Perfect!') . "\" title=\"" . __s('A file was created - Perfect!') . "\"></td></tr>";
         }
     } else {
         if ($fordebug) {
             echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/warning_min.png'>" . sprintf(__('Check permissions to the directory: %s'), GLPI_LOG_DIR) . "\n";
         } else {
             echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/warning_min.png'>" . "<p class='red'>" . __('The file could not be created.') . "</p>" . sprintf(__('Check permissions to the directory: %s'), GLPI_LOG_DIR) . "</td></tr>";
         }
         $error = 1;
     }
     $oldhand = set_error_handler(function ($errno, $errmsg, $filename, $linenum, $vars) {
         return true;
     });
     $oldlevel = error_reporting(0);
     /* TODO: could be improved, only default vhost checked */
     if ($fic = fopen('http://localhost' . $CFG_GLPI['root_doc'] . '/index.php', 'r')) {
         fclose($fic);
         if (!$fordebug) {
             echo "<tr class='tab_bg_1'><td class='b left'>" . __('Web access to files directory is protected') . "</td>";
         }
         if ($fic = fopen('http://localhost' . $CFG_GLPI['root_doc'] . '/files/_log/php-errors.log', 'r')) {
             fclose($fic);
             if ($fordebug) {
                 echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/warning_min.png'>" . __('Web access to the files directory, should not be allowed') . "\n" . __('Check the .htaccess file and the web server configuration.') . "\n";
             } else {
                 echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/warning_min.png'>" . "<p class='red'>" . __('Web access to the files directory, should not be allowed') . "<br/>" . __('Check the .htaccess file and the web server configuration.') . "</p></td></tr>";
             }
             $error = 1;
         } else {
             if ($fordebug) {
                 echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/ok_min.png' alt=\"" . __s('Web access to files directory is protected') . "\">" . __s('Web access to files directory is protected') . " : OK\n";
             } else {
                 echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/ok_min.png' alt=\"" . __s('Web access to files directory is protected') . "\" title=\"" . __s('Web access to files directory is protected') . "\"></td></tr>";
             }
         }
     }
     error_reporting($oldlevel);
     set_error_handler($oldhand);
     return $error;
 }
 /**
  * Check Write Access to needed directories
  *
  * @param $fordebug boolean display for debug (no html, no gettext required) (false by default)
  *
  * @return 2 : creation error 1 : delete error 0: OK
  **/
 static function checkWriteAccessToDirs($fordebug = false)
 {
     global $CFG_GLPI;
     $dir_to_check = array(GLPI_CONFIG_DIR => __('Checking write permissions for setting files'), GLPI_DOC_DIR => __('Checking write permissions for document files'), GLPI_DUMP_DIR => __('Checking write permissions for dump files'), GLPI_SESSION_DIR => __('Checking write permissions for session files'), GLPI_CRON_DIR => __('Checking write permissions for automatic actions files'), GLPI_CACHE_DIR => __('Checking write permissions for cache files'), GLPI_GRAPH_DIR => __('Checking write permissions for graphic files'), GLPI_LOCK_DIR => __('Checking write permissions for lock files'), GLPI_PLUGIN_DOC_DIR => __('Checking write permissions for plugins document files'), GLPI_TMP_DIR => __('Checking write permissions for temporary files'), GLPI_RSS_DIR => __('Checking write permissions for rss files'), GLPI_UPLOAD_DIR => __('Checking write permissions for upload files'), GLPI_PICTURE_DIR => __('Checking write permissions for pictures files'));
     $error = 0;
     foreach ($dir_to_check as $dir => $message) {
         if (!$fordebug) {
             echo "<tr class='tab_bg_1'><td class='left b'>" . $message . "</td>";
         }
         $tmperror = Toolbox::testWriteAccessToDirectory($dir);
         $errors = array(4 => __('The directory could not be created.'), 3 => __('The directory was created but could not be removed.'), 2 => __('The file could not be created.'), 1 => __("The file was created but can't be deleted."));
         if ($tmperror > 0) {
             if ($fordebug) {
                 echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/redbutton.png'> " . sprintf(__('Check permissions to the directory: %s'), $dir) . " " . $errors[$tmperror] . "\n";
             } else {
                 echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/redbutton.png'><p class='red'>" . $errors[$tmperror] . "</p> " . sprintf(__('Check permissions to the directory: %s'), $dir) . "'</td></tr>";
             }
             $error = 2;
         } else {
             if ($fordebug) {
                 echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/greenbutton.png' alt=\"" . __s('OK') . "\">{$dir} : OK\n";
             } else {
                 echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/greenbutton.png' alt=\"" . __s('A file and a directory have be created and deleted - Perfect!') . "\"\n                          title=\"" . __s('A file and a directory have be created and deleted - Perfect!') . "\">" . "</td></tr>";
             }
         }
     }
     // Only write test for GLPI_LOG as SElinux prevent removing log file.
     if (!$fordebug) {
         echo "<tr class='tab_bg_1'><td class='b left'>" . __('Checking write permissions for log files') . "</td>";
     }
     if (error_log("Test\n", 3, GLPI_LOG_DIR . "/php-errors.log")) {
         if ($fordebug) {
             echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/greenbutton.png' alt=\"" . __s('OK') . "\">" . GLPI_LOG_DIR . " : OK\n";
         } else {
             echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/greenbutton.png' alt=\"" . __s('A file was created - Perfect!') . "\" title=\"" . __s('A file was created - Perfect!') . "\"></td></tr>";
         }
     } else {
         if ($fordebug) {
             echo "<img src='" . $CFG_GLPI['root_doc'] . "/pics/orangebutton.png'>" . sprintf(__('Check permissions to the directory: %s'), GLPI_LOG_DIR) . "\n";
         } else {
             echo "<td><img src='" . $CFG_GLPI['root_doc'] . "/pics/orangebutton.png'>" . "<p class='red'>" . __('The file could not be created.') . "</p>" . sprintf(__('Check permissions to the directory: %s'), GLPI_LOG_DIR) . "</td></tr>";
         }
         $error = 1;
     }
     return $error;
 }