tbrehm
2013-07-31 615a0a96618fa99e7e452523145d6c0f238d4473
server/lib/classes/system.inc.php
@@ -41,9 +41,9 @@
    * @return system
    */
   public function system(){
      global $go_info;
        $this->server_id = $go_info['isp']['server_id'];
        $this->server_conf = $go_info['isp']['server_conf'];
      //global $go_info;
        //$this->server_id = $go_info['isp']['server_id'];
        //$this->server_conf = $go_info['isp']['server_conf'];
        $this->server_conf['passwd_datei'] = '/etc/passwd';
        $this->server_conf['shadow_datei'] = '/etc/shadow';
        $this->server_conf['group_datei'] = '/etc/group';
@@ -575,6 +575,58 @@
   }
   
   /**
    * Get the group id from an group
    *
    */
   function getgid($group){
      global $app;
        if($this->is_group($group)){
          $group_datei = $this->server_conf['group_datei'];
         $groups = $app->file->no_comments($group_datei);
         $lines = explode("\n", $groups);
         if(is_array($lines)){
          foreach($lines as $line){
               if(trim($line) != ""){
                  list($f1, $f2, $f3, $f4) = explode(':', $line);
                  if($f1 == $group) return $f3;
               }
            }
         }
        } else {
          return false;
        }
   }
   /**
   * Return info about a group by name
   *
   */
   function posix_getgrnam($group) {
      if(!function_exists('posix_getgrnam')){
         $group_datei = $this->server_conf['group_datei'];
         $cmd = 'grep -m 1 "^'.$group.':" '.$group_datei;
         exec($cmd, $output, $return_var);
         if($return_var != 0 || !$output[0]) return false;
         list($f1, $f2, $f3, $f4) = explode(':', $output[0]);
         $f2 = trim($f2);
         $f3 = trim($f3);
         $f4 = trim($f4);
         if($f4 != ''){
            $members = explode(',', $f4);
         } else {
            $members = array();
         }
         $group_details = array(   'name' => $group,
                           'passwd' => $f2,
                           'members' => $members,
                           'gid' => $f3);
         return $group_details;
      } else {
         return posix_getgrnam($group);
      }
    }
   /**
    * Get all information from a user
    *
    */
@@ -617,7 +669,12 @@
      return false;
     }
     if(file_exists($file)) {
      return chown($file, $owner);
      if(@chown($file, $owner)) {
         return true;
      } else {
         $app->log("chown failed: $file : $owner",LOGLEVEL_DEBUG);
         return false;
      }
     }
   }
   
@@ -628,7 +685,12 @@
      return false;
     }
     if(file_exists($file)) {
      return chgrp($file, $group);
      if(@chgrp($file, $group)) {
         return true;
      } else {
         $app->log("chgrp failed: $file : $group",LOGLEVEL_DEBUG);
         return false;
      }
     }
   }
   
@@ -639,7 +701,12 @@
         $app->log("Action aborted, file is a symlink: $file",LOGLEVEL_WARN);
         return false;
      }
      return chmod($file, $mode);
      if(@chmod($file, $mode)) {
         return true;
      } else {
         $app->log("chmod failed: $file : $mode",LOGLEVEL_DEBUG);
         return false;
      }
   }
   
   function file_put_contents($filename, $data, $allow_symlink = false) {
@@ -658,7 +725,7 @@
         $app->log("Action aborted, file is a symlink: $filename",LOGLEVEL_WARN);
         return false;
      }
      return file_put_contents($filename, $data);
      return file_get_contents($filename, $data);
   }
   
   function rename($filename, $new_filename, $allow_symlink = false) {
@@ -676,11 +743,16 @@
         $app->log("Action aborted, file is a symlink: $dirname",LOGLEVEL_WARN);
         return false;
      }
      return mkdir($dirname);
      if(@mkdir($dirname)) {
         return true;
      } else {
         $app->log("mkdir failed: $dirname",LOGLEVEL_DEBUG);
         return false;
      }
   }
   
   function unlink($file) {
      if(file_exists($filename)) {
   function unlink($filename) {
      if(file_exists($filename) || is_link($filename)) {
         return unlink($filename);
      }
   }
@@ -689,13 +761,26 @@
      return copy($file1,$file2);
   }
   
   function touch($file, $allow_symlink = false){
     global $app;
     if($allow_symlink == false && @file_exists($file) && $this->checkpath($file) == false) {
      $this->unlink($file);
     }
     if(@touch($file)) {
         return true;
     } else {
         $app->log("touch failed: $file",LOGLEVEL_DEBUG);
         return false;
     }
   }
   function checkpath($path) {
      $path = trim($path);
      //* We allow only absolute paths
      if(substr($path,0,1) != '/') return false;
      
      //* We allow only some characters in the path
      if(!preg_match('/[a-zA-Z0-9_\.\-]{1,}/',$path)) return false;
      if(!preg_match('/^\/[a-zA-Z0-9_\/\.\-]{1,}$/',$path)) return false;
      
      //* Check path for symlinks
      $path_parts = explode('/',$path);
@@ -1132,7 +1217,7 @@
   function make_trashscan(){
      global $app;
        //trashscan erstellen
        // Template Öffnen
        // Template Öffnen
        $app->tpl->clear_all();
        $app->tpl->define( array(table    => 'trashscan.master'));
   
@@ -1494,6 +1579,23 @@
         unset($shadow_file_array);
      }
   }
   function intval($string, $force_numeric = false) {
        if(intval($string) == 2147483647) {
            if($force_numeric == true) return floatval($string);
            elseif(preg_match('/^([-]?)[0]*([1-9][0-9]*)([^0-9].*)*$/', $string, $match)) return $match[1].$match[2];
            else return 0;
        } else {
            return intval($string);
        }
    }
   function is_mounted($mountpoint){
      //$cmd = 'df 2>/dev/null | grep " '.$mountpoint.'$"';
      $cmd = 'mount 2>/dev/null | grep " on '.$mountpoint.' type "';
      exec($cmd, $output, $return_var);
      return $return_var == 0 ? true : false;
   }
}
?>