cfoe
2012-07-11 a9c5c19aee8db8f4aa301eb9c26a498f2fd3ec0c
server/lib/classes/system.inc.php
@@ -1157,9 +1157,11 @@
      
      if($found == 0) {
         //* add \n if the last line does not end with \n or \r
         if(substr($out,-1) != "\n" && substr($out,-1) != "\r") $out .= "\n";
         if(substr($out,-1) != "\n" && substr($out,-1) != "\r" && filesize($filename) > 0) $out .= "\n";
         //* add the new line at the end of the file
         if($append == 1) $out .= $new_line."\n";
         if($append == 1) {
            $out .= $new_line."\n";
         }
      }
      file_put_contents($filename,$out);
   }
@@ -1198,8 +1200,8 @@
         $user = escapeshellcmd($user);
         // I assume that the name of the (vmail group) is the same as the name of the mail user in ISPConfig 3
         $group = $user;
         chown($dir,$user);
         chgrp($dir,$group);
         if(is_dir($dir)) chown($dir,$user);
         if(is_dir($dir)) chgrp($dir,$group);
         $chown_mdsub = true;
      }
@@ -1207,7 +1209,7 @@
      $maildirsubs = array('cur','new','tmp');
      foreach ($maildirsubs as $mdsub) {
         mkdir($dir.'/'.$mdsub, 0700, true);
         if(!is_dir($dir.'/'.$mdsub)) mkdir($dir.'/'.$mdsub, 0700, true);
         if ($chown_mdsub) {
            chown($dir.'/'.$mdsub, $user);
            chgrp($dir.'/'.$mdsub, $group);
@@ -1251,6 +1253,50 @@
      $app->log('Created Maildir '.$maildir_path.' with subfolder: '.$subfolder,LOGLEVEL_DEBUG);
      
   }
   //* Function to create directory paths and chown them to a user and group
   function mkdirpath($path, $mode = 0755, $user = '', $group = '') {
      $path_parts = explode('/',$path);
      $new_path = '';
      if(is_array($path_parts)) {
         foreach($path_parts as $part) {
            $new_path .= '/'.$part;
            if(!@is_dir($new_path)) {
               mkdir($new_path);
               chmod($new_path,$mode);
               if($user != '') chown($new_path,$user);
               if($group != '') chgrp($new_path,$group);
            }
         }
      }
   }
   //* Check if a application is installed
   function is_installed($appname) {
      exec('which '.escapeshellcmd($appname).' 2> /dev/null',$out,$returncode);
      if(isset($out[0]) && stristr($out[0],$appname) && $returncode == 0) {
         return true;
      } else {
         return false;
      }
   }
   function web_folder_protection($document_root,$protect) {
      global $app,$conf;
      //* load the server configuration options
      $app->uses('getconf');
      $web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
      if($protect == true && $web_config['web_folder_protection'] == 'y') {
         //* Add protection
         if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root,'..')) exec('chattr +i '.escapeshellcmd($document_root));
      } else {
         //* Remove protection
         if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root,'..')) exec('chattr -i '.escapeshellcmd($document_root));
      }
   }
}
?>