Changeset 2584
- Timestamp:
- 02/07/10 16:54:30 (2 years ago)
- Location:
- branches/backup-restore/includes
- Files:
-
- 5 edited
-
BackupPackage.php (modified) (1 diff)
-
BackupPackage_ispCP.php (modified) (2 diffs)
-
Base.php (modified) (1 diff)
-
RestorePackage_ispCP.php (modified) (11 diffs)
-
iBackupPackage.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/backup-restore/includes/BackupPackage.php
r2583 r2584 175 175 $this->setConfigData('webuser', $this->getWebUserConfig()); 176 176 $this->setConfigData('webgroup', $this->getWebGroupConfig()); 177 $this->setConfigData('webaccess', $this->getWebAccessConfig()); 177 178 $this->setConfigData('dns', $this->getDNSConfig()); 178 179 $this->setConfigData('db', $this->getDBConfig()); -
branches/backup-restore/includes/BackupPackage_ispCP.php
r2583 r2584 257 257 258 258 $fields = "`htaccess_users`.`uname`". 259 "`htaccess_users`.`id`". 259 260 ", `htaccess_users`.`upass`"; 260 261 … … 279 280 280 281 $fields = "`htaccess_groups`.`ugroup`". 282 "`htaccess_groups`.`id`". 281 283 ", `htaccess_groups`.`members`"; 282 284 283 285 $query = "SELECT ".$fields." FROM `htaccess_users`". 284 286 " 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"; 285 311 286 312 $query = $this->db->Prepare($query); -
branches/backup-restore/includes/Base.php
r2577 r2584 54 54 return exec($cmd, $a); 55 55 } 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 } 56 71 } 57 72 -
branches/backup-restore/includes/RestorePackage_ispCP.php
r2583 r2584 61 61 protected $domain_user_id = 0; 62 62 /** 63 * linux group id 64 */ 65 protected $domain_group_id = 0; 66 /** 63 67 * file name of gpg encrypted domain package 64 68 */ … … 77 81 protected $database_ids = array(); 78 82 /** 79 * new subdomain IDs (key = database name)83 * new subdomain IDs (key = old subdomain id) 80 84 */ 81 85 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(); 82 94 83 95 /** … … 121 133 protected function setDomainPermissions() 122 134 { 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); 124 140 } 125 141 … … 178 194 " ORDER BY `admin_id` LIMIT 0, 1"; 179 195 $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 )); 181 200 if ($rs && !$rs->EOF) { 182 201 $result = $rs->fields['admin_id']; … … 199 218 $sql = "SELECT `ip_id` FROM `server_ips` WHERE `ip_number`=:ip LIMIT 0, 1"; 200 219 $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 )); 202 223 if ($rs && !$rs->EOF) { 203 224 $result = $rs->fields['ip_id']; … … 311 332 " (`domain_id`, `sqld_name`)". 312 333 " 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 )); 316 340 $this->database_ids[$db['sqld_name']] = $this->db->Insert_ID(); 317 341 } … … 351 375 " (`sqld_id`, `sqlu_name`, `sqlu_pass`)". 352 376 " VALUES". 353 " (:sqld_id, :sqlu_name, :sqlu_pass)"377 " (:sqld_id, :name, :password)" 354 378 ); 355 379 $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']) 359 383 )); 360 384 } … … 374 398 ); 375 399 $this->db->Execute($query, array( 376 ' dbuser'=>$db_user.'@localhost',377 ' dbpass'=>$user_pass400 ':dbuser' => $db_user.'@localhost', 401 ':dbpass' => $user_pass 378 402 )); 379 403 $this->db->Execute($query, array( 380 ' dbuser'=>$db_user.'@%',381 ' dbpass'=>$user_pass404 ':dbuser' => $db_user.'@%', 405 ':dbpass' => $user_pass 382 406 )); 383 407 } 384 408 385 409 /** 386 * Create domain, sets $this->domain_user_id and $this->domain_id410 * Create domain, sets domain_user_id, domain_group_id and domain_id 387 411 * @return boolean true = creation successful 388 412 */ … … 391 415 $result = false; 392 416 393 // TODO: createDomain() 394 // TODO: set domain_id 417 // TODO: createDomain, set domain_id 395 418 $this->createDomainAliases(); 396 419 $this->createSubDomains(); 397 420 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 400 422 401 423 return $result; … … 404 426 protected function createDomainAliases() 405 427 { 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 } 407 460 } 408 461 409 462 protected function createSubDomains() 410 463 { 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 */ 414 484 protected function createEMailAccounts() 415 485 { 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 } 417 503 } 418 504 419 505 protected function createFTPAccounts() 420 506 { 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 */ 424 543 protected function createWebUsers() 425 544 { 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 */ 429 567 protected function createWebGroups() 430 568 { 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 } 432 627 } 433 628 434 629 /** 435 630 * Run the restore, main method 436 * TODO: don't forget sub_id in mail accounts!437 631 * @return boolean true = restore successful, false = see error messages 438 632 */ … … 452 646 $this->createWebUsers(); 453 647 $this->createWebGroups(); 648 $this->createWebAccess(); 454 649 $this->setDomainPermissions(); 455 650 -
branches/backup-restore/includes/iBackupPackage.php
r2562 r2584 29 29 public function getWebUserConfig(); 30 30 public function getWebGroupConfig(); 31 public function getWebAccessConfig(); 31 32 public function getDNSConfig(); 32 33 public function getDBConfig();
Note: See TracChangeset
for help on using the changeset viewer.
