mcramer
2012-09-13 95e8cecde56b679950d41444e8638b1acdb90a0c
server/plugins-available/shelluser_base_plugin.inc.php
@@ -72,7 +72,18 @@
      
      $app->uses('system');
      
      //* Check if the resulting path is inside the docroot
      $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($data['new']['parent_domain_id']));
      if(substr(realpath($data['new']['dir']),0,strlen($web['document_root'])) != $web['document_root']) {
         $app->log('Directory of the shell user is outside of website docroot.',LOGLEVEL_WARN);
         return false;
      }
      if($app->system->is_user($data['new']['puser'])) {
         //* Remove webfolder protection
         $app->system->web_folder_protection($web['document_root'],false);
         // Get the UID of the parent user
         $uid = intval($app->system->getuid($data['new']['puser']));
         if($uid > $this->min_uid) {
@@ -107,6 +118,9 @@
               exec($command);
               $app->log("Disabling shelluser temporarily: ".$command,LOGLEVEL_DEBUG);
            }
            //* Add webfolder protection again
            $app->system->web_folder_protection($web['document_root'],true);
         
         } else {
            $app->log("UID = $uid for shelluser:".$data['new']['username']." not allowed.",LOGLEVEL_ERROR);
@@ -121,12 +135,20 @@
      
      $app->uses('system');
      
      //* Check if the resulting path is inside the docroot
      $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($data['new']['parent_domain_id']));
      if(substr(realpath($data['new']['dir']),0,strlen($web['document_root'])) != $web['document_root']) {
         $app->log('Directory of the shell user is outside of website docroot.',LOGLEVEL_WARN);
         return false;
      }
      if($app->system->is_user($data['new']['puser'])) {
         // Get the UID of the parent user
         $uid = intval($app->system->getuid($data['new']['puser']));
         if($uid > $this->min_uid) {
            // Check if the user that we want to update exists, if not, we insert it
            if($app->system->is_user($data['old']['username'])) {
               /*
               $command = 'usermod';
               $command .= ' --home '.escapeshellcmd($data['new']['dir']);
               $command .= ' --gid '.escapeshellcmd($data['new']['pgroup']);
@@ -139,6 +161,9 @@
         
               exec($command);
               $app->log("Executed command: $command ",LOGLEVEL_DEBUG);
               */
               $groupinfo = posix_getgrnam($data['new']['pgroup']);
               $app->system->usermod($data['old']['username'],0, $groupinfo[gid], $data['new']['dir'], $data['new']['shell'], $data['new']['password'], $data['new']['username']);
               $app->log("Updated shelluser: ".$data['old']['username'],LOGLEVEL_DEBUG);
                           
               // call the ssh-rsa update function