| | |
| | | * @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'; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 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 |
| | | * |
| | | */ |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | $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) { |
| | |
| | | $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) { |
| | |
| | | $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); |
| | | } |
| | | } |
| | |
| | | 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); |
| | |
| | | function make_trashscan(){ |
| | | global $app; |
| | | //trashscan erstellen |
| | | // Template Öffnen |
| | | // Template Öffnen |
| | | $app->tpl->clear_all(); |
| | | $app->tpl->define( array(table => 'trashscan.master')); |
| | | |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |
| | | ?> |