Florian Schaal
2014-09-22 752ab3dc79da6fa2dbfd7bfba3c48a6b60c82fa5
server/lib/classes/system.inc.php
@@ -917,13 +917,11 @@
    * This function checks the free space for a given directory
    * @param path check path
    * @param limit min. free space in bytes
    * @return bool - true when the the free space is above limit ohterwise false
    * @return bool - true when the the free space is above limit ohterwise false, opt. available disk-space
   */
   function check_free_space($path, $limit = 0) {
   function check_free_space($path, $limit = 0, &$free_space = 0) {
      $path = rtrim($path, '/');
      $parts = explode('/', $path);
        $out = '';
      /**
      * Make sure that we have only existing directories in the path.
@@ -931,19 +929,16 @@
      * Given a file name instead of a directory, the behaviour of the disk_free_space
      function is unspecified and may differ between operating systems and PHP versions.
        */
      for ($i = 1; $i < count($parts); $i++) {
         if ( !is_file($out.'/'.$parts[$i]) && is_dir($out.'/'.$parts[$i]) ) {
            $out .= '/'.$parts[$i];
         }
      while(!is_dir($path) && $path != '/') $path = realpath(dirname($path));
      $free_space = disk_free_space($out);
      if (!$free_space) {
         $free_space = 0;
         return false;
      }
      unset($parts);
      $res = disk_free_space($out);
      if (!$res) return false;
      if ($res >= $limit) {
      if ($free_space >= $limit) {
         return true;
      } else {
         return false;
@@ -1846,6 +1841,32 @@
      }
   }
   function getapachemodules() {
      global $app;
      $cmd = '';
      if(is_installed('apache2ctl')) $cmd = 'apache2ctl -t -D DUMP_MODULES';
      elseif(is_installed('apachectl')) $cmd = 'apachectl -t -D DUMP_MODULES';
      else {
         $app->log("Could not check apache modules, apachectl not found.", LOGLEVEL_WARN);
         return array();
      }
      exec($cmd . ' 2>/dev/null', $output, $return_var);
      if($return_var != 0 || !$output[0]) {
         $app->log("Could not check apache modules, apachectl did not return any data.", LOGLEVEL_WARN);
         return array();
      }
      $modules = array();
      for($i = 0; $i < count($output); $i++) {
         if(preg_match('/^\s*(\w+)\s+\((shared|static)\)\s*$/', $output[$i], $matches)) {
            $modules[] = $matches[1];
         }
      }
      return $modules;
   }
}
?>