Changeset 2584


Ignore:
Timestamp:
02/07/10 16:54:30 (2 years ago)
Author:
tomdooley
Message:

Enhancements and optimizations

Location:
branches/backup-restore/includes
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/backup-restore/includes/BackupPackage.php

    r2583 r2584  
    175175                        $this->setConfigData('webuser',         $this->getWebUserConfig()); 
    176176                        $this->setConfigData('webgroup',        $this->getWebGroupConfig()); 
     177                        $this->setConfigData('webaccess',       $this->getWebAccessConfig()); 
    177178                        $this->setConfigData('dns',                     $this->getDNSConfig()); 
    178179                        $this->setConfigData('db',                      $this->getDBConfig()); 
  • branches/backup-restore/includes/BackupPackage_ispCP.php

    r2583 r2584  
    257257 
    258258                $fields = "`htaccess_users`.`uname`". 
     259                                  "`htaccess_users`.`id`". 
    259260                                  ", `htaccess_users`.`upass`"; 
    260261 
     
    279280 
    280281                $fields = "`htaccess_groups`.`ugroup`". 
     282                                  "`htaccess_groups`.`id`". 
    281283                                  ", `htaccess_groups`.`members`"; 
    282284 
    283285                $query = "SELECT ".$fields." FROM `htaccess_users`". 
    284286                                 " WHERE `htaccess_users`.`dmn_id` = :id"; 
     287 
     288                $query = $this->db->Prepare($query); 
     289                $rs = $this->db->Execute($query, array(':id'=>$this->domain_id)); 
     290                while ($rs && !$rs->EOF) { 
     291                        $result[] = $rs->FetchRow(); 
     292                        $rs->MoveNext(); 
     293                } 
     294 
     295                return $result; 
     296        } 
     297 
     298        public function getWebAccessConfig() 
     299        { 
     300                $result = array(); 
     301 
     302                $fields = "`htaccess`.`user_id`". 
     303                                  ", `htaccess`.`group_id`". 
     304                                  ", `htaccess`.`auth_type`". 
     305                                  ", `htaccess`.`auth_name`". 
     306                                  ", `htaccess`.`path`". 
     307                                  ", `htaccess`.`status`"; 
     308 
     309                $query = "SELECT ".$fields." FROM `htaccess`". 
     310                                 " WHERE `htaccess`.`dmn_id` = :id"; 
    285311 
    286312                $query = $this->db->Prepare($query); 
  • branches/backup-restore/includes/Base.php

    r2577 r2584  
    5454                return exec($cmd, $a); 
    5555        } 
     56 
     57        protected function paramDBArray(&$a) 
     58        { 
     59                $result = array(); 
     60 
     61                foreach ($a as $key => $value) { 
     62                        if ($key{0} !== ':') { 
     63                                $result[':'.$key] = $value; 
     64                        } else { 
     65                                $result[$key] = $value; 
     66                        } 
     67                } 
     68 
     69                return $result; 
     70        } 
    5671} 
    5772 
  • branches/backup-restore/includes/RestorePackage_ispCP.php

    r2583 r2584  
    6161        protected $domain_user_id = 0; 
    6262        /** 
     63         * linux group id 
     64         */ 
     65        protected $domain_group_id = 0; 
     66        /** 
    6367         * file name of gpg encrypted domain package 
    6468         */ 
     
    7781        protected $database_ids = array(); 
    7882        /** 
    79          * new subdomain IDs (key = database name) 
     83         * new subdomain IDs (key = old subdomain id) 
    8084         */ 
    8185        protected $subdomain_ids = array(); 
     86        /** 
     87         * new web user IDs 
     88         */ 
     89        protected $webuser_ids = array(); 
     90        /** 
     91         * new web group IDs 
     92         */ 
     93        protected $webgroup_ids = array(); 
    8294 
    8395        /** 
     
    121133        protected function setDomainPermissions() 
    122134        { 
    123                 // TODO: setDomainPermissions (chown) 
     135                $user = sprintf('vu%04d', $this->domain_user_id); 
     136                $group = sprintf('vu%04d', $this->domain_group_id); 
     137                $cmd = 'chown -R '.$user.':'.$group.' '.$this->target_path; 
     138                $a = array(); 
     139                $this->shellExecute($cmd, $a); 
    124140        } 
    125141 
     
    178194                           " ORDER BY `admin_id` LIMIT 0, 1"; 
    179195                $query = $this->db->Prepare($sql); 
    180                 $rs = $this->db->Execute($query, array(':admin_type'=>'reseller', ':name'=>$reseller)); 
     196                $rs = $this->db->Execute($query, array( 
     197                        ':admin_type'   => 'reseller', 
     198                        ':name'                 => $reseller 
     199                )); 
    181200                if ($rs && !$rs->EOF) { 
    182201                        $result = $rs->fields['admin_id']; 
     
    199218                $sql = "SELECT `ip_id` FROM `server_ips` WHERE `ip_number`=:ip LIMIT 0, 1"; 
    200219                $query = $this->db->Prepare($sql); 
    201                 $rs = $this->db->Execute($query, array('ip'=>$ip)); 
     220                $rs = $this->db->Execute($query, array( 
     221                        ':ip'   => $ip 
     222                )); 
    202223                if ($rs && !$rs->EOF) { 
    203224                        $result = $rs->fields['ip_id']; 
     
    311332                                " (`domain_id`, `sqld_name`)". 
    312333                                " VALUES". 
    313                                 " (?, ?)" 
    314                         ); 
    315                         $this->db->Execute($query, array($this->domain_id, $db['sqld_name'])); 
     334                                " (:domain_id, :name)" 
     335                        ); 
     336                        $this->db->Execute($query, array( 
     337                                ':domain_id'    => $this->domain_id, 
     338                                ':name'                 => $db['sqld_name'] 
     339                        )); 
    316340                        $this->database_ids[$db['sqld_name']] = $this->db->Insert_ID(); 
    317341                } 
     
    351375                                " (`sqld_id`, `sqlu_name`, `sqlu_pass`)". 
    352376                                " VALUES". 
    353                                 " (:sqld_id, :sqlu_name, :sqlu_pass)" 
     377                                " (:sqld_id,  :name,       :password)" 
    354378                        ); 
    355379                        $this->db->Execute($query, array( 
    356                                 'sqld_id'=>$this->database_ids[$dbuser['database']], 
    357                                 'sqlu_name'=>$dbuser['sqlu_name'], 
    358                                 'sqlu_pass'=>encrypt_db_password($dbuser['sqlu_pass']) 
     380                                ':sqld_id'      => $this->database_ids[$dbuser['database']], 
     381                                ':name'         => $dbuser['sqlu_name'], 
     382                                ':password'     => encrypt_db_password($dbuser['sqlu_pass']) 
    359383                        )); 
    360384                } 
     
    374398                ); 
    375399                $this->db->Execute($query, array( 
    376                         'dbuser'=>$db_user.'@localhost', 
    377                         'dbpass'=>$user_pass 
     400                        ':dbuser'       => $db_user.'@localhost', 
     401                        ':dbpass'       => $user_pass 
    378402                )); 
    379403                $this->db->Execute($query, array( 
    380                         'dbuser'=>$db_user.'@%', 
    381                         'dbpass'=>$user_pass 
     404                        ':dbuser'       => $db_user.'@%', 
     405                        ':dbpass'       => $user_pass 
    382406                )); 
    383407        } 
    384408 
    385409        /** 
    386          * Create domain, sets $this->domain_user_id and $this->domain_id 
     410         * Create domain, sets domain_user_id, domain_group_id and domain_id 
    387411         * @return boolean true = creation successful 
    388412         */ 
     
    391415                $result = false; 
    392416 
    393                 // TODO: createDomain() 
    394                 // TODO: set domain_id 
     417                // TODO: createDomain, set domain_id 
    395418                $this->createDomainAliases(); 
    396419                $this->createSubDomains(); 
    397420 
    398                 // TODO: wait until daemon is ready 
    399                 // TODO: set domain_user_id 
     421                // TODO: wait until daemon is ready, set domain_user_id, set domain_group_id 
    400422 
    401423                return $result; 
     
    404426        protected function createDomainAliases() 
    405427        { 
    406                 // TODO: createDomainAliases 
     428                foreach ($this->configurationData['alias'] as $alias) { 
     429                        $query = $this->db->Prepare( 
     430                                "INSERT INTO `domain_aliasses`". 
     431                                " (domain_id, alias_name, alias_status, alias_mount, alias_ip_id, url_forward)". 
     432                                " VALUES". 
     433                                " (:domain_id, :name, :status, :mount, :ip_id, :url_forward)" 
     434                        ); 
     435                        $this->db->Execute($query, array( 
     436                                ':domain_id'    => $this->domain_id, 
     437                                ':name'                 => $alias['alias_name'], 
     438                                ':status'               => 'toadd', 
     439                                ':mount'                => $alias['alias_mount'], 
     440                                ':ip_id'                => $this->ip_id, 
     441                                ':url_forward'  =>$alias['url_forward'] 
     442                        )); 
     443                        $alias_id = $this->db->Insert_ID(); 
     444 
     445                        foreach ($alias['subdomain'] as $subdomain) { 
     446                                $query = $this->db->Prepare( 
     447                                        "INSERT INTO `subdomain_aliasses`". 
     448                                        " (alias_id, subdomain_alias_name, subdomain_alias_status, subdomain_alias_mount)". 
     449                                        " VALUES". 
     450                                        " (:alias_id, :name, :status, :mount)" 
     451                                ); 
     452                                $this->db->Execute($query, array( 
     453                                        ':alias_id'     => $alias_id, 
     454                                        ':name'         => $alias['subdomain_alias_name'], 
     455                                        ':status'       => 'toadd', 
     456                                        ':mount'                => $alias['subdomain_alias_mount'] 
     457                                )); 
     458                        } 
     459                } 
    407460        } 
    408461 
    409462        protected function createSubDomains() 
    410463        { 
    411                 // TODO: createSubDomains 
    412         } 
    413  
     464                foreach ($this->configurationData['subdomain'] as $subdomain) { 
     465                        $query = $this->db->Prepare( 
     466                                "INSERT INTO `subdomain`". 
     467                                " (domain_id, subdomain_name, subdomain_mount, subdomain_status)". 
     468                                " VALUES ". 
     469                                " (:domain_id, :name,        :mount,          :status)" 
     470                        ); 
     471                        $this->db->Execute($query, array( 
     472                                ':domain_id'    => $this->domain_id, 
     473                                ':name'                 => $subdomain['subdomain_name'], 
     474                                ':status'               => 'toadd', 
     475                                ':mount'                => $subdomain['alias_mount'] 
     476                        )); 
     477                        $this->subdomain_ids[$subdomain['subdomain_id']] = $this->db->Insert_ID(); 
     478                } 
     479        } 
     480 
     481        /** 
     482         * Create all E-Mail accounts for domain 
     483         */ 
    414484        protected function createEMailAccounts() 
    415485        { 
    416                 // TODO: createEMailAccounts 
     486                foreach ($this->configurationData['email'] as $email) { 
     487                        $query = $this->db->Prepare( 
     488                                "INSERT INTO `mail_users`". 
     489                                " (domain_id, mail_acc, mail_pass, mail_forward, mail_type, sub_id, status". 
     490                                "  , mail_auto_respond, mail_auto_respond_text, quota, mail_adr)". 
     491                                " VALUES ". 
     492                                " (:domain_id, :mail_acc, :mail_pass, :mail_forward, :mail_type, :sub_id, :mail_status". 
     493                                "  , :mail_auto_respond, :mail_auto_respond_text, :quota, :mail_adr". 
     494                                ")" 
     495                        ); 
     496                        $email['domain_id'] = $this->domain_id; 
     497                        $email['status'] = 'toadd'; 
     498                        $email['mail_pass'] = encrypt_db_password($email['mail_pass']); 
     499                        $email['sub_id'] = $this->subdomain_ids[$email['sub_id']]; 
     500                        $params = $this->paramDBArray($email); 
     501                        $this->db->Execute($query, $params); 
     502                } 
    417503        } 
    418504 
    419505        protected function createFTPAccounts() 
    420506        { 
    421                 // TODO: createFTPAccounts 
    422         } 
    423  
     507                $members = ''; 
     508                foreach ($this->configurationData['ftp'] as $ftp) { 
     509                        $query = $this->db->Prepare( 
     510                                "INSERT INTO `ftp_users`". 
     511                                " (userid, passwd, uid, gid, shell, homedir)". 
     512                                " VALUES ". 
     513                                " (:userid, :passwd, :uid, :gid, :shell, :homedir)" 
     514                        ); 
     515                        $ftp['uid'] = $this->domain_user_id; 
     516                        $ftp['gid'] = $this->domain_group_id; 
     517                        $params = $this->paramDBArray($ftp); 
     518                        $this->db->Execute($query, $params); 
     519 
     520                        if (!empty($members)) $members .= ','; 
     521                        $members .= $ftp['userid']; 
     522                } 
     523 
     524                if (!emtpy($members)) { 
     525                        $query = $this->db->Prepare( 
     526                                "INSERT INTO `ftp_group`". 
     527                                " (groupname, gid, members)". 
     528                                " VALUES ". 
     529                                " (:groupname, :gid, :members)" 
     530                        ); 
     531                        $a = array( 
     532                                ':groupname'    => $this->domain_name, 
     533                                ':gid'                  => $this->domain_group_id, 
     534                                ':members'              => $members 
     535                        ); 
     536                        $this->db->Execute($query, $a); 
     537                } 
     538        } 
     539 
     540        /** 
     541         * Create web users (htaccess_users) 
     542         */ 
    424543        protected function createWebUsers() 
    425544        { 
    426                 // TODO: createWebUsers 
    427         } 
    428  
     545                foreach ($this->configurationData['webuser'] as $webuser) { 
     546                        $query = $this->db->Prepare( 
     547                                "INSERT INTO `htaccess_users`". 
     548                                " (domain_id, uname, upass, status)". 
     549                                " VALUES ". 
     550                                " (:domain_id, :uname, :upass, :status)" 
     551                        ); 
     552 
     553                        $webuser['status'] = 'toadd'; 
     554                        $webuser['upass'] = encrypt_db_password($webuser['upass']); 
     555                        $webuser['domain_id'] = $this->domain_id; 
     556 
     557                        $params = $this->paramDBArray($webuser); 
     558                        $this->db->Execute($query, $params); 
     559 
     560                        $this->webuser_ids[$webuser['id']] = $this->db->Insert_ID(); 
     561                } 
     562        } 
     563 
     564        /** 
     565         * Create web groups (htaccess_groups) 
     566         */ 
    429567        protected function createWebGroups() 
    430568        { 
    431                 // TODO: createWebGroups 
     569                foreach ($this->configurationData['webgroup'] as $webgroup) { 
     570                        $query = $this->db->Prepare( 
     571                                "INSERT INTO `htaccess_groups`". 
     572                                " (dmn_id, ugroup, members, status)". 
     573                                " VALUES ". 
     574                                " (:domain_id, :ugroup, :members, :status)" 
     575                        ); 
     576 
     577                        $old_members = explode(',', $webgroup['members']); 
     578                        $new_members = array(); 
     579                        foreach ($old_members as $member_id) { 
     580                                if (isset($this->webuser_ids[$member_id])) { 
     581                                        $new_members[] = $this->webuser_ids[$member_id]; 
     582                                } 
     583                        } 
     584                        $webgroup['members'] = implode(',', $new_members); 
     585 
     586                        $webgroup['status'] = 'toadd'; 
     587                        $webgroup['domain_id'] = $this->domain_id; 
     588 
     589                        $params = $this->paramDBArray($webgroup); 
     590                        $this->db->Execute($query, $params); 
     591 
     592                        $this->webgroup_ids[$webgroup['id']] = $this->db->Insert_ID(); 
     593                } 
     594        } 
     595 
     596        protected function createWebAccess() 
     597        { 
     598                foreach ($this->configurationData['webaccess'] as $webaccess) { 
     599                        $query = $this->db->Prepare( 
     600                                "INSERT INTO `htaccess`". 
     601                                " (dmn_id, user_id, group_id, auth_type, auth_name, path, status)". 
     602                                " VALUES ". 
     603                                " (:domain_id, :user_id, :group_id, :auth_type, :auth_name, :path, :status)" 
     604                        ); 
     605 
     606                        if (!empty($webaccess['user_id'])) { 
     607                                if (isset($this->webuser_ids[$webaccess['user_id']])) { 
     608                                        $webaccess['user_id'] = $this->webuser_ids[$webaccess['user_id']]; 
     609                                } else { 
     610                                        // TODO: undefined state 
     611                                } 
     612                        } 
     613                        if (!empty($webaccess['group_id'])) { 
     614                                if (isset($this->webgroup_ids[$webaccess['group_id']])) { 
     615                                        $webaccess['group_id'] = $this->webgroup_ids[$webaccess['group_id']]; 
     616                                } else { 
     617                                        // TODO: undefined state 
     618                                } 
     619                        } 
     620 
     621                        $webaccess['status'] = 'toadd'; 
     622                        $webaccess['domain_id'] = $this->domain_id; 
     623 
     624                        $params = $this->paramDBArray($webaccess); 
     625                        $this->db->Execute($query, $params); 
     626                } 
    432627        } 
    433628 
    434629        /** 
    435630         * Run the restore, main method 
    436          * TODO: don't forget sub_id in mail accounts! 
    437631         * @return boolean true = restore successful, false = see error messages 
    438632         */ 
     
    452646                                                $this->createWebUsers(); 
    453647                                                $this->createWebGroups(); 
     648                                                $this->createWebAccess(); 
    454649                                                $this->setDomainPermissions(); 
    455650 
  • branches/backup-restore/includes/iBackupPackage.php

    r2562 r2584  
    2929        public function getWebUserConfig(); 
    3030        public function getWebGroupConfig(); 
     31        public function getWebAccessConfig(); 
    3132        public function getDNSConfig(); 
    3233        public function getDBConfig(); 
Note: See TracChangeset for help on using the changeset viewer.