| | |
| | | * @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'; |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | function copy($file1,$file2) { |
| | | 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) { |
| | |
| | | } |
| | | } |
| | | |
| | | /* |
| | | function usermod($user, $groups){ |
| | | global $app; |
| | | if($this->is_user($user)){ |
| | |
| | | return false; |
| | | } |
| | | } |
| | | */ |
| | | |
| | | /**boot autostart etc |
| | | * |
| | |
| | | function make_trashscan(){ |
| | | global $app; |
| | | //trashscan erstellen |
| | | // Template Öffnen |
| | | // Template Öffnen |
| | | $app->tpl->clear_all(); |
| | | $app->tpl->define( array(table => 'trashscan.master')); |
| | | |
| | |
| | | if($document_root != '' && $document_root != '/' && strlen($document_root) > 6 && !stristr($document_root,'..')) exec('chattr -i '.escapeshellcmd($document_root)); |
| | | } |
| | | } |
| | | |
| | | function usermod($username, $uid = 0, $gid = 0, $home = '', $shell = '', $password = '', $login = '') { |
| | | global $app; |
| | | |
| | | if($login == '') $login = $username; |
| | | |
| | | //* Change values in /etc/passwd |
| | | $passwd_file_array = file('/etc/passwd'); |
| | | if(is_array($passwd_file_array)) { |
| | | foreach($passwd_file_array as $line) { |
| | | $line = trim($line); |
| | | $parts = explode(':',$line); |
| | | if($parts[0] == $username) { |
| | | if(trim($login) != '' && trim($login) != trim($username)) $parts[0] = trim($login); |
| | | if(!empty($uid)) $parts[2] = trim($uid); |
| | | if(!empty($gid)) $parts[3] = trim($gid); |
| | | if(trim($home) != '') $parts[5] = trim($home); |
| | | if(trim($shell) != '') $parts[6] = trim($shell); |
| | | $new_line = implode(':',$parts); |
| | | copy('/etc/passwd','/etc/passwd~'); |
| | | chmod('/etc/passwd~',0600); |
| | | $app->uses('system'); |
| | | $app->system->replaceLine('/etc/passwd',$line,$new_line,1,0); |
| | | } |
| | | } |
| | | unset($passwd_file_array); |
| | | } |
| | | |
| | | //* If username != login, change username in group and gshadow file |
| | | if($username != $login) { |
| | | $group_file_array = file('/etc/group'); |
| | | if(is_array($group_file_array)) { |
| | | foreach($group_file_array as $line) { |
| | | $line = trim($line); |
| | | $parts = explode(':',$line); |
| | | if(strstr($parts[3],$username)) { |
| | | $uparts = explode(',',$parts[3]); |
| | | if(is_array($uparts)) { |
| | | foreach($uparts as $key => $val) { |
| | | if($val == $username) $uparts[$key] = $login; |
| | | } |
| | | } |
| | | $parts[3] = implode(',',$uparts); |
| | | $new_line = implode(':',$parts); |
| | | copy('/etc/group','/etc/group~'); |
| | | chmod('/etc/group~',0600); |
| | | $app->system->replaceLine('/etc/group',$line,$new_line,1,0); |
| | | } |
| | | } |
| | | } |
| | | unset($group_file_array); |
| | | |
| | | $gshadow_file_array = file('/etc/gshadow'); |
| | | if(is_array($gshadow_file_array)) { |
| | | foreach($gshadow_file_array as $line) { |
| | | $line = trim($line); |
| | | $parts = explode(':',$line); |
| | | if(strstr($parts[3],$username)) { |
| | | $uparts = explode(',',$parts[3]); |
| | | if(is_array($uparts)) { |
| | | foreach($uparts as $key => $val) { |
| | | if($val == $username) $uparts[$key] = $login; |
| | | } |
| | | } |
| | | $parts[3] = implode(',',$uparts); |
| | | $new_line = implode(':',$parts); |
| | | copy('/etc/gshadow','/etc/gshadow~'); |
| | | chmod('/etc/gshadow~',0600); |
| | | $app->system->replaceLine('/etc/gshadow',$line,$new_line,1,0); |
| | | } |
| | | } |
| | | } |
| | | unset($group_file_array); |
| | | } |
| | | |
| | | |
| | | //* When password or login name has been changed |
| | | if($password != '' || $username != $login) { |
| | | $shadow_file_array = file('/etc/shadow'); |
| | | if(is_array($shadow_file_array)) { |
| | | foreach($shadow_file_array as $line) { |
| | | $line = trim($line); |
| | | $parts = explode(':',$line); |
| | | if($parts[0] == $username) { |
| | | if(trim($login) != '' && trim($login) != trim($username)) $parts[0] = trim($login); |
| | | if(trim($password) != '') $parts[1] = trim($password); |
| | | $new_line = implode(':',$parts); |
| | | copy('/etc/shadow','/etc/shadow~'); |
| | | chmod('/etc/shadow~',0600); |
| | | $app->system->replaceLine('/etc/shadow',$line,$new_line,1,0); |
| | | } |
| | | } |
| | | } |
| | | unset($shadow_file_array); |
| | | } |
| | | } |
| | | |
| | | } |
| | | ?> |