| | |
| | | |
| | | global $app, $conf; |
| | | |
| | | require_once('../../lib/config.inc.php'); |
| | | require_once '../../lib/config.inc.php'; |
| | | |
| | | require_once('../../lib/app.inc.php'); |
| | | require_once '../../lib/app.inc.php'; |
| | | |
| | | /** |
| | | * |
| | | * @param db $exdb |
| | | * @return array |
| | | * @return array |
| | | */ |
| | | function read_limit_data($exdb) { |
| | | $limits = array(); |
| | | // Limits |
| | | $limit_data = $exdb->queryAllRecords("SELECT l.id, l.limit_name, l.value FROM Limits as l"); |
| | | foreach($limit_data as $entry) { |
| | | if(array_key_exists($entry['id'], $limits) == false) $limits[$entry['id']] = array(); |
| | | $limits[$entry['id']][$entry['limit_name']] = $entry['value']; |
| | | |
| | | // limits that are there: |
| | | /* |
| | | |
| | | function read_limit_data($exdb) { |
| | | $limits = array(); |
| | | // Limits |
| | | $limit_data = $exdb->queryAllRecords("SELECT l.id, l.limit_name, l.value FROM Limits as l"); |
| | | foreach($limit_data as $entry) { |
| | | if(array_key_exists($entry['id'], $limits) == false) $limits[$entry['id']] = array(); |
| | | $limits[$entry['id']][$entry['limit_name']] = $entry['value']; |
| | | |
| | | // limits that are there: |
| | | /* |
| | | disk_space |
| | | disk_space_soft |
| | | expiration |
| | |
| | | max_wu |
| | | mbox_quota |
| | | */ |
| | | } |
| | | |
| | | return $limits; |
| | | } |
| | | |
| | | return $limits; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * |
| | |
| | | * @param int $id |
| | | * @param string $limit |
| | | * @param mixed $default |
| | | * @return mixed |
| | | * @return mixed |
| | | */ |
| | | function get_limit($limits, $id, $limit, $default = false) { |
| | | $ret = $default; |
| | | if(isset($limits[$id][$limit])) $ret = $limits[$id][$limit]; |
| | | |
| | | return $ret; |
| | | $ret = $default; |
| | | if(isset($limits[$id][$limit])) $ret = $limits[$id][$limit]; |
| | | |
| | | return $ret; |
| | | } |
| | | |
| | | function get_option($options, $option, $default = false) { |
| | | $ret = $default; |
| | | if(isset($options[$option])) $ret = $options[$option]; |
| | | |
| | | return $ret; |
| | | $ret = $default; |
| | | if(isset($options[$option])) $ret = $options[$option]; |
| | | |
| | | return $ret; |
| | | } |
| | | |
| | | function add_dot($string) { |
| | | if(strlen($string) > 0 && substr($string, -1, 1) !== '.') $string .= '.'; |
| | | return $string; |
| | | if(strlen($string) > 0 && substr($string, -1, 1) !== '.') $string .= '.'; |
| | | return $string; |
| | | } |
| | | |
| | | function byte_to_mbyte($byte) { |
| | | if($byte <= 0) return $byte; // limit = -1 -> unlimited |
| | | return round($byte / (1024*1024)); |
| | | if($byte <= 0) return $byte; // limit = -1 -> unlimited |
| | | return round($byte / (1024*1024)); |
| | | } |
| | | |
| | | function yes_no($num, $reverse = false) { |
| | | return (($num == 1 && !$reverse) || ($num != 1 && $reverse) ? 'y' : 'n'); |
| | | return ($num == 1 && !$reverse) || ($num != 1 && $reverse) ? 'y' : 'n'; |
| | | } |
| | | |
| | | // taken from the web_domain_edit.php |
| | | function id_hash($id,$levels) { |
| | | $hash = "" . $id % 10 ; |
| | | $id /= 10 ; |
| | | $levels -- ; |
| | | while ( $levels > 0 ) { |
| | | $hash .= "/" . $id % 10 ; |
| | | $id /= 10 ; |
| | | $levels-- ; |
| | | } |
| | | return $hash; |
| | | function id_hash($id, $levels) { |
| | | $hash = "" . $id % 10 ; |
| | | $id /= 10 ; |
| | | $levels -- ; |
| | | while ( $levels > 0 ) { |
| | | $hash .= "/" . $id % 10 ; |
| | | $id /= 10 ; |
| | | $levels-- ; |
| | | } |
| | | return $hash; |
| | | } |
| | | |
| | | $COMMANDS = 'unset HISTFILE |
| | |
| | | '; |
| | | |
| | | function add_command($cmd) { |
| | | global $COMMANDS; |
| | | |
| | | $COMMANDS .= $cmd . "\n"; |
| | | global $COMMANDS; |
| | | |
| | | $COMMANDS .= $cmd . "\n"; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | // Start migrating plesk data |
| | | if(isset($_POST['start']) && $_POST['start'] == 1) { |
| | | |
| | | |
| | | //* Set variable sin template |
| | | $app->tpl->setVar('dbhost',$_POST['dbhost']); |
| | | $app->tpl->setVar('dbname',$_POST['dbname']); |
| | | $app->tpl->setVar('dbuser',$_POST['dbuser']); |
| | | $app->tpl->setVar('dbpassword',$_POST['dbpassword']); |
| | | $app->tpl->setVar('webcontent',$_POST['webcontent']); |
| | | $app->tpl->setVar('mailcontent',$_POST['mailcontent']); |
| | | |
| | | $app->tpl->setVar('dbhost', $_POST['dbhost']); |
| | | $app->tpl->setVar('dbname', $_POST['dbname']); |
| | | $app->tpl->setVar('dbuser', $_POST['dbuser']); |
| | | $app->tpl->setVar('dbpassword', $_POST['dbpassword']); |
| | | $app->tpl->setVar('webcontent', $_POST['webcontent']); |
| | | $app->tpl->setVar('mailcontent', $_POST['mailcontent']); |
| | | |
| | | //* Establish connection to external database |
| | | $msg .= 'Connecting to external database...<br />'; |
| | | |
| | | |
| | | //* Backup DB login details |
| | | /*$conf_bak['db_host'] = $conf['db_host']; |
| | | $conf_bak['db_database'] = $conf['db_database']; |
| | | $conf_bak['db_user'] = $conf['db_user']; |
| | | $conf_bak['db_password'] = $conf['db_password'];*/ |
| | | |
| | | |
| | | //* Set external Login details |
| | | $conf['imp_db_host'] = $_POST['dbhost']; |
| | | $conf['imp_db_database'] = $_POST['dbname']; |
| | | $conf['imp_db_user'] = $_POST['dbuser']; |
| | | $conf['imp_db_password'] = $_POST['dbpassword']; |
| | | $conf['imp_db_charset'] = $conf['db_charset']; |
| | | $conf['imp_db_new_link'] = $conf['db_new_link']; |
| | | $conf['imp_db_client_flags'] = $conf['db_client_flags']; |
| | | |
| | | $conf['imp_db_charset'] = $conf['db_charset']; |
| | | $conf['imp_db_new_link'] = $conf['db_new_link']; |
| | | $conf['imp_db_client_flags'] = $conf['db_client_flags']; |
| | | |
| | | //* create new db object |
| | | $exdb = new db('imp'); |
| | | |
| | | $msg .= 'db object created...<br />'; |
| | | |
| | | $importer = new importer(); |
| | | $session_id = 'ISPC3'; // set dummy session id for remoting lib |
| | | $msg .= 'importer object created...<br />'; |
| | | |
| | | // import on server |
| | | |
| | | $msg .= 'db object created...<br />'; |
| | | |
| | | $importer = new importer(); |
| | | $session_id = 'ISPC3'; // set dummy session id for remoting lib |
| | | $msg .= 'importer object created...<br />'; |
| | | |
| | | // import on server |
| | | $server_id = 1; |
| | | |
| | | |
| | | //* Connect to DB |
| | | if($exdb !== false) { |
| | | $msg .= 'Connecting to external database done...<br />'; |
| | | |
| | | $limits = read_limit_data($exdb); |
| | | |
| | | $msg .= 'read all limit data...<br />'; |
| | | |
| | | // param_id -> cl_params table - not needed for import |
| | | // tpye = admin, reseller, client |
| | | $admins = $exdb->queryAllRecords("SELECT c.id, c.parent_id, c.type, c.cr_date, c.cname, c.pname, c.login, c.account_id, a.password, a.type as `pwtype`, c.status, c.phone, c.fax, c.email, c.address, c.city, c.state, c.pcode, c.country, c.locale, c.limits_id, c.params_id, c.perm_id, c.pool_id, c.logo_id, c.tmpl_id, c.guid, c.overuse, c.vendor_id, c.external_id FROM clients as c LEFT JOIN accounts as a ON (a.id = c.account_id) WHERE c.type = 'admin' ORDER BY c.parent_id, c.id"); |
| | | $resellers = $exdb->queryAllRecords("SELECT c.id, c.parent_id, c.type, c.cr_date, c.cname, c.pname, c.login, c.account_id, a.password, a.type as `pwtype`, c.status, c.phone, c.fax, c.email, c.address, c.city, c.state, c.pcode, c.country, c.locale, c.limits_id, c.params_id, c.perm_id, c.pool_id, c.logo_id, c.tmpl_id, c.guid, c.overuse, c.vendor_id, c.external_id FROM clients as c LEFT JOIN accounts as a ON (a.id = c.account_id) WHERE c.type = 'reseller' ORDER BY c.parent_id, c.id"); |
| | | $clients = $exdb->queryAllRecords("SELECT c.id, c.parent_id, c.type, c.cr_date, c.cname, c.pname, c.login, c.account_id, a.password, a.type as `pwtype`, c.status, c.phone, c.fax, c.email, c.address, c.city, c.state, c.pcode, c.country, c.locale, c.limits_id, c.params_id, c.perm_id, c.pool_id, c.logo_id, c.tmpl_id, c.guid, c.overuse, c.vendor_id, c.external_id FROM clients as c LEFT JOIN accounts as a ON (a.id = c.account_id) WHERE c.type = 'client' ORDER BY c.parent_id, c.id"); |
| | | |
| | | $users = array_merge($admins, $resellers, $clients); |
| | | $msg .= 'read all users (' . count($users) . ')...<br />'; |
| | | |
| | | |
| | | $plesk_ispc_ids = array(); // array with key = plesk id, value = ispc id |
| | | |
| | | $phpopts = array('no', 'fast-cgi', 'cgi', 'mod', 'suphp', 'php-fpm'); |
| | | |
| | | // import admins / resellers |
| | | for($i = 0; $i < count($users); $i++) { |
| | | $entry = $users[$i]; |
| | | |
| | | $old_client = $importer->client_get_by_username($session_id, $entry['login']); |
| | | if($old_client) { |
| | | if($old_client['client_id'] == 0) { |
| | | $entry['login'] = 'psa_' . $entry['login']; |
| | | $old_client = $importer->client_get_by_username($session_id, $entry['login']); |
| | | if($old_client) { |
| | | $msg .= $entry['login'] . ' existed, updating id ' . $old_client['client_id'] . '<br />'; |
| | | } |
| | | } else { |
| | | $msg .= $entry['login'] . ' existed, updating id ' . $old_client['client_id'] . '<br />'; |
| | | } |
| | | } |
| | | $params = array( |
| | | 'company_name' => $entry['cname'], |
| | | 'contact_name' => $entry['pname'], |
| | | 'customer_no' => 'Plesk' . $entry['id'], |
| | | 'username' => $entry['login'], |
| | | 'password' => $entry['password'], |
| | | 'language' => substr($entry['locale'], 0, 2), // plesk stores as de-DE or en-US |
| | | //'usertheme' => '', |
| | | 'street' => $entry['address'], |
| | | 'zip' => $entry['pcode'], |
| | | 'city' => $entry['city'], |
| | | 'state' => $entry['state'], |
| | | 'country' => $entry['country'], |
| | | 'telephone' => $entry['phone'], |
| | | //'mobile' => $entry[''], |
| | | 'fax' => $entry['fax'], |
| | | 'email' => $entry['email'], |
| | | //'internet' => $entry[''], |
| | | //'icq' => $entry[''], |
| | | //'vat_id' => $entry[''], |
| | | //'company_id' => $entry[''], |
| | | //'bank_account_number' => $entry[''], |
| | | //'bank_code' => $entry[''], |
| | | //'bank_name' => $entry[''], |
| | | //'bank_account_iban' => $entry[''], |
| | | //'bank_account_swift' => $entry[''], |
| | | 'notes' => 'imported from Plesk id ' . $entry['id'], |
| | | //'template_master' => $entry[''], |
| | | //'template_additional' => $entry[''], |
| | | //'default_mailserver' => $entry[''], |
| | | 'limit_maildomain' => get_limit($limits, $entry['id'], 'max_site', -1), |
| | | 'limit_mailbox' => get_limit($limits, $entry['id'], 'max_box', -1), |
| | | 'limit_mailalias' => get_limit($limits, $entry['id'], 'max_mn', -1), |
| | | 'limit_mailaliasdomain' => get_limit($limits, $entry['id'], 'max_dom_aliases', -1), |
| | | 'limit_mailmailinglist' => get_limit($limits, $entry['id'], 'max_maillists', -1), |
| | | 'limit_mailforward' => get_limit($limits, $entry['id'], 'max_mn', -1), |
| | | 'limit_mailcatchall' => 1, |
| | | 'limit_mailrouting' => 0, |
| | | 'limit_mailfilter' => 0, |
| | | 'limit_fetchmail' => 0, |
| | | 'limit_mailquota' => get_limit($limits, $entry['id'], 'mbox_quota', -1), |
| | | 'limit_spamfilter_wblist' => 0, |
| | | 'limit_spamfilter_user' => 0, |
| | | 'limit_spamfilter_policy' => 0, |
| | | //'default_webserver' => '', |
| | | 'limit_web_domain' => get_limit($limits, $entry['id'], 'max_site', -1), |
| | | 'limit_web_quota' => intval(get_limit($limits, $entry['id'], 'disk_space', -1)), |
| | | 'web_php_options' => implode(',', $phpopts), |
| | | 'limit_web_aliasdomain' => get_limit($limits, $entry['id'], 'max_dom_aliases', -1), |
| | | 'limit_web_subdomain' => get_limit($limits, $entry['id'], 'max_subdom', -1), |
| | | 'limit_ftp_user' => (string)($app->functions->intval(get_limit($limits, $entry['id'], 'max_subftp_users', -2)) + 1), |
| | | 'limit_shell_user' => 0, |
| | | 'ssh_chroot' => 'no,jailkit', |
| | | 'limit_webdav_user' => get_limit($limits, $entry['id'], 'max_wu', 0), |
| | | //'default_dnsserver' => '', |
| | | 'limit_dns_zone' => -1, |
| | | 'limit_dns_slave_zone' => -1, |
| | | 'limit_dns_record' => -1, |
| | | 'limit_client' => ($entry['type'] == 'client' ? 0 : -1), |
| | | //'default_dbserver' => '', |
| | | 'limit_database' => get_limit($limits, $entry['id'], 'max_db', -1), |
| | | 'limit_cron' => 0, |
| | | 'limit_cron_type' => 'url', |
| | | 'limit_cron_frequency' => '5', |
| | | 'limit_traffic_quota' => intval(get_limit($limits, $entry['id'], 'max_traffic', -1)), |
| | | 'limit_openvz_vm' => 0, |
| | | 'limit_openvz_vm_template_id' => '' |
| | | ); |
| | | $reseller_id = 0; |
| | | if($entry['parent_id'] != 0) { |
| | | if(array_key_exists($entry['parent_id'], $plesk_ispc_ids)) { |
| | | $reseller_id = $plesk_ispc_ids[$entry['parent_id']]; |
| | | } |
| | | } |
| | | |
| | | if($old_client) { |
| | | $new_id = $old_client['client_id']; |
| | | $ok = $importer->client_update($session_id, $old_client['client_id'], $reseller_id, array_merge($old_client, $params)); |
| | | if($ok === false) { |
| | | |
| | | } |
| | | } else { |
| | | $new_id = $importer->client_add($session_id, $reseller_id, $params); |
| | | } |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Client " . $entry['id'] . " (" . $entry['pname'] . ") could not be inserted/updated.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Client " . $entry['id'] . " (" . $entry['pname'] . ") inserted/updated.<br />"; |
| | | } |
| | | |
| | | $plesk_ispc_ids[$entry['id']] = $new_id; |
| | | } |
| | | unset($users); |
| | | unset($clients); |
| | | unset($resellers); |
| | | unset($admins); |
| | | |
| | | $web_config = $app->getconf->get_server_config($server_id,'web'); |
| | | |
| | | $domains = $exdb->queryAllRecords("SELECT d.id, d.cr_date, d.name, d.displayName, d.dns_zone_id, d.status, d.htype, d.real_size, d.cl_id, d.limits_id, d.params_id, d.guid, d.overuse, d.gl_filter, d.vendor_id, d.webspace_id, d.webspace_status, d.permissions_id, d.external_id FROM domains as d WHERE d.parentDomainId = 0"); |
| | | $dom_ftp_users = array(); |
| | | $domain_ids = array(); |
| | | $domain_roots = array(); |
| | | $domain_owners = array(); |
| | | $dns_domain_ids = array(); |
| | | $maildomain_ids = array(); |
| | | foreach($domains as $entry) { |
| | | $res = $exdb->query("SELECT d.dom_id, d.param, d.val FROM dom_param as d WHERE d.dom_id = '" . $entry['id'] . "'"); |
| | | $options = array(); |
| | | while($opt = $exdb->nextRecord()) { |
| | | $options[$opt['param']] = $opt['val']; |
| | | } |
| | | |
| | | /* TODO: options that might be used later: |
| | | $msg .= 'Connecting to external database done...<br />'; |
| | | |
| | | $limits = read_limit_data($exdb); |
| | | |
| | | $msg .= 'read all limit data...<br />'; |
| | | |
| | | // param_id -> cl_params table - not needed for import |
| | | // tpye = admin, reseller, client |
| | | $admins = $exdb->queryAllRecords("SELECT c.id, c.parent_id, c.type, c.cr_date, c.cname, c.pname, c.login, c.account_id, a.password, a.type as `pwtype`, c.status, c.phone, c.fax, c.email, c.address, c.city, c.state, c.pcode, c.country, c.locale, c.limits_id, c.params_id, c.perm_id, c.pool_id, c.logo_id, c.tmpl_id, c.guid, c.overuse, c.vendor_id, c.external_id FROM clients as c LEFT JOIN accounts as a ON (a.id = c.account_id) WHERE c.type = 'admin' ORDER BY c.parent_id, c.id"); |
| | | $resellers = $exdb->queryAllRecords("SELECT c.id, c.parent_id, c.type, c.cr_date, c.cname, c.pname, c.login, c.account_id, a.password, a.type as `pwtype`, c.status, c.phone, c.fax, c.email, c.address, c.city, c.state, c.pcode, c.country, c.locale, c.limits_id, c.params_id, c.perm_id, c.pool_id, c.logo_id, c.tmpl_id, c.guid, c.overuse, c.vendor_id, c.external_id FROM clients as c LEFT JOIN accounts as a ON (a.id = c.account_id) WHERE c.type = 'reseller' ORDER BY c.parent_id, c.id"); |
| | | $clients = $exdb->queryAllRecords("SELECT c.id, c.parent_id, c.type, c.cr_date, c.cname, c.pname, c.login, c.account_id, a.password, a.type as `pwtype`, c.status, c.phone, c.fax, c.email, c.address, c.city, c.state, c.pcode, c.country, c.locale, c.limits_id, c.params_id, c.perm_id, c.pool_id, c.logo_id, c.tmpl_id, c.guid, c.overuse, c.vendor_id, c.external_id FROM clients as c LEFT JOIN accounts as a ON (a.id = c.account_id) WHERE c.type = 'client' ORDER BY c.parent_id, c.id"); |
| | | |
| | | $users = array_merge($admins, $resellers, $clients); |
| | | $msg .= 'read all users (' . count($users) . ')...<br />'; |
| | | |
| | | |
| | | $plesk_ispc_ids = array(); // array with key = plesk id, value = ispc id |
| | | |
| | | $phpopts = array('no', 'fast-cgi', 'cgi', 'mod', 'suphp', 'php-fpm'); |
| | | |
| | | // import admins / resellers |
| | | for($i = 0; $i < count($users); $i++) { |
| | | $entry = $users[$i]; |
| | | |
| | | $old_client = $importer->client_get_by_username($session_id, $entry['login']); |
| | | if($old_client) { |
| | | if($old_client['client_id'] == 0) { |
| | | $entry['login'] = 'psa_' . $entry['login']; |
| | | $old_client = $importer->client_get_by_username($session_id, $entry['login']); |
| | | if($old_client) { |
| | | $msg .= $entry['login'] . ' existed, updating id ' . $old_client['client_id'] . '<br />'; |
| | | } |
| | | } else { |
| | | $msg .= $entry['login'] . ' existed, updating id ' . $old_client['client_id'] . '<br />'; |
| | | } |
| | | } |
| | | $params = array( |
| | | 'company_name' => $entry['cname'], |
| | | 'contact_name' => $entry['pname'], |
| | | 'customer_no' => 'Plesk' . $entry['id'], |
| | | 'username' => $entry['login'], |
| | | 'password' => $entry['password'], |
| | | 'language' => substr($entry['locale'], 0, 2), // plesk stores as de-DE or en-US |
| | | //'usertheme' => '', |
| | | 'street' => $entry['address'], |
| | | 'zip' => $entry['pcode'], |
| | | 'city' => $entry['city'], |
| | | 'state' => $entry['state'], |
| | | 'country' => $entry['country'], |
| | | 'telephone' => $entry['phone'], |
| | | //'mobile' => $entry[''], |
| | | 'fax' => $entry['fax'], |
| | | 'email' => $entry['email'], |
| | | //'internet' => $entry[''], |
| | | //'icq' => $entry[''], |
| | | //'vat_id' => $entry[''], |
| | | //'company_id' => $entry[''], |
| | | //'bank_account_number' => $entry[''], |
| | | //'bank_code' => $entry[''], |
| | | //'bank_name' => $entry[''], |
| | | //'bank_account_iban' => $entry[''], |
| | | //'bank_account_swift' => $entry[''], |
| | | 'notes' => 'imported from Plesk id ' . $entry['id'], |
| | | //'template_master' => $entry[''], |
| | | //'template_additional' => $entry[''], |
| | | //'default_mailserver' => $entry[''], |
| | | 'limit_maildomain' => get_limit($limits, $entry['id'], 'max_site', -1), |
| | | 'limit_mailbox' => get_limit($limits, $entry['id'], 'max_box', -1), |
| | | 'limit_mailalias' => get_limit($limits, $entry['id'], 'max_mn', -1), |
| | | 'limit_mailaliasdomain' => get_limit($limits, $entry['id'], 'max_dom_aliases', -1), |
| | | 'limit_mailmailinglist' => get_limit($limits, $entry['id'], 'max_maillists', -1), |
| | | 'limit_mailforward' => get_limit($limits, $entry['id'], 'max_mn', -1), |
| | | 'limit_mailcatchall' => 1, |
| | | 'limit_mailrouting' => 0, |
| | | 'limit_mailfilter' => 0, |
| | | 'limit_fetchmail' => 0, |
| | | 'limit_mailquota' => get_limit($limits, $entry['id'], 'mbox_quota', -1), |
| | | 'limit_spamfilter_wblist' => 0, |
| | | 'limit_spamfilter_user' => 0, |
| | | 'limit_spamfilter_policy' => 0, |
| | | //'default_webserver' => '', |
| | | 'limit_web_domain' => get_limit($limits, $entry['id'], 'max_site', -1), |
| | | 'limit_web_quota' => intval(get_limit($limits, $entry['id'], 'disk_space', -1)), |
| | | 'web_php_options' => implode(',', $phpopts), |
| | | 'limit_web_aliasdomain' => get_limit($limits, $entry['id'], 'max_dom_aliases', -1), |
| | | 'limit_web_subdomain' => get_limit($limits, $entry['id'], 'max_subdom', -1), |
| | | 'limit_ftp_user' => (string)($app->functions->intval(get_limit($limits, $entry['id'], 'max_subftp_users', -2)) + 1), |
| | | 'limit_shell_user' => 0, |
| | | 'ssh_chroot' => 'no,jailkit', |
| | | 'limit_webdav_user' => get_limit($limits, $entry['id'], 'max_wu', 0), |
| | | //'default_dnsserver' => '', |
| | | 'limit_dns_zone' => -1, |
| | | 'limit_dns_slave_zone' => -1, |
| | | 'limit_dns_record' => -1, |
| | | 'limit_client' => ($entry['type'] == 'client' ? 0 : -1), |
| | | //'default_dbserver' => '', |
| | | 'limit_database' => get_limit($limits, $entry['id'], 'max_db', -1), |
| | | 'limit_cron' => 0, |
| | | 'limit_cron_type' => 'url', |
| | | 'limit_cron_frequency' => '5', |
| | | 'limit_traffic_quota' => intval(get_limit($limits, $entry['id'], 'max_traffic', -1)), |
| | | 'limit_openvz_vm' => 0, |
| | | 'limit_openvz_vm_template_id' => '' |
| | | ); |
| | | $reseller_id = 0; |
| | | if($entry['parent_id'] != 0) { |
| | | if(array_key_exists($entry['parent_id'], $plesk_ispc_ids)) { |
| | | $reseller_id = $plesk_ispc_ids[$entry['parent_id']]; |
| | | } |
| | | } |
| | | |
| | | if($old_client) { |
| | | $new_id = $old_client['client_id']; |
| | | $ok = $importer->client_update($session_id, $old_client['client_id'], $reseller_id, array_merge($old_client, $params)); |
| | | if($ok === false) { |
| | | |
| | | } |
| | | } else { |
| | | $new_id = $importer->client_add($session_id, $reseller_id, $params); |
| | | } |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Client " . $entry['id'] . " (" . $entry['pname'] . ") could not be inserted/updated.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Client " . $entry['id'] . " (" . $entry['pname'] . ") inserted/updated.<br />"; |
| | | } |
| | | |
| | | $plesk_ispc_ids[$entry['id']] = $new_id; |
| | | } |
| | | unset($users); |
| | | unset($clients); |
| | | unset($resellers); |
| | | unset($admins); |
| | | |
| | | $web_config = $app->getconf->get_server_config($server_id, 'web'); |
| | | |
| | | $domains = $exdb->queryAllRecords("SELECT d.id, d.cr_date, d.name, d.displayName, d.dns_zone_id, d.status, d.htype, d.real_size, d.cl_id, d.limits_id, d.params_id, d.guid, d.overuse, d.gl_filter, d.vendor_id, d.webspace_id, d.webspace_status, d.permissions_id, d.external_id FROM domains as d WHERE d.parentDomainId = 0"); |
| | | $dom_ftp_users = array(); |
| | | $domain_ids = array(); |
| | | $domain_roots = array(); |
| | | $domain_owners = array(); |
| | | $dns_domain_ids = array(); |
| | | $maildomain_ids = array(); |
| | | foreach($domains as $entry) { |
| | | $res = $exdb->query("SELECT d.dom_id, d.param, d.val FROM dom_param as d WHERE d.dom_id = '" . $entry['id'] . "'"); |
| | | $options = array(); |
| | | while($opt = $exdb->nextRecord()) { |
| | | $options[$opt['param']] = $opt['val']; |
| | | } |
| | | |
| | | /* TODO: options that might be used later: |
| | | * OveruseBlock true/false |
| | | * OveruseNotify true/false |
| | | * OveruseSuspend true/false |
| | | * wu_script true/false (webusers allowed to use scripts?) |
| | | * webmail string (webmailer used - horde) |
| | | */ |
| | | |
| | | $redir_type = ''; |
| | | $redir_path = ''; |
| | | |
| | | if($entry['htype'] === 'std_fwd') { |
| | | // redirection |
| | | $redir = $exdb->queryOneRecord("SELECT f.dom_id, f.ip_address_id, f.redirect FROM forwarding as f WHERE f.dom_id = '" . $entry['id'] . "'"); |
| | | $redir_type = 'R,L'; |
| | | $redir_path = $redir['redirect']; |
| | | } elseif($entry['htype'] === 'vrt_hst') { |
| | | // default virtual hosting (vhost) |
| | | } else { |
| | | /* TODO: unknown type */ |
| | | } |
| | | |
| | | $hosting = $exdb->queryOneRecord("SELECT h.dom_id, h.sys_user_id, h.ip_address_id, h.real_traffic, h.fp, h.fp_ssl, h.fp_enable, h.fp_adm, h.fp_pass, h.ssi, h.php, h.cgi, h.perl, h.python, h.fastcgi, h.miva, h.coldfusion, h.asp, h.asp_dot_net, h.ssl, h.webstat, h.same_ssl, h.traffic_bandwidth, h.max_connection, h.php_handler_type, h.www_root, h.maintenance_mode, h.certificate_id, s.login, s.account_id, s.home, s.shell, s.quota, s.mapped_to, a.password, a.type as `pwtype` FROM hosting as h LEFT JOIN sys_users as s ON (s.id = h.sys_user_id) LEFT JOIN accounts as a ON (s.account_id = a.id) WHERE h.dom_id = '" . $entry['id'] . "'"); |
| | | if($hosting['sys_user_id']) { |
| | | $dom_ftp_users[] = array('id' => 0, |
| | | 'dom_id' => $hosting['dom_id'], |
| | | 'sys_user_id' => $hosting['sys_user_id'], |
| | | 'login' => $hosting['login'], |
| | | 'account_id' => $hosting['account_id'], |
| | | 'home' => $hosting['home'], |
| | | 'shell' => $hosting['shell'], |
| | | 'quota' => $hosting['quota'], |
| | | 'mapped_to' => $hosting['mapped_to'], |
| | | 'password' => $hosting['password'], |
| | | 'pwtype' => $hosting['pwtype'] |
| | | ); |
| | | } |
| | | |
| | | $phpmode = 'no'; |
| | | if(get_option($hosting, 'php', 'false') === 'true') { |
| | | $mode = get_option($hosting, 'php_handler_type', 'module'); |
| | | if($mode === 'module') $phpmode = 'mod'; |
| | | else $phpmode = 'fast-cgi'; |
| | | /* TODO: what other options could be in "php_handler_type"? */ |
| | | } |
| | | |
| | | /* TODO: plesk offers some more options: |
| | | |
| | | $redir_type = ''; |
| | | $redir_path = ''; |
| | | |
| | | if($entry['htype'] === 'std_fwd') { |
| | | // redirection |
| | | $redir = $exdb->queryOneRecord("SELECT f.dom_id, f.ip_address_id, f.redirect FROM forwarding as f WHERE f.dom_id = '" . $entry['id'] . "'"); |
| | | $redir_type = 'R,L'; |
| | | $redir_path = $redir['redirect']; |
| | | } elseif($entry['htype'] === 'vrt_hst') { |
| | | // default virtual hosting (vhost) |
| | | } else { |
| | | /* TODO: unknown type */ |
| | | } |
| | | |
| | | $hosting = $exdb->queryOneRecord("SELECT h.dom_id, h.sys_user_id, h.ip_address_id, h.real_traffic, h.fp, h.fp_ssl, h.fp_enable, h.fp_adm, h.fp_pass, h.ssi, h.php, h.cgi, h.perl, h.python, h.fastcgi, h.miva, h.coldfusion, h.asp, h.asp_dot_net, h.ssl, h.webstat, h.same_ssl, h.traffic_bandwidth, h.max_connection, h.php_handler_type, h.www_root, h.maintenance_mode, h.certificate_id, s.login, s.account_id, s.home, s.shell, s.quota, s.mapped_to, a.password, a.type as `pwtype` FROM hosting as h LEFT JOIN sys_users as s ON (s.id = h.sys_user_id) LEFT JOIN accounts as a ON (s.account_id = a.id) WHERE h.dom_id = '" . $entry['id'] . "'"); |
| | | if($hosting['sys_user_id']) { |
| | | $dom_ftp_users[] = array('id' => 0, |
| | | 'dom_id' => $hosting['dom_id'], |
| | | 'sys_user_id' => $hosting['sys_user_id'], |
| | | 'login' => $hosting['login'], |
| | | 'account_id' => $hosting['account_id'], |
| | | 'home' => $hosting['home'], |
| | | 'shell' => $hosting['shell'], |
| | | 'quota' => $hosting['quota'], |
| | | 'mapped_to' => $hosting['mapped_to'], |
| | | 'password' => $hosting['password'], |
| | | 'pwtype' => $hosting['pwtype'] |
| | | ); |
| | | } |
| | | |
| | | $phpmode = 'no'; |
| | | if(get_option($hosting, 'php', 'false') === 'true') { |
| | | $mode = get_option($hosting, 'php_handler_type', 'module'); |
| | | if($mode === 'module') $phpmode = 'mod'; |
| | | else $phpmode = 'fast-cgi'; |
| | | /* TODO: what other options could be in "php_handler_type"? */ |
| | | } |
| | | |
| | | /* TODO: plesk offers some more options: |
| | | * sys_user_id -> owner of files? |
| | | * ip_address_id - needed? |
| | | * fp - frontpage extensions |
| | |
| | | * traffic_bandwidth |
| | | * max_connections |
| | | */ |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'ip_address' => '*', |
| | | //'ipv6_address' => '', |
| | | 'domain' => $entry['name'], |
| | | 'type' => 'vhost', // can be vhost or alias |
| | | 'parent_domain_id' => '', // only if alias |
| | | 'vhost_type' => 'name', // or ip (-based) |
| | | 'hd_quota' => byte_to_mbyte(get_limit($limits, $entry['id'], 'disk_space', -1)), |
| | | 'traffic_quota' => byte_to_mbyte(get_limit($limits, $entry['id'], 'max_traffic', -1)), |
| | | 'cgi' => yes_no(get_option($hosting, 'cgi', 'false') === 'true' ? 1 : 0), |
| | | 'ssi' => yes_no(get_option($hosting, 'ssi', 'false') === 'true' ? 1 : 0), |
| | | 'suexec' => yes_no(1), // does plesk use this?! |
| | | 'errordocs' => get_option($options, 'apacheErrorDocs', 'false') === 'true' ? 1 : 0, |
| | | 'subdomain' => 'www', // plesk always uses this option |
| | | 'ssl' => yes_no(get_option($hosting, 'ssl', 'false') === 'true' ? 1 : 0), |
| | | 'php' => $phpmode, |
| | | 'fastcgi_php_version' => '', // plesk has no different php versions |
| | | 'ruby' => yes_no(0), // plesk has no ruby support |
| | | 'python' => yes_no(get_option($hosting, 'python', 'false') === 'true' ? 1 : 0), |
| | | 'active' => yes_no(($entry['status'] == 0 && get_option($hosting, 'maintenance_mode', 'false') !== 'true') ? 1 : 0), |
| | | 'redirect_type' => $redir_type, |
| | | 'redirect_path' => $redir_path, |
| | | 'seo_redirect' => '', |
| | | 'ssl_state' => $entry[''], |
| | | 'ssl_locality' => $entry[''], |
| | | 'ssl_organisation' => $entry[''], |
| | | 'ssl_organisation_unit' => $entry[''], |
| | | 'ssl_country' => $entry[''], |
| | | 'ssl_domain' => $entry[''], |
| | | 'ssl_request' => $entry[''], |
| | | 'ssl_cert' => $entry[''], |
| | | 'ssl_bundle' => $entry[''], |
| | | 'ssl_action' => $entry[''], |
| | | 'stats_password' => '', |
| | | 'stats_type' => get_option($hosting, 'webstat', 'webalizer') === 'awstats' ? 'awstats' : 'webalizer', |
| | | 'backup_interval' => 'none', |
| | | 'backup_copies' => 1, |
| | | 'allow_override' => 'All', |
| | | 'pm_process_idle_timeout' => 10, |
| | | 'pm_max_requests' => 0 |
| | | ); |
| | | |
| | | // find already inserted domain |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $msg .= "Found domain with id " . $new_id . ", updating it.<br />"; |
| | | $params = array_merge($old_domain, $params); |
| | | $ok = $importer->sites_web_domain_update($session_id, $plesk_ispc_ids[$entry['cl_id']], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->sites_web_domain_add($session_id, $plesk_ispc_ids[$entry['cl_id']], $params, true); // read only... |
| | | } |
| | | |
| | | $domain_ids[$entry['id']] = $new_id; |
| | | $domain_roots[$entry['id']] = $entry['www_root']; |
| | | $domain_owners[$entry['id']] = $entry['cl_id']; |
| | | $dns_domain_ids[$entry['dns_zone_id']] = $entry['id']; |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Domain " . $entry['id'] . " (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Domain " . $entry['id'] . " (" . $entry['name'] . ") inserted -> " . $new_id . ".<br />"; |
| | | |
| | | $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'"); |
| | | $path = $cmd_data['document_root']; |
| | | add_command('chattr -i ' . escapeshellarg($path)); |
| | | add_command('if [[ -f ' . $path . '/web/index.html ]] ; then rm ' . $path . '/web/index.html ; fi'); |
| | | add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $hosting['www_root'] . '/ ' . $path . '/web/'); |
| | | add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path)); |
| | | add_command('grep ' . escapeshellarg($hosting['www_root']) . ' ' . $path . '/web -r -l | xargs replace ' . escapeshellarg($hosting['www_root']) . ' ' . escapeshellarg($path . '/web') . ' --'); |
| | | add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats')); |
| | | add_command('chattr +i ' . escapeshellarg($path)); |
| | | } |
| | | |
| | | // add domain to mail domains too |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'domain' => $entry['name'], |
| | | 'active' => yes_no(($entry['status'] == 0 ? 1 : 0)) |
| | | ); |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found maildomain with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->mail_domain_update($session_id, $plesk_ispc_ids[$entry['cl_id']], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Inserting new maildomain " . $entry['name'] . ".<br />"; |
| | | $new_id = $importer->mail_domain_add($session_id, $plesk_ispc_ids[$entry['cl_id']], $params); |
| | | } |
| | | |
| | | $maildomain_ids[$entry['id']] = $new_id; |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Maildomain (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Maildomain " . $new_id . " (" . $entry['name'] . ") inserted.<br />"; |
| | | } |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'ip_address' => '*', |
| | | //'ipv6_address' => '', |
| | | 'domain' => $entry['name'], |
| | | 'type' => 'vhost', // can be vhost or alias |
| | | 'parent_domain_id' => '', // only if alias |
| | | 'vhost_type' => 'name', // or ip (-based) |
| | | 'hd_quota' => byte_to_mbyte(get_limit($limits, $entry['id'], 'disk_space', -1)), |
| | | 'traffic_quota' => byte_to_mbyte(get_limit($limits, $entry['id'], 'max_traffic', -1)), |
| | | 'cgi' => yes_no(get_option($hosting, 'cgi', 'false') === 'true' ? 1 : 0), |
| | | 'ssi' => yes_no(get_option($hosting, 'ssi', 'false') === 'true' ? 1 : 0), |
| | | 'suexec' => yes_no(1), // does plesk use this?! |
| | | 'errordocs' => get_option($options, 'apacheErrorDocs', 'false') === 'true' ? 1 : 0, |
| | | 'subdomain' => 'www', // plesk always uses this option |
| | | 'ssl' => yes_no(get_option($hosting, 'ssl', 'false') === 'true' ? 1 : 0), |
| | | 'php' => $phpmode, |
| | | 'fastcgi_php_version' => '', // plesk has no different php versions |
| | | 'ruby' => yes_no(0), // plesk has no ruby support |
| | | 'python' => yes_no(get_option($hosting, 'python', 'false') === 'true' ? 1 : 0), |
| | | 'active' => yes_no(($entry['status'] == 0 && get_option($hosting, 'maintenance_mode', 'false') !== 'true') ? 1 : 0), |
| | | 'redirect_type' => $redir_type, |
| | | 'redirect_path' => $redir_path, |
| | | 'seo_redirect' => '', |
| | | 'ssl_state' => $entry[''], |
| | | 'ssl_locality' => $entry[''], |
| | | 'ssl_organisation' => $entry[''], |
| | | 'ssl_organisation_unit' => $entry[''], |
| | | 'ssl_country' => $entry[''], |
| | | 'ssl_domain' => $entry[''], |
| | | 'ssl_request' => $entry[''], |
| | | 'ssl_cert' => $entry[''], |
| | | 'ssl_bundle' => $entry[''], |
| | | 'ssl_action' => $entry[''], |
| | | 'stats_password' => '', |
| | | 'stats_type' => get_option($hosting, 'webstat', 'webalizer') === 'awstats' ? 'awstats' : 'webalizer', |
| | | 'backup_interval' => 'none', |
| | | 'backup_copies' => 1, |
| | | 'allow_override' => 'All', |
| | | 'pm_process_idle_timeout' => 10, |
| | | 'pm_max_requests' => 0 |
| | | ); |
| | | |
| | | } |
| | | |
| | | $domain_aliases = $exdb->queryAllRecords("SELECT da.id, da.name, da.displayName, da.dns, da.mail, da.web, da.dom_id, da.status FROM domainaliases as da"); |
| | | foreach($domain_aliases as $entry) { |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'domain' => $entry['name'], |
| | | 'type' => 'alias', |
| | | 'parent_domain_id' => $domain_ids[$entry['dom_id']], |
| | | 'redirect_type' => '', |
| | | 'redirect_path' => '', |
| | | 'subdomain' => 'www', |
| | | 'active' => yes_no(($entry['status'] == 0 && $entry['web'] === 'true') ? 1 : 0) |
| | | ); |
| | | |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found domain with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->sites_web_aliasdomain_update($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->sites_web_aliasdomain_add($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $params); |
| | | } |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Aliasdomain " . $entry['id'] . " (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Aliasdomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />"; |
| | | } |
| | | |
| | | // add alias to mail domains, too |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'domain' => $entry['name'], |
| | | 'active' => yes_no(($entry['status'] == 0 && $entry['mail'] === 'true') ? 1 : 0) |
| | | ); |
| | | // find already inserted domain |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $msg .= "Found domain with id " . $new_id . ", updating it.<br />"; |
| | | $params = array_merge($old_domain, $params); |
| | | $ok = $importer->sites_web_domain_update($session_id, $plesk_ispc_ids[$entry['cl_id']], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->sites_web_domain_add($session_id, $plesk_ispc_ids[$entry['cl_id']], $params, true); // read only... |
| | | } |
| | | |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found mail domain with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->mail_domain_update($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->mail_domain_add($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $params); |
| | | } |
| | | |
| | | $maildomain_ids[$entry['id']] = $new_id; |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Aliasmaildomain " . $entry['id'] . " (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Aliasmaildomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />"; |
| | | } |
| | | } |
| | | |
| | | $subdomain_ids = array(); |
| | | $subdomain_roots = array(); |
| | | $subdomain_owners = array(); |
| | | |
| | | $subdomains = $exdb->queryAllRecords("SELECT d.id, d.cr_date, d.name, d.displayName, d.dns_zone_id, d.status, d.htype, d.real_size, d.cl_id, d.limits_id, d.params_id, d.guid, d.overuse, d.gl_filter, d.vendor_id, d.webspace_id, d.webspace_status, d.permissions_id, d.external_id, d.parentDomainId FROM domains as d WHERE d.parentDomainId != 0"); |
| | | foreach($subdomains as $entry) { |
| | | $res = $exdb->query("SELECT d.dom_id, d.param, d.val FROM dom_param as d WHERE d.dom_id = '" . $entry['id'] . "'"); |
| | | $options = array(); |
| | | while($opt = $exdb->nextRecord()) { |
| | | $options[$opt['param']] = $opt['val']; |
| | | } |
| | | |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['parentDomainId'] . "'"); |
| | | $redir_type = ''; |
| | | $redir_path = ''; |
| | | |
| | | if($entry['htype'] === 'std_fwd') { |
| | | // redirection |
| | | $redir = $exdb->queryOneRecord("SELECT f.dom_id, f.ip_address_id, f.redirect FROM forwarding as f WHERE f.dom_id = '" . $entry['id'] . "'"); |
| | | $redir_type = 'R,L'; |
| | | $redir_path = $redir['redirect']; |
| | | } elseif($entry['htype'] === 'vrt_hst') { |
| | | // default virtual hosting (vhost) |
| | | } else { |
| | | /* TODO: unknown type */ |
| | | } |
| | | |
| | | $hosting = $exdb->queryOneRecord("SELECT h.dom_id, h.sys_user_id, h.ip_address_id, h.real_traffic, h.fp, h.fp_ssl, h.fp_enable, h.fp_adm, h.fp_pass, h.ssi, h.php, h.cgi, h.perl, h.python, h.fastcgi, h.miva, h.coldfusion, h.asp, h.asp_dot_net, h.ssl, h.webstat, h.same_ssl, h.traffic_bandwidth, h.max_connection, h.php_handler_type, h.www_root, h.maintenance_mode, h.certificate_id, s.login, s.account_id, s.home, s.shell, s.quota, s.mapped_to, a.password, a.type as `pwtype` FROM hosting as h LEFT JOIN sys_users as s ON (s.id = h.sys_user_id) LEFT JOIN accounts as a ON (s.account_id = a.id) WHERE h.dom_id = '" . $entry['id'] . "'"); |
| | | if($hosting['sys_user_id']) { |
| | | $dom_ftp_users[] = array('id' => 0, |
| | | 'dom_id' => $hosting['dom_id'], |
| | | 'sys_user_id' => $hosting['sys_user_id'], |
| | | 'login' => $hosting['login'], |
| | | 'account_id' => $hosting['account_id'], |
| | | 'home' => $hosting['home'], |
| | | 'shell' => $hosting['shell'], |
| | | 'quota' => $hosting['quota'], |
| | | 'mapped_to' => $hosting['mapped_to'], |
| | | 'password' => $hosting['password'], |
| | | 'pwtype' => $hosting['pwtype'] |
| | | ); |
| | | } |
| | | |
| | | $phpmode = 'no'; |
| | | if(get_option($hosting, 'php', 'false') === 'true') { |
| | | $mode = get_option($hosting, 'php_handler_type', 'module'); |
| | | if($mode === 'module') $phpmode = 'mod'; |
| | | else $phpmode = 'fast-cgi'; |
| | | /* TODO: what other options could be in "php_handler_type"? */ |
| | | } |
| | | /* TODO: plesk offers some more options: |
| | | $domain_ids[$entry['id']] = $new_id; |
| | | $domain_roots[$entry['id']] = $entry['www_root']; |
| | | $domain_owners[$entry['id']] = $entry['cl_id']; |
| | | $dns_domain_ids[$entry['dns_zone_id']] = $entry['id']; |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Domain " . $entry['id'] . " (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Domain " . $entry['id'] . " (" . $entry['name'] . ") inserted -> " . $new_id . ".<br />"; |
| | | |
| | | $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'"); |
| | | $path = $cmd_data['document_root']; |
| | | add_command('chattr -i ' . escapeshellarg($path)); |
| | | add_command('if [[ -f ' . $path . '/web/index.html ]] ; then rm ' . $path . '/web/index.html ; fi'); |
| | | add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $hosting['www_root'] . '/ ' . $path . '/web/'); |
| | | add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path)); |
| | | add_command('grep ' . escapeshellarg($hosting['www_root']) . ' ' . $path . '/web -r -l | xargs replace ' . escapeshellarg($hosting['www_root']) . ' ' . escapeshellarg($path . '/web') . ' --'); |
| | | add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats')); |
| | | add_command('chattr +i ' . escapeshellarg($path)); |
| | | } |
| | | |
| | | // add domain to mail domains too |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'domain' => $entry['name'], |
| | | 'active' => yes_no(($entry['status'] == 0 ? 1 : 0)) |
| | | ); |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found maildomain with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->mail_domain_update($session_id, $plesk_ispc_ids[$entry['cl_id']], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Inserting new maildomain " . $entry['name'] . ".<br />"; |
| | | $new_id = $importer->mail_domain_add($session_id, $plesk_ispc_ids[$entry['cl_id']], $params); |
| | | } |
| | | |
| | | $maildomain_ids[$entry['id']] = $new_id; |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Maildomain (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Maildomain " . $new_id . " (" . $entry['name'] . ") inserted.<br />"; |
| | | } |
| | | |
| | | } |
| | | |
| | | $domain_aliases = $exdb->queryAllRecords("SELECT da.id, da.name, da.displayName, da.dns, da.mail, da.web, da.dom_id, da.status FROM domainaliases as da"); |
| | | foreach($domain_aliases as $entry) { |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'domain' => $entry['name'], |
| | | 'type' => 'alias', |
| | | 'parent_domain_id' => $domain_ids[$entry['dom_id']], |
| | | 'redirect_type' => '', |
| | | 'redirect_path' => '', |
| | | 'subdomain' => 'www', |
| | | 'active' => yes_no(($entry['status'] == 0 && $entry['web'] === 'true') ? 1 : 0) |
| | | ); |
| | | |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found domain with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->sites_web_aliasdomain_update($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->sites_web_aliasdomain_add($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $params); |
| | | } |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Aliasdomain " . $entry['id'] . " (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Aliasdomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />"; |
| | | } |
| | | |
| | | // add alias to mail domains, too |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'domain' => $entry['name'], |
| | | 'active' => yes_no(($entry['status'] == 0 && $entry['mail'] === 'true') ? 1 : 0) |
| | | ); |
| | | |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found mail domain with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->mail_domain_update($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->mail_domain_add($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $params); |
| | | } |
| | | |
| | | $maildomain_ids[$entry['id']] = $new_id; |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Aliasmaildomain " . $entry['id'] . " (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Aliasmaildomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />"; |
| | | } |
| | | } |
| | | |
| | | $subdomain_ids = array(); |
| | | $subdomain_roots = array(); |
| | | $subdomain_owners = array(); |
| | | |
| | | $subdomains = $exdb->queryAllRecords("SELECT d.id, d.cr_date, d.name, d.displayName, d.dns_zone_id, d.status, d.htype, d.real_size, d.cl_id, d.limits_id, d.params_id, d.guid, d.overuse, d.gl_filter, d.vendor_id, d.webspace_id, d.webspace_status, d.permissions_id, d.external_id, d.parentDomainId FROM domains as d WHERE d.parentDomainId != 0"); |
| | | foreach($subdomains as $entry) { |
| | | $res = $exdb->query("SELECT d.dom_id, d.param, d.val FROM dom_param as d WHERE d.dom_id = '" . $entry['id'] . "'"); |
| | | $options = array(); |
| | | while($opt = $exdb->nextRecord()) { |
| | | $options[$opt['param']] = $opt['val']; |
| | | } |
| | | |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['parentDomainId'] . "'"); |
| | | $redir_type = ''; |
| | | $redir_path = ''; |
| | | |
| | | if($entry['htype'] === 'std_fwd') { |
| | | // redirection |
| | | $redir = $exdb->queryOneRecord("SELECT f.dom_id, f.ip_address_id, f.redirect FROM forwarding as f WHERE f.dom_id = '" . $entry['id'] . "'"); |
| | | $redir_type = 'R,L'; |
| | | $redir_path = $redir['redirect']; |
| | | } elseif($entry['htype'] === 'vrt_hst') { |
| | | // default virtual hosting (vhost) |
| | | } else { |
| | | /* TODO: unknown type */ |
| | | } |
| | | |
| | | $hosting = $exdb->queryOneRecord("SELECT h.dom_id, h.sys_user_id, h.ip_address_id, h.real_traffic, h.fp, h.fp_ssl, h.fp_enable, h.fp_adm, h.fp_pass, h.ssi, h.php, h.cgi, h.perl, h.python, h.fastcgi, h.miva, h.coldfusion, h.asp, h.asp_dot_net, h.ssl, h.webstat, h.same_ssl, h.traffic_bandwidth, h.max_connection, h.php_handler_type, h.www_root, h.maintenance_mode, h.certificate_id, s.login, s.account_id, s.home, s.shell, s.quota, s.mapped_to, a.password, a.type as `pwtype` FROM hosting as h LEFT JOIN sys_users as s ON (s.id = h.sys_user_id) LEFT JOIN accounts as a ON (s.account_id = a.id) WHERE h.dom_id = '" . $entry['id'] . "'"); |
| | | if($hosting['sys_user_id']) { |
| | | $dom_ftp_users[] = array('id' => 0, |
| | | 'dom_id' => $hosting['dom_id'], |
| | | 'sys_user_id' => $hosting['sys_user_id'], |
| | | 'login' => $hosting['login'], |
| | | 'account_id' => $hosting['account_id'], |
| | | 'home' => $hosting['home'], |
| | | 'shell' => $hosting['shell'], |
| | | 'quota' => $hosting['quota'], |
| | | 'mapped_to' => $hosting['mapped_to'], |
| | | 'password' => $hosting['password'], |
| | | 'pwtype' => $hosting['pwtype'] |
| | | ); |
| | | } |
| | | |
| | | $phpmode = 'no'; |
| | | if(get_option($hosting, 'php', 'false') === 'true') { |
| | | $mode = get_option($hosting, 'php_handler_type', 'module'); |
| | | if($mode === 'module') $phpmode = 'mod'; |
| | | else $phpmode = 'fast-cgi'; |
| | | /* TODO: what other options could be in "php_handler_type"? */ |
| | | } |
| | | /* TODO: plesk offers some more options: |
| | | * sys_user_id -> owner of files? |
| | | * ip_address_id - needed? |
| | | * fp - frontpage extensions |
| | |
| | | * traffic_bandwidth |
| | | * max_connections |
| | | */ |
| | | |
| | | $web_folder = $hosting['www_root']; |
| | | $web_folder = preg_replace('/^\/(var|srv)\/www\/(vhosts\/)?[^\/]+\/(.*)\/httpdocs.*/', '$3', $web_folder); |
| | | |
| | | //if(substr($web_folder, 0, 1) === '/') $web_folder = substr($web_folder, 1); |
| | | //if(substr($web_folder, -1, 1) === '/') $web_folder = substr($web_folder, 0, -1); |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'ip_address' => '*', |
| | | //'ipv6_address' => '', |
| | | 'domain' => $entry['name'], |
| | | 'web_folder' => $web_folder, |
| | | 'type' => 'vhostsubdomain', // can be vhost or alias |
| | | 'parent_domain_id' => $domain_ids[$entry['parentDomainId']], |
| | | 'vhost_type' => 'name', // or ip (-based) |
| | | 'hd_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'disk_space', -1)), |
| | | 'traffic_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'max_traffic', -1)), |
| | | 'cgi' => yes_no(get_option($hosting, 'cgi', 'false') === 'true' ? 1 : 0), |
| | | 'ssi' => yes_no(get_option($hosting, 'ssi', 'false') === 'true' ? 1 : 0), |
| | | 'suexec' => yes_no(1), // does plesk use this?! |
| | | 'errordocs' => get_option($options, 'apacheErrorDocs', 'false') === 'true' ? 1 : 0, |
| | | 'subdomain' => '', // plesk always uses this option |
| | | 'ssl' => yes_no(get_option($hosting, 'ssl', 'false') === 'true' ? 1 : 0), |
| | | 'php' => $phpmode, |
| | | 'fastcgi_php_version' => '', // plesk has no different php versions |
| | | 'ruby' => yes_no(0), // plesk has no ruby support |
| | | 'python' => yes_no(get_option($hosting, 'python', 'false') === 'true' ? 1 : 0), |
| | | 'active' => yes_no(($entry['status'] == 0 && get_option($hosting, 'maintenance_mode', 'false') !== 'true') ? 1 : 0), |
| | | 'redirect_type' => $redir_type, |
| | | 'redirect_path' => $redir_path, |
| | | 'seo_redirect' => '', |
| | | 'ssl_state' => $entry[''], |
| | | 'ssl_locality' => $entry[''], |
| | | 'ssl_organisation' => $entry[''], |
| | | 'ssl_organisation_unit' => $entry[''], |
| | | 'ssl_country' => $entry[''], |
| | | 'ssl_domain' => $entry[''], |
| | | 'ssl_request' => $entry[''], |
| | | 'ssl_cert' => $entry[''], |
| | | 'ssl_bundle' => $entry[''], |
| | | 'ssl_action' => $entry[''], |
| | | 'stats_password' => '', |
| | | 'stats_type' => get_option($hosting, 'webstat', 'webalizer') === 'awstats' ? 'awstats' : 'webalizer', |
| | | 'backup_interval' => 'none', |
| | | 'backup_copies' => 1, |
| | | 'allow_override' => 'All', |
| | | 'pm_process_idle_timeout' => 10, |
| | | 'pm_max_requests' => 0 |
| | | ); |
| | | |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found domain " . $entry['name'] . " with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->sites_web_vhost_subdomain_update($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->sites_web_vhost_subdomain_add($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $params, true); // read only... |
| | | } |
| | | |
| | | $subdomain_ids[$entry['id']] = $new_id; |
| | | $subdomain_roots[$entry['id']] = $hosting['www_root']; |
| | | $subdomain_owners[$entry['id']] = $entry['cl_id']; |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") with folder \"" . $web_folder . "\" could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />"; |
| | | |
| | | $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'"); |
| | | $path = $cmd_data['document_root']; |
| | | add_command('chattr -i ' . escapeshellarg($path)); |
| | | add_command('if [[ -f ' . $path . '/' . $web_folder . '/index.html ]] ; then rm ' . $path . '/' . $web_folder . '/index.html ; fi'); |
| | | add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $hosting['www_root'] . '/ ' . $path . '/' . $web_folder . '/'); |
| | | add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path)); |
| | | add_command('grep ' . escapeshellarg($hosting['www_root']) . ' ' . $path . '/web -r -l | xargs replace ' . escapeshellarg($hosting['www_root']) . ' ' . escapeshellarg($path . '/web') . ' --'); |
| | | add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats')); |
| | | add_command('chattr +i ' . escapeshellarg($path)); |
| | | |
| | | } |
| | | $domain_ids[$entry['id']] = $new_id; |
| | | } |
| | | |
| | | // subdomains in plesk are real vhosts, so we have to treat them as vhostsubdomains |
| | | $subdomains = $exdb->queryAllRecords("SELECT d.id, d.dom_id, d.name, d.displayName, d.sys_user_id, d.ssi, d.php, d.cgi, d.perl, d.python, d.fastcgi, d.miva, d.coldfusion, d.asp, d.asp_dot_net, d.ssl, d.same_ssl, d.php_handler_type, d.www_root, d.maintenance_mode, d.certificate_id FROM subdomains as d"); |
| | | foreach($subdomains as $entry) { |
| | | $res = $exdb->query("SELECT d.dom_id, d.param, d.val FROM dom_param as d WHERE d.dom_id = '" . $entry['dom_id'] . "'"); |
| | | $options = array(); |
| | | while($opt = $exdb->nextRecord()) { |
| | | $options[$opt['param']] = $opt['val']; |
| | | } |
| | | |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'"); |
| | | |
| | | /* TODO: options that might be used later: |
| | | $web_folder = $hosting['www_root']; |
| | | $web_folder = preg_replace('/^\/(var|srv)\/www\/(vhosts\/)?[^\/]+\/(.*)\/httpdocs.*/', '$3', $web_folder); |
| | | |
| | | //if(substr($web_folder, 0, 1) === '/') $web_folder = substr($web_folder, 1); |
| | | //if(substr($web_folder, -1, 1) === '/') $web_folder = substr($web_folder, 0, -1); |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'ip_address' => '*', |
| | | //'ipv6_address' => '', |
| | | 'domain' => $entry['name'], |
| | | 'web_folder' => $web_folder, |
| | | 'type' => 'vhostsubdomain', // can be vhost or alias |
| | | 'parent_domain_id' => $domain_ids[$entry['parentDomainId']], |
| | | 'vhost_type' => 'name', // or ip (-based) |
| | | 'hd_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'disk_space', -1)), |
| | | 'traffic_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'max_traffic', -1)), |
| | | 'cgi' => yes_no(get_option($hosting, 'cgi', 'false') === 'true' ? 1 : 0), |
| | | 'ssi' => yes_no(get_option($hosting, 'ssi', 'false') === 'true' ? 1 : 0), |
| | | 'suexec' => yes_no(1), // does plesk use this?! |
| | | 'errordocs' => get_option($options, 'apacheErrorDocs', 'false') === 'true' ? 1 : 0, |
| | | 'subdomain' => '', // plesk always uses this option |
| | | 'ssl' => yes_no(get_option($hosting, 'ssl', 'false') === 'true' ? 1 : 0), |
| | | 'php' => $phpmode, |
| | | 'fastcgi_php_version' => '', // plesk has no different php versions |
| | | 'ruby' => yes_no(0), // plesk has no ruby support |
| | | 'python' => yes_no(get_option($hosting, 'python', 'false') === 'true' ? 1 : 0), |
| | | 'active' => yes_no(($entry['status'] == 0 && get_option($hosting, 'maintenance_mode', 'false') !== 'true') ? 1 : 0), |
| | | 'redirect_type' => $redir_type, |
| | | 'redirect_path' => $redir_path, |
| | | 'seo_redirect' => '', |
| | | 'ssl_state' => $entry[''], |
| | | 'ssl_locality' => $entry[''], |
| | | 'ssl_organisation' => $entry[''], |
| | | 'ssl_organisation_unit' => $entry[''], |
| | | 'ssl_country' => $entry[''], |
| | | 'ssl_domain' => $entry[''], |
| | | 'ssl_request' => $entry[''], |
| | | 'ssl_cert' => $entry[''], |
| | | 'ssl_bundle' => $entry[''], |
| | | 'ssl_action' => $entry[''], |
| | | 'stats_password' => '', |
| | | 'stats_type' => get_option($hosting, 'webstat', 'webalizer') === 'awstats' ? 'awstats' : 'webalizer', |
| | | 'backup_interval' => 'none', |
| | | 'backup_copies' => 1, |
| | | 'allow_override' => 'All', |
| | | 'pm_process_idle_timeout' => 10, |
| | | 'pm_max_requests' => 0 |
| | | ); |
| | | |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . "'"); |
| | | if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found domain " . $entry['name'] . " with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->sites_web_vhost_subdomain_update($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->sites_web_vhost_subdomain_add($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $params, true); // read only... |
| | | } |
| | | |
| | | $subdomain_ids[$entry['id']] = $new_id; |
| | | $subdomain_roots[$entry['id']] = $hosting['www_root']; |
| | | $subdomain_owners[$entry['id']] = $entry['cl_id']; |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") with folder \"" . $web_folder . "\" could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />"; |
| | | |
| | | $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'"); |
| | | $path = $cmd_data['document_root']; |
| | | add_command('chattr -i ' . escapeshellarg($path)); |
| | | add_command('if [[ -f ' . $path . '/' . $web_folder . '/index.html ]] ; then rm ' . $path . '/' . $web_folder . '/index.html ; fi'); |
| | | add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $hosting['www_root'] . '/ ' . $path . '/' . $web_folder . '/'); |
| | | add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path)); |
| | | add_command('grep ' . escapeshellarg($hosting['www_root']) . ' ' . $path . '/web -r -l | xargs replace ' . escapeshellarg($hosting['www_root']) . ' ' . escapeshellarg($path . '/web') . ' --'); |
| | | add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats')); |
| | | add_command('chattr +i ' . escapeshellarg($path)); |
| | | |
| | | } |
| | | $domain_ids[$entry['id']] = $new_id; |
| | | } |
| | | |
| | | // subdomains in plesk are real vhosts, so we have to treat them as vhostsubdomains |
| | | $subdomains = $exdb->queryAllRecords("SELECT d.id, d.dom_id, d.name, d.displayName, d.sys_user_id, d.ssi, d.php, d.cgi, d.perl, d.python, d.fastcgi, d.miva, d.coldfusion, d.asp, d.asp_dot_net, d.ssl, d.same_ssl, d.php_handler_type, d.www_root, d.maintenance_mode, d.certificate_id FROM subdomains as d"); |
| | | foreach($subdomains as $entry) { |
| | | $res = $exdb->query("SELECT d.dom_id, d.param, d.val FROM dom_param as d WHERE d.dom_id = '" . $entry['dom_id'] . "'"); |
| | | $options = array(); |
| | | while($opt = $exdb->nextRecord()) { |
| | | $options[$opt['param']] = $opt['val']; |
| | | } |
| | | |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'"); |
| | | |
| | | /* TODO: options that might be used later: |
| | | * OveruseBlock true/false |
| | | * OveruseNotify true/false |
| | | * OveruseSuspend true/false |
| | | * wu_script true/false (webusers allowed to use scripts?) |
| | | * webmail string (webmailer used - horde) |
| | | */ |
| | | |
| | | $redir_type = ''; |
| | | $redir_path = ''; |
| | | |
| | | if($entry['htype'] === 'std_fwd') { |
| | | // redirection |
| | | $redir = $exdb->queryOneRecord("SELECT f.dom_id, f.ip_address_id, f.redirect FROM forwarding as f WHERE f.dom_id = '" . $entry['id'] . "'"); |
| | | $redir_type = 'R,L'; |
| | | $redir_path = $redir['redirect']; |
| | | } elseif($entry['htype'] === 'vrt_hst') { |
| | | // default virtual hosting (vhost) |
| | | } else { |
| | | /* TODO: unknown type */ |
| | | } |
| | | |
| | | $hosting = $exdb->queryOneRecord("SELECT h.dom_id, h.sys_user_id, h.ip_address_id, h.real_traffic, h.fp, h.fp_ssl, h.fp_enable, h.fp_adm, h.fp_pass, h.ssi, h.php, h.cgi, h.perl, h.python, h.fastcgi, h.miva, h.coldfusion, h.asp, h.asp_dot_net, h.ssl, h.webstat, h.same_ssl, h.traffic_bandwidth, h.max_connection, h.php_handler_type, h.www_root, h.maintenance_mode, h.certificate_id FROM hosting as h WHERE h.dom_id = '" . $entry['dom_id'] . "'"); |
| | | $hosting = array_merge($hosting, $entry); //settings from subdomain override parent settings |
| | | |
| | | $phpmode = 'no'; |
| | | if(get_option($hosting, 'php', 'false') === 'true') { |
| | | $mode = get_option($hosting, 'php_handler_type', 'module'); |
| | | if($mode === 'module') $phpmode = 'mod'; |
| | | else $phpmode = 'fast-cgi'; |
| | | /* TODO: what other options could be in "php_handler_type"? */ |
| | | } |
| | | /* TODO: plesk offers some more options: |
| | | |
| | | $redir_type = ''; |
| | | $redir_path = ''; |
| | | |
| | | if($entry['htype'] === 'std_fwd') { |
| | | // redirection |
| | | $redir = $exdb->queryOneRecord("SELECT f.dom_id, f.ip_address_id, f.redirect FROM forwarding as f WHERE f.dom_id = '" . $entry['id'] . "'"); |
| | | $redir_type = 'R,L'; |
| | | $redir_path = $redir['redirect']; |
| | | } elseif($entry['htype'] === 'vrt_hst') { |
| | | // default virtual hosting (vhost) |
| | | } else { |
| | | /* TODO: unknown type */ |
| | | } |
| | | |
| | | $hosting = $exdb->queryOneRecord("SELECT h.dom_id, h.sys_user_id, h.ip_address_id, h.real_traffic, h.fp, h.fp_ssl, h.fp_enable, h.fp_adm, h.fp_pass, h.ssi, h.php, h.cgi, h.perl, h.python, h.fastcgi, h.miva, h.coldfusion, h.asp, h.asp_dot_net, h.ssl, h.webstat, h.same_ssl, h.traffic_bandwidth, h.max_connection, h.php_handler_type, h.www_root, h.maintenance_mode, h.certificate_id FROM hosting as h WHERE h.dom_id = '" . $entry['dom_id'] . "'"); |
| | | $hosting = array_merge($hosting, $entry); //settings from subdomain override parent settings |
| | | |
| | | $phpmode = 'no'; |
| | | if(get_option($hosting, 'php', 'false') === 'true') { |
| | | $mode = get_option($hosting, 'php_handler_type', 'module'); |
| | | if($mode === 'module') $phpmode = 'mod'; |
| | | else $phpmode = 'fast-cgi'; |
| | | /* TODO: what other options could be in "php_handler_type"? */ |
| | | } |
| | | /* TODO: plesk offers some more options: |
| | | * sys_user_id -> owner of files? |
| | | * ip_address_id - needed? |
| | | * fp - frontpage extensions |
| | |
| | | * traffic_bandwidth |
| | | * max_connections |
| | | */ |
| | | |
| | | $web_folder = $entry['www_root']; |
| | | $web_folder = preg_replace('/^\/(var|srv)\/www\/(vhosts\/)?[^\/]+\/(.*)\/httpdocs.*/', '$3', $web_folder); |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'ip_address' => '*', |
| | | //'ipv6_address' => '', |
| | | 'domain' => $entry['name'] . '.' . $parent_domain['name'], |
| | | 'web_folder' => $web_folder, |
| | | 'type' => 'vhostsubdomain', // can be vhost or alias |
| | | 'parent_domain_id' => $domain_ids[$entry['dom_id']], |
| | | 'vhost_type' => 'name', // or ip (-based) |
| | | 'hd_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'disk_space', -1)), |
| | | 'traffic_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'max_traffic', -1)), |
| | | 'cgi' => yes_no(get_option($hosting, 'cgi', 'false') === 'true' ? 1 : 0), |
| | | 'ssi' => yes_no(get_option($hosting, 'ssi', 'false') === 'true' ? 1 : 0), |
| | | 'suexec' => yes_no(1), // does plesk use this?! |
| | | 'errordocs' => get_option($options, 'apacheErrorDocs', 'false') === 'true' ? 1 : 0, |
| | | 'subdomain' => '', // plesk always uses this option |
| | | 'ssl' => yes_no(get_option($hosting, 'ssl', 'false') === 'true' ? 1 : 0), |
| | | 'php' => $phpmode, |
| | | 'fastcgi_php_version' => '', // plesk has no different php versions |
| | | 'ruby' => yes_no(0), // plesk has no ruby support |
| | | 'python' => yes_no(get_option($hosting, 'python', 'false') === 'true' ? 1 : 0), |
| | | 'active' => yes_no(($entry['status'] == 0 && get_option($hosting, 'maintenance_mode', 'false') !== 'true') ? 1 : 0), |
| | | 'redirect_type' => $redir_type, |
| | | 'redirect_path' => $redir_path, |
| | | 'seo_redirect' => '', |
| | | 'ssl_state' => $entry[''], |
| | | 'ssl_locality' => $entry[''], |
| | | 'ssl_organisation' => $entry[''], |
| | | 'ssl_organisation_unit' => $entry[''], |
| | | 'ssl_country' => $entry[''], |
| | | 'ssl_domain' => $entry[''], |
| | | 'ssl_request' => $entry[''], |
| | | 'ssl_cert' => $entry[''], |
| | | 'ssl_bundle' => $entry[''], |
| | | 'ssl_action' => $entry[''], |
| | | 'stats_password' => '', |
| | | 'stats_type' => get_option($hosting, 'webstat', 'webalizer') === 'awstats' ? 'awstats' : 'webalizer', |
| | | 'backup_interval' => 'none', |
| | | 'backup_copies' => 1, |
| | | 'allow_override' => 'All', |
| | | 'pm_process_idle_timeout' => 10, |
| | | 'pm_max_requests' => 0 |
| | | ); |
| | | $web_folder = $entry['www_root']; |
| | | $web_folder = preg_replace('/^\/(var|srv)\/www\/(vhosts\/)?[^\/]+\/(.*)\/httpdocs.*/', '$3', $web_folder); |
| | | |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . '.' . $parent_domain['name'] . "'"); |
| | | if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found domain with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->sites_web_vhost_subdomain_update($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->sites_web_vhost_subdomain_add($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $params, true); // read only... |
| | | } |
| | | |
| | | $subdomain_ids[$entry['id']] = $new_id; |
| | | $subdomain_roots[$entry['id']] = $entry['www_root']; |
| | | $subdomain_owners[$entry['id']] = $entry['cl_id']; |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />"; |
| | | |
| | | $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'"); |
| | | $path = $cmd_data['document_root']; |
| | | add_command('chattr -i ' . escapeshellarg($path)); |
| | | add_command('if [[ -f ' . $path . '/' . $web_folder . '/index.html ]] ; then rm ' . $path . '/' . $web_folder . '/index.html ; fi'); |
| | | add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $entry['www_root'] . '/ ' . $path . '/' . $web_folder . '/'); |
| | | add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path)); |
| | | add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats')); |
| | | add_command('chattr +i ' . escapeshellarg($path)); |
| | | } |
| | | } |
| | | |
| | | // dns have to be done AFTER domains due to missing client info |
| | | /* |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'ip_address' => '*', |
| | | //'ipv6_address' => '', |
| | | 'domain' => $entry['name'] . '.' . $parent_domain['name'], |
| | | 'web_folder' => $web_folder, |
| | | 'type' => 'vhostsubdomain', // can be vhost or alias |
| | | 'parent_domain_id' => $domain_ids[$entry['dom_id']], |
| | | 'vhost_type' => 'name', // or ip (-based) |
| | | 'hd_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'disk_space', -1)), |
| | | 'traffic_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'max_traffic', -1)), |
| | | 'cgi' => yes_no(get_option($hosting, 'cgi', 'false') === 'true' ? 1 : 0), |
| | | 'ssi' => yes_no(get_option($hosting, 'ssi', 'false') === 'true' ? 1 : 0), |
| | | 'suexec' => yes_no(1), // does plesk use this?! |
| | | 'errordocs' => get_option($options, 'apacheErrorDocs', 'false') === 'true' ? 1 : 0, |
| | | 'subdomain' => '', // plesk always uses this option |
| | | 'ssl' => yes_no(get_option($hosting, 'ssl', 'false') === 'true' ? 1 : 0), |
| | | 'php' => $phpmode, |
| | | 'fastcgi_php_version' => '', // plesk has no different php versions |
| | | 'ruby' => yes_no(0), // plesk has no ruby support |
| | | 'python' => yes_no(get_option($hosting, 'python', 'false') === 'true' ? 1 : 0), |
| | | 'active' => yes_no(($entry['status'] == 0 && get_option($hosting, 'maintenance_mode', 'false') !== 'true') ? 1 : 0), |
| | | 'redirect_type' => $redir_type, |
| | | 'redirect_path' => $redir_path, |
| | | 'seo_redirect' => '', |
| | | 'ssl_state' => $entry[''], |
| | | 'ssl_locality' => $entry[''], |
| | | 'ssl_organisation' => $entry[''], |
| | | 'ssl_organisation_unit' => $entry[''], |
| | | 'ssl_country' => $entry[''], |
| | | 'ssl_domain' => $entry[''], |
| | | 'ssl_request' => $entry[''], |
| | | 'ssl_cert' => $entry[''], |
| | | 'ssl_bundle' => $entry[''], |
| | | 'ssl_action' => $entry[''], |
| | | 'stats_password' => '', |
| | | 'stats_type' => get_option($hosting, 'webstat', 'webalizer') === 'awstats' ? 'awstats' : 'webalizer', |
| | | 'backup_interval' => 'none', |
| | | 'backup_copies' => 1, |
| | | 'allow_override' => 'All', |
| | | 'pm_process_idle_timeout' => 10, |
| | | 'pm_max_requests' => 0 |
| | | ); |
| | | |
| | | $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . '.' . $parent_domain['name'] . "'"); |
| | | if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'"); |
| | | if($old_domain) { |
| | | $new_id = $old_domain['domain_id']; |
| | | $params = array_merge($old_domain, $params); |
| | | $msg .= "Found domain with id " . $new_id . ", updating it.<br />"; |
| | | $ok = $importer->sites_web_vhost_subdomain_update($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $new_id, $params); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->sites_web_vhost_subdomain_add($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $params, true); // read only... |
| | | } |
| | | |
| | | $subdomain_ids[$entry['id']] = $new_id; |
| | | $subdomain_roots[$entry['id']] = $entry['www_root']; |
| | | $subdomain_owners[$entry['id']] = $entry['cl_id']; |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />"; |
| | | |
| | | $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'"); |
| | | $path = $cmd_data['document_root']; |
| | | add_command('chattr -i ' . escapeshellarg($path)); |
| | | add_command('if [[ -f ' . $path . '/' . $web_folder . '/index.html ]] ; then rm ' . $path . '/' . $web_folder . '/index.html ; fi'); |
| | | add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $entry['www_root'] . '/ ' . $path . '/' . $web_folder . '/'); |
| | | add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path)); |
| | | add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats')); |
| | | add_command('chattr +i ' . escapeshellarg($path)); |
| | | } |
| | | } |
| | | |
| | | // dns have to be done AFTER domains due to missing client info |
| | | /* |
| | | $dns_zone_ids = array(); |
| | | $dns_zone_serials = array(); |
| | | $dns_zones = $exdb->queryAllRecords("SELECT d.id, d.name, d.displayName, d.status, d.email, d.type, d.ttl, d.ttl_unit, d.refresh, d.refresh_unit, d.retry, d.retry_unit, d.expire, d.expire_unit, d.minimum, d.minimum_unit, d.serial_format, d.serial FROM dns_zone as d"); |
| | | foreach($dns_zones as $entry) { |
| | | $ns = $exdb->queryOneRecord("SELECT d.id, d.val FROM dns_recs as d WHERE d.dns_zone_id = '" . $entry['id'] . "' AND d.type = 'NS'"); |
| | | if(!$ns) $ns = array('id' => 0, 'val' => 'ns.' . $entry['name']); |
| | | |
| | | |
| | | $dom_id = $dns_domain_ids[$entry['id']]; |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | if(!$client_id) $client_id = 0; |
| | | |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'origin' => add_dot($entry['name']), // what to put here? |
| | |
| | | 'update_acl' => '', |
| | | 'active' => yes_no(($entry['status'] == 0 ? 1 : 0)) |
| | | ); |
| | | |
| | | |
| | | $old_dns = $app->db->queryOneRecord("SELECT id FROM dns_soa WHERE origin = '" . add_dot($entry['name']) . "'"); |
| | | if($old_dns) $old_id = $old_dns['id']; |
| | | if($old_id) { |
| | |
| | | } |
| | | unset($dns_zones); |
| | | */ |
| | | /* types: |
| | | /* types: |
| | | * PTR, NS, A, CNAME, MX, TXT, AAAA |
| | | *//* |
| | | $dns_records = $exdb->queryAllRecords("SELECT d.id, d.dns_zone_id, d.type, d.displayHost, d.host, d.displayVal, d.val, d.opt, d.time_stamp FROM dns_recs as d"); |
| | |
| | | // entry for missing dns zone...? |
| | | continue; |
| | | } |
| | | |
| | | |
| | | $dom_id = $dns_domain_ids[$entry['dns_zone_id']]; |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | if(!$client_id) $client_id = 0; |
| | | |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'zone' => $dns_id, |
| | |
| | | 'stamp' => $entry['time_stamp'], |
| | | //'serial' => $dns_zone_serials[$entry['id']] |
| | | ); |
| | | |
| | | |
| | | |
| | | |
| | | $record = $app->db->queryOneRecord("SELECT id FROM dns_rr WHERE zone = '" . $dns_zone_ids[$entry['dns_zone_id']] . "' AND name = '" . add_dot($entry['host']) . "' AND type = '" . $entry['type'] . "'"); |
| | | $old_id = 0; |
| | | if($record) { |
| | | $old_id = $record['id']; |
| | | } |
| | | |
| | | |
| | | $new_id = false; |
| | | if($entry['type'] === 'MX') { |
| | | $params['aux'] = $entry['opt']; |
| | |
| | | } else { |
| | | $msg .= "DNS " . $entry['id'] . " (" . $entry['name'] . ") inserted/updated.<br />"; |
| | | } |
| | | |
| | | |
| | | } |
| | | unset($dns_records); |
| | | */ |
| | | |
| | | $folder_ids = array(); |
| | | /* web_folder creation*/ |
| | | $protected_dirs = $exdb->queryAllRecords("SELECT `id`, `non_ssl`, `ssl`, `cgi_bin`, `realm`, `path`, `dom_id` FROM protected_dirs"); |
| | | foreach($protected_dirs as $entry) { |
| | | if($entry['path'] == 'plesk-stat') continue; |
| | | |
| | | $params = array('server_id' => $server_id, |
| | | 'parent_domain_id' => $domain_ids[$entry['dom_id']], |
| | | 'path' => $entry['path'], |
| | | 'active' => 'y'); |
| | | |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | |
| | | $folder_id = 0; |
| | | $check = $app->db->queryOneRecord('SELECT * FROM `web_folder` WHERE `parent_domain_id` = \'' . $domain_ids[$entry['dom_id']] . '\' AND `path` = \'' . $app->db->quote($entry['path']) . '\''); |
| | | if($check) { |
| | | $ok = $importer->sites_web_folder_update($session_id, $client_id, $check['web_folder_id'], array_merge($check, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | $folder_id = $check['web_folder_id']; |
| | | $msg .= 'Updated HTTP AUTH folder (' . $folder_id . '): ' . $entry['path'] . '<br />'; |
| | | } else { |
| | | $folder_id = $importer->sites_web_folder_add($session_id, $client_id, $params); |
| | | $msg .= 'Created HTTP AUTH folder (' . $folder_id . '): ' . $entry['path'] . '<br />'; |
| | | if(!$folder_id) $msg .= " Error: " . $importer->getFault() . "<br />" . var_export($params, true) . '<br />'; |
| | | } |
| | | |
| | | $folder_ids[$entry['id']] = $folder_id; |
| | | } |
| | | |
| | | $pd_users = $exdb->queryAllRecords("SELECT u.id, u.login, u.account_id, u.pd_id, a.password, d.dom_id FROM pd_users as u INNER JOIN protected_dirs as d ON (d.id = u.pd_id) INNER JOIN accounts as a ON (a.id = u.account_id)"); |
| | | foreach($pd_users as $entry) { |
| | | $params = array('server_id' => $server_id, |
| | | 'web_folder_id' => $folder_ids[$entry['pd_id']], |
| | | 'username' => $entry['login'], |
| | | 'password' => $entry['password'], |
| | | 'active' => 'y'); |
| | | if($entry['login'] == '' || !isset($folder_ids[$entry['pd_id']])) { |
| | | $msg .= 'Skipping Folder user because of missing data.<br />'; |
| | | continue; |
| | | } |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | |
| | | $check = $app->db->queryOneRecord('SELECT * FROM `web_folder_user` WHERE `web_folder_id` = ' . intval($folder_ids[$entry['pd_id']]) . ' AND `username` = \'' . $entry['login'] . '\''); |
| | | if($check) { |
| | | $ok = $importer->sites_web_folder_user_update($session_id, $client_id, $check['web_folder_user_id'], array_merge($check, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | $msg .= 'Updated HTTP AUTH folder user (' . $fu_id . '): ' . $entry['login'] . '<br />'; |
| | | } else { |
| | | $fu_id = $importer->sites_web_folder_user_add($session_id, $client_id, $params); |
| | | $msg .= 'Created HTTP AUTH folder user (' . $fu_id . '): ' . $entry['login'] . '<br />'; |
| | | if(!$fu_id) $msg .= " Error: " . $importer->getFault() . "<br />" . var_export($params, true) . '<br />'; |
| | | } |
| | | } |
| | | |
| | | /*$web_users = $exdb->queryAllRecords("SELECT id, dom_id, sys_user_id, ssi, php, cgi, perl, python, fastcgi, asp, asp_dot_net FROM web_users"); |
| | | |
| | | $folder_ids = array(); |
| | | /* web_folder creation*/ |
| | | $protected_dirs = $exdb->queryAllRecords("SELECT `id`, `non_ssl`, `ssl`, `cgi_bin`, `realm`, `path`, `dom_id` FROM protected_dirs"); |
| | | foreach($protected_dirs as $entry) { |
| | | if($entry['path'] == 'plesk-stat') continue; |
| | | |
| | | $params = array('server_id' => $server_id, |
| | | 'parent_domain_id' => $domain_ids[$entry['dom_id']], |
| | | 'path' => $entry['path'], |
| | | 'active' => 'y'); |
| | | |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | |
| | | $folder_id = 0; |
| | | $check = $app->db->queryOneRecord('SELECT * FROM `web_folder` WHERE `parent_domain_id` = \'' . $domain_ids[$entry['dom_id']] . '\' AND `path` = \'' . $app->db->quote($entry['path']) . '\''); |
| | | if($check) { |
| | | $ok = $importer->sites_web_folder_update($session_id, $client_id, $check['web_folder_id'], array_merge($check, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | $folder_id = $check['web_folder_id']; |
| | | $msg .= 'Updated HTTP AUTH folder (' . $folder_id . '): ' . $entry['path'] . '<br />'; |
| | | } else { |
| | | $folder_id = $importer->sites_web_folder_add($session_id, $client_id, $params); |
| | | $msg .= 'Created HTTP AUTH folder (' . $folder_id . '): ' . $entry['path'] . '<br />'; |
| | | if(!$folder_id) $msg .= " Error: " . $importer->getFault() . "<br />" . var_export($params, true) . '<br />'; |
| | | } |
| | | |
| | | $folder_ids[$entry['id']] = $folder_id; |
| | | } |
| | | |
| | | $pd_users = $exdb->queryAllRecords("SELECT u.id, u.login, u.account_id, u.pd_id, a.password, d.dom_id FROM pd_users as u INNER JOIN protected_dirs as d ON (d.id = u.pd_id) INNER JOIN accounts as a ON (a.id = u.account_id)"); |
| | | foreach($pd_users as $entry) { |
| | | $params = array('server_id' => $server_id, |
| | | 'web_folder_id' => $folder_ids[$entry['pd_id']], |
| | | 'username' => $entry['login'], |
| | | 'password' => $entry['password'], |
| | | 'active' => 'y'); |
| | | if($entry['login'] == '' || !isset($folder_ids[$entry['pd_id']])) { |
| | | $msg .= 'Skipping Folder user because of missing data.<br />'; |
| | | continue; |
| | | } |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | |
| | | $check = $app->db->queryOneRecord('SELECT * FROM `web_folder_user` WHERE `web_folder_id` = ' . intval($folder_ids[$entry['pd_id']]) . ' AND `username` = \'' . $entry['login'] . '\''); |
| | | if($check) { |
| | | $ok = $importer->sites_web_folder_user_update($session_id, $client_id, $check['web_folder_user_id'], array_merge($check, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | $msg .= 'Updated HTTP AUTH folder user (' . $fu_id . '): ' . $entry['login'] . '<br />'; |
| | | } else { |
| | | $fu_id = $importer->sites_web_folder_user_add($session_id, $client_id, $params); |
| | | $msg .= 'Created HTTP AUTH folder user (' . $fu_id . '): ' . $entry['login'] . '<br />'; |
| | | if(!$fu_id) $msg .= " Error: " . $importer->getFault() . "<br />" . var_export($params, true) . '<br />'; |
| | | } |
| | | } |
| | | |
| | | /*$web_users = $exdb->queryAllRecords("SELECT id, dom_id, sys_user_id, ssi, php, cgi, perl, python, fastcgi, asp, asp_dot_net FROM web_users"); |
| | | foreach($web_users as $entry) { |
| | | $params = |
| | | $params = |
| | | } |
| | | */ |
| | | |
| | | |
| | | $ftp_users = $exdb->queryAllRecords("SELECT f.id, f.dom_id, f.sys_user_id, s.login, s.account_id, s.home, s.shell, s.quota, s.mapped_to, a.password, a.type as `pwtype` FROM ftp_users as f INNER JOIN sys_users as s ON (s.id = f.sys_user_id) INNER JOIN accounts as a ON (a.id = s.account_id)"); |
| | | $ftp_users = array_merge($ftp_users, $dom_ftp_users); |
| | | foreach($ftp_users as $entry) { |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'"); |
| | | if(!$entry['id']) continue; |
| | | $ispc_dom_id = $domain_ids[$entry['dom_id']]; |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | if(!$client_id) $client_id = 0; |
| | | |
| | | $document_root = str_replace("[website_id]",$ispc_dom_id,$web_config["website_path"]); |
| | | $document_root = str_replace("[website_idhash_1]",id_hash($ispc_dom_id,1),$document_root); |
| | | $document_root = str_replace("[website_idhash_2]",id_hash($ispc_dom_id,1),$document_root); |
| | | $document_root = str_replace("[website_idhash_3]",id_hash($ispc_dom_id,1),$document_root); |
| | | $document_root = str_replace("[website_idhash_4]",id_hash($ispc_dom_id,1),$document_root); |
| | | |
| | | // Set the values for document_root, system_user and system_group |
| | | $system_user = 'web'.$ispc_dom_id; |
| | | $system_group = 'client'.$client_id; |
| | | $document_root = str_replace("[client_id]",$client_id,$document_root); |
| | | $document_root = str_replace("[client_idhash_1]",id_hash($client_id,1),$document_root); |
| | | $document_root = str_replace("[client_idhash_2]",id_hash($client_id,2),$document_root); |
| | | $document_root = str_replace("[client_idhash_3]",id_hash($client_id,3),$document_root); |
| | | $document_root = str_replace("[client_idhash_4]",id_hash($client_id,4),$document_root); |
| | | |
| | | $uid = $system_user; |
| | | $gid = $system_group; |
| | | |
| | | $sys_grp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = '" . $client_id . "'"); |
| | | if(!$sys_grp) $sys_grp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = 0"); |
| | | |
| | | if(!$sys_grp) $sys_groupid = 1; |
| | | else $sys_groupid = $sys_grp['groupid']; |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'parent_domain_id' => $domain_ids[$entry['dom_id']], |
| | | 'username' => $entry['login'], |
| | | 'password' => $entry['password'], |
| | | 'quota_size' => byte_to_mbyte(($entry['quota'] == 0 ? -1 : $entry['quota'])), |
| | | 'active' => yes_no(1), |
| | | 'uid' => $uid, |
| | | 'gid' => $gid, |
| | | 'dir' => $document_root . (substr($document_root, -1) !== '/' ? '/' : ''), |
| | | 'sys_groupid' => $sys_groupid |
| | | //'quota_files' => $entry[''], |
| | | //'ul_ratio' => $entry[''], |
| | | //'dl_ratio' => $entry[''], |
| | | //'ul_bandwidth' => $entry[''], |
| | | //'dl_bandwidth' => $entry[''] |
| | | ); |
| | | $new_id = false; |
| | | $old_ftp = $app->db->queryOneRecord("SELECT ftp_user_id, parent_domain_id FROM ftp_user WHERE username = '" . $entry['login'] ."'"); |
| | | if($old_ftp) { |
| | | if($old_ftp['parent_domain_id'] != $domain_ids[$entry['dom_id']]) { |
| | | $msg .= "FTP Account conflicts with other domain!<br />"; |
| | | } else { |
| | | $new_id = $old_ftp['ftp_user_id']; |
| | | $ok = $importer->sites_ftp_user_update($session_id, $client_id, $new_id, array_merge($old_ftp, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } |
| | | } else { |
| | | $new_id = $importer->sites_ftp_user_add($session_id, $client_id, $params); |
| | | } |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "FTP " . $entry['id'] . " (" . $entry['login'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | $msg .= "Params: " . var_export($params, true) . "<br />"; |
| | | } else { |
| | | $msg .= "FTP Account " . $entry['id'] . " (" . $entry['login'] . ") inserted.<br />"; |
| | | } |
| | | } |
| | | |
| | | $mail_config = $app->getconf->get_server_config($server_id, 'mail'); |
| | | |
| | | $mail_addresses = $exdb->queryAllRecords("SELECT m.id, m.mail_name, m.perm_id, m.postbox, m.account_id, m.redirect, m.redir_addr, m.mail_group, m.autoresponder, m.spamfilter, m.virusfilter, m.mbox_quota, m.dom_id, m.userId, a.password, a.type as `pwtype` FROM mail as m LEFT JOIN accounts as a ON (a.id = m.account_id) "); |
| | | $mail_ids = array(); |
| | | foreach($mail_addresses as $entry) { |
| | | |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'"); |
| | | if(!$parent_domain) { |
| | | $msg .= "Could not insert/update mail address " . $entry['mail_name'] . " as domain is missing.<br />"; |
| | | continue; |
| | | } |
| | | |
| | | /* postbox true/false |
| | | |
| | | $ftp_users = $exdb->queryAllRecords("SELECT f.id, f.dom_id, f.sys_user_id, s.login, s.account_id, s.home, s.shell, s.quota, s.mapped_to, a.password, a.type as `pwtype` FROM ftp_users as f INNER JOIN sys_users as s ON (s.id = f.sys_user_id) INNER JOIN accounts as a ON (a.id = s.account_id)"); |
| | | $ftp_users = array_merge($ftp_users, $dom_ftp_users); |
| | | foreach($ftp_users as $entry) { |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'"); |
| | | if(!$entry['id']) continue; |
| | | $ispc_dom_id = $domain_ids[$entry['dom_id']]; |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | if(!$client_id) $client_id = 0; |
| | | |
| | | $document_root = str_replace("[website_id]", $ispc_dom_id, $web_config["website_path"]); |
| | | $document_root = str_replace("[website_idhash_1]", id_hash($ispc_dom_id, 1), $document_root); |
| | | $document_root = str_replace("[website_idhash_2]", id_hash($ispc_dom_id, 1), $document_root); |
| | | $document_root = str_replace("[website_idhash_3]", id_hash($ispc_dom_id, 1), $document_root); |
| | | $document_root = str_replace("[website_idhash_4]", id_hash($ispc_dom_id, 1), $document_root); |
| | | |
| | | // Set the values for document_root, system_user and system_group |
| | | $system_user = 'web'.$ispc_dom_id; |
| | | $system_group = 'client'.$client_id; |
| | | $document_root = str_replace("[client_id]", $client_id, $document_root); |
| | | $document_root = str_replace("[client_idhash_1]", id_hash($client_id, 1), $document_root); |
| | | $document_root = str_replace("[client_idhash_2]", id_hash($client_id, 2), $document_root); |
| | | $document_root = str_replace("[client_idhash_3]", id_hash($client_id, 3), $document_root); |
| | | $document_root = str_replace("[client_idhash_4]", id_hash($client_id, 4), $document_root); |
| | | |
| | | $uid = $system_user; |
| | | $gid = $system_group; |
| | | |
| | | $sys_grp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = '" . $client_id . "'"); |
| | | if(!$sys_grp) $sys_grp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = 0"); |
| | | |
| | | if(!$sys_grp) $sys_groupid = 1; |
| | | else $sys_groupid = $sys_grp['groupid']; |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'parent_domain_id' => $domain_ids[$entry['dom_id']], |
| | | 'username' => $entry['login'], |
| | | 'password' => $entry['password'], |
| | | 'quota_size' => byte_to_mbyte(($entry['quota'] == 0 ? -1 : $entry['quota'])), |
| | | 'active' => yes_no(1), |
| | | 'uid' => $uid, |
| | | 'gid' => $gid, |
| | | 'dir' => $document_root . (substr($document_root, -1) !== '/' ? '/' : ''), |
| | | 'sys_groupid' => $sys_groupid |
| | | //'quota_files' => $entry[''], |
| | | //'ul_ratio' => $entry[''], |
| | | //'dl_ratio' => $entry[''], |
| | | //'ul_bandwidth' => $entry[''], |
| | | //'dl_bandwidth' => $entry[''] |
| | | ); |
| | | $new_id = false; |
| | | $old_ftp = $app->db->queryOneRecord("SELECT ftp_user_id, parent_domain_id FROM ftp_user WHERE username = '" . $entry['login'] ."'"); |
| | | if($old_ftp) { |
| | | if($old_ftp['parent_domain_id'] != $domain_ids[$entry['dom_id']]) { |
| | | $msg .= "FTP Account conflicts with other domain!<br />"; |
| | | } else { |
| | | $new_id = $old_ftp['ftp_user_id']; |
| | | $ok = $importer->sites_ftp_user_update($session_id, $client_id, $new_id, array_merge($old_ftp, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } |
| | | } else { |
| | | $new_id = $importer->sites_ftp_user_add($session_id, $client_id, $params); |
| | | } |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "FTP " . $entry['id'] . " (" . $entry['login'] . ") could not be inserted.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | $msg .= "Params: " . var_export($params, true) . "<br />"; |
| | | } else { |
| | | $msg .= "FTP Account " . $entry['id'] . " (" . $entry['login'] . ") inserted.<br />"; |
| | | } |
| | | } |
| | | |
| | | $mail_config = $app->getconf->get_server_config($server_id, 'mail'); |
| | | |
| | | $mail_addresses = $exdb->queryAllRecords("SELECT m.id, m.mail_name, m.perm_id, m.postbox, m.account_id, m.redirect, m.redir_addr, m.mail_group, m.autoresponder, m.spamfilter, m.virusfilter, m.mbox_quota, m.dom_id, m.userId, a.password, a.type as `pwtype` FROM mail as m LEFT JOIN accounts as a ON (a.id = m.account_id) "); |
| | | $mail_ids = array(); |
| | | foreach($mail_addresses as $entry) { |
| | | |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'"); |
| | | if(!$parent_domain) { |
| | | $msg .= "Could not insert/update mail address " . $entry['mail_name'] . " as domain is missing.<br />"; |
| | | continue; |
| | | } |
| | | |
| | | /* postbox true/false |
| | | * mail_group true/false |
| | | * spamfilter true/false |
| | | */ |
| | | |
| | | |
| | | $has_responder = false; |
| | | if($entry['autoresponder'] === 'true') { |
| | | $responder = $exdb->queryOneRecord("SELECT id, mn_id, resp_name, keystr, key_where, subject, reply_to, content_type, charset, text, resp_on, ans_freq, mem_limit FROM mail_resp WHERE mn_id = '" . $entry['id'] . "'"); |
| | | if($responder) $has_responder = true; |
| | | } |
| | | |
| | | $maildir = str_replace("[domain]",$parent_domain["name"],$mail_config["maildir_path"]); |
| | | $maildir = str_replace("[localpart]",strtolower($entry["mail_name"]),$maildir); |
| | | |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'email' => $entry['mail_name'] . "@" . $parent_domain['name'], |
| | | 'login' => strtolower($entry['mail_name'] . "@" . $parent_domain['name']), |
| | | 'password' => $entry['password'], |
| | | 'name' => $entry[''], |
| | | 'quota' => ($entry['mbox_quota'] == -1 ? 0 : $entry['mbox_quota']), // in bytes! |
| | | 'cc' => $entry['redir_addr'], |
| | | 'maildir' => $maildir, |
| | | 'homedir' => $mail_config["homedir_path"], |
| | | 'uid' => $mail_config["mailuser_uid"], |
| | | 'gid' => $mail_config["mailuser_gid"], |
| | | 'postfix' => yes_no(1), |
| | | 'disableimap' => yes_no(0), |
| | | 'disablepop3' => yes_no(0), |
| | | 'autoresponder_subject' => ($has_responder ? $responder['subject'] : ''), |
| | | 'autoresponder_text' => ($has_responder ? $responder['text'] : ''), |
| | | 'autoresponder' => yes_no($has_responder ? 1 : 0), |
| | | 'autoresponder_start_date' => ($has_responder && $responder['resp_on'] === 'true' ? strftime('%Y-%m-%d', time()) : strftime('%Y-%m-%d', time() - (3600*24))), |
| | | 'autoresponder_end_date' => ($has_responder && $responder['resp_on'] === 'true' ? strftime('%Y-%m-%d', time() + (3600*24*365)) : strftime('%Y-%m-%d', time())), |
| | | 'move_junk' => yes_no(0) |
| | | ); |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | |
| | | // if this is no postbox we do not need to create a mailuser |
| | | if($entry['postbox'] !== 'false') { |
| | | $old_mail = $app->db->queryOneRecord("SELECT mailuser_id FROM mail_user WHERE email = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "'"); |
| | | if($old_mail) { |
| | | $new_id = $old_mail['mailuser_id']; |
| | | $ok = $importer->mail_user_update($session_id, $client_id, $new_id, array_merge($old_mail, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->mail_user_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Mail" . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . ") could not be inserted/updated.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Mail " . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . ") inserted/updated.<br />"; |
| | | |
| | | add_command('rsync -av --delete-after --modify-window 10 --progress -e ssh root@${MYSERVER}:/var/qmail/mailnames/' . $parent_domain['name'] . '/' . strtolower($entry['mail_name']) . '/Maildir/ ' . $maildir . '/Maildir/'); |
| | | add_command('chown -R vmail:vmail ' . $maildir); |
| | | add_command('chmod 744 ' . $maildir . '/Maildir/subscriptions'); |
| | | add_command('chmod 600 ' . $maildir . '/Maildir/dovecot-*'); |
| | | add_command('chmod 700 ' . $maildir . '/Maildir/cur ' . $maildir . '/Maildir/new ' . $maildir . '/Maildir/tmp'); |
| | | add_command('chmod 600 ' . $maildir . '/Maildir/cur/* ' . $maildir . '/Maildir/new/* ' . $maildir . '/Maildir/tmp/*'); |
| | | } |
| | | $mail_ids[$entry['id']] = $new_id; |
| | | } |
| | | |
| | | // select all redirs for this address |
| | | $mail_redir = $exdb->queryAllRecords("SELECT id, mn_id, address FROM mail_redir WHERE mn_id = '" . $entry['id'] . "'"); |
| | | foreach($mail_redir as $redir) { |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'source' => $entry['mail_name'] . "@" . $parent_domain['name'], |
| | | 'destination' => $redir['address'], |
| | | 'type' => 'forward', // or forward |
| | | 'active' => yes_no(1) |
| | | ); |
| | | |
| | | $old_mail = $app->db->queryOneRecord("SELECT forwarding_id FROM mail_forwarding WHERE source = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "' AND destination = '" . $redir['address'] . "'"); |
| | | if($old_mail) { |
| | | $new_id = $old_mail['forwarding_id']; |
| | | $ok = $importer->mail_forward_update($session_id, $client_id, $new_id, array_merge($old_mail, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->mail_forward_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Mail redirect " . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . " to " . $redir['address'] . ") could not be inserted/updated.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Mail redirect " . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . " to " . $redir['address'] . ") inserted/updated.<br />"; |
| | | } |
| | | } |
| | | unset($mail_redir); |
| | | } |
| | | unset($mail_addresses); |
| | | |
| | | $mail_aliases = $exdb->queryAllRecords("SELECT a.id, a.mn_id, a.alias, m.dom_id, m.mail_name FROM mail_aliases as a INNER JOIN mail as m ON (m.id = a.mn_id)"); |
| | | foreach($mail_aliases as $entry) { |
| | | |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'"); |
| | | if(!$parent_domain) { |
| | | $msg .= "Could not insert/update mail alias " . $entry['alias'] . " as domain is missing.<br />"; |
| | | continue; |
| | | } |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'source' => $entry['alias'] . "@" . $parent_domain['name'], |
| | | 'destination' => $entry['mail_name'] . "@" . $parent_domain['name'], |
| | | 'type' => 'alias', // or forward |
| | | 'active' => yes_no(1) |
| | | ); |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | |
| | | $old_mail = $app->db->queryOneRecord("SELECT forwarding_id FROM mail_forwarding WHERE source = '" . $entry['alias'] . "@" . $parent_domain['name'] . "' AND destination = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "'"); |
| | | if($old_mail) { |
| | | $new_id = $old_mail['forwarding_id']; |
| | | $ok = $importer->mail_alias_update($session_id, $client_id, $new_id, array_merge($old_mail, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->mail_alias_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Mail alias " . $entry['id'] . " (" . $entry['alias'] . "@" . $parent_domain['name'] . ") could not be inserted/updated.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Mail alias " . $entry['id'] . " (" . $entry['alias'] . "@" . $parent_domain['name'] . ") inserted/updated.<br />"; |
| | | } |
| | | } |
| | | unset($mail_aliases); |
| | | |
| | | //spamfilter // preferences = true/false, username = email address, can be *@* |
| | | //id, username, preferences |
| | | |
| | | //spamfilter_preferences |
| | | //prefid, spamfilter_id, preference, value |
| | | |
| | | |
| | | |
| | | //$client_traffic = $exdb->queryAllRecords("SELECT t.cl_id, t.date, t.http_in, t.http_out, t.ftp_in, t.ftp_out, t.smtp_in, t.smtp_out, t.pop3_imap_in, t.pop3_imap_out FROM ClientsTraffic as t"); |
| | | |
| | | $db_userids = array(); |
| | | |
| | | $db_users = $exdb->queryAllRecords("SELECT u.id, u.login, u.account_id, u.db_id, a.password, a.type as `pwtype`, d.dom_id FROM db_users as u INNER JOIN data_bases as d ON (d.id = u.db_id) LEFT JOIN accounts as a ON (a.id = u.account_id)"); |
| | | foreach($db_users as $db_user) { |
| | | // database user |
| | | $params = array('server_id' => $server_id, |
| | | 'database_user' => $db_user['login'], |
| | | 'database_password' => $db_user['password']); |
| | | |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$db_user['dom_id']]]; |
| | | $has_responder = false; |
| | | if($entry['autoresponder'] === 'true') { |
| | | $responder = $exdb->queryOneRecord("SELECT id, mn_id, resp_name, keystr, key_where, subject, reply_to, content_type, charset, text, resp_on, ans_freq, mem_limit FROM mail_resp WHERE mn_id = '" . $entry['id'] . "'"); |
| | | if($responder) $has_responder = true; |
| | | } |
| | | |
| | | $check = $app->db->queryOneRecord('SELECT * FROM `web_database_user` WHERE `database_user` = \'' . $app->db->quote($db_user['login']) . '\''); |
| | | $db_user_id = 0; |
| | | if($check) { |
| | | $ok = $importer->sites_database_user_update($session_id, $client_id, $check['database_user_id'], array_merge($check, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | $db_user_id = $check['database_user_id']; |
| | | } else { |
| | | $db_user_id = $importer->sites_database_user_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | if(!isset($db_userids[$db_user['db_id']])) $db_userids[$db_user['db_id']] = $db_user_id; |
| | | $msg .= 'Created / updated database user: ' . $db_user['login'] . '<br />'; |
| | | } |
| | | |
| | | add_command('# DATABASES'); |
| | | |
| | | $databases = $exdb->queryAllRecords("SELECT d.id, d.name, d.type, d.dom_id, d.db_server_id, d.default_user_id FROM `data_bases` as d"); |
| | | foreach($databases as $database) { |
| | | $params = array('server_id' => $server_id, |
| | | 'parent_domain_id' => $domain_ids[$database['dom_id']], |
| | | 'type' => 'mysql', |
| | | 'database_name' => $database['name'], |
| | | 'database_user_id' => $db_userids[$database['id']], |
| | | 'database_ro_user_id' => 0, |
| | | 'database_charset' => 'utf8', |
| | | 'remote_access' => 'n', |
| | | 'active' => 'y', |
| | | 'remote_ips' => ''); |
| | | |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$database['dom_id']]]; |
| | | |
| | | $check = $app->db->queryOneRecord('SELECT * FROM `web_database` WHERE `database_name` = \'' . $app->db->quote($database['name']) . '\''); |
| | | if($check) { |
| | | $ok = $importer->sites_database_update($session_id, $client_id, $check['database_id'], array_merge($check, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $importer->sites_database_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | add_command('for T in `mysql -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS} ' . $database['name'] . ' -e \'show tables\' | awk \'{ print $1}\' | grep -v \'^Tables\'` ; do echo "DROP TABLE \\`$T\\`" ; mysql -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS} ' . $database['name'] . ' -e "DROP TABLE \\`$T\\`" ; done'); |
| | | add_command('mysqldump -cCQ --quote-names --hex-blob -h ${MYSERVER} -u ${MYSQL_EXPORT_USER} -p${MYSQL_EXPORT_PASS} ' . $database['name'] . ' | mysql -D ' . $database['name'] . ' -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS}'); |
| | | |
| | | $msg .= 'Created / updated database: ' . $database['name'] . '<br />'; |
| | | } |
| | | |
| | | // do we need table disk_usage for import? i think we don't |
| | | |
| | | // name is domain name, displayName is including "Umlaute" |
| | | //$anon_ftp = $exdb->queryAllRecords("SELECT f.id, f.dom_id, f.max_conn, f.bandwidth, f.incoming, f.incoming_readable, f.incoming_subdirs, f.status, f.quota, f.display_login, f.login_text FROM anon_ftp as f"); |
| | | |
| | | |
| | | //DomainServices |
| | | //id, dom_id, type, status, parameters_id, ipCollectionId |
| | | |
| | | //DomainsTraffic |
| | | //dom_id, date, http_in, http_out, ftp_in, ftp_out, smtp_in, smtp_out, pop3_imap_in, pop3_imap_out |
| | | |
| | | |
| | | //IP_Adresses |
| | | //id, ip_address, mask, iface, ssl_certificate_id, default_domain_id, ftps, main, status |
| | | |
| | | //ip_pool |
| | | //id, ip_address_id, type |
| | | $maildir = str_replace("[domain]", $parent_domain["name"], $mail_config["maildir_path"]); |
| | | $maildir = str_replace("[localpart]", strtolower($entry["mail_name"]), $maildir); |
| | | |
| | | /* TODO: |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'email' => $entry['mail_name'] . "@" . $parent_domain['name'], |
| | | 'login' => strtolower($entry['mail_name'] . "@" . $parent_domain['name']), |
| | | 'password' => $entry['password'], |
| | | 'name' => $entry[''], |
| | | 'quota' => ($entry['mbox_quota'] == -1 ? 0 : $entry['mbox_quota']), // in bytes! |
| | | 'cc' => $entry['redir_addr'], |
| | | 'maildir' => $maildir, |
| | | 'homedir' => $mail_config["homedir_path"], |
| | | 'uid' => $mail_config["mailuser_uid"], |
| | | 'gid' => $mail_config["mailuser_gid"], |
| | | 'postfix' => yes_no(1), |
| | | 'disableimap' => yes_no(0), |
| | | 'disablepop3' => yes_no(0), |
| | | 'autoresponder_subject' => ($has_responder ? $responder['subject'] : ''), |
| | | 'autoresponder_text' => ($has_responder ? $responder['text'] : ''), |
| | | 'autoresponder' => yes_no($has_responder ? 1 : 0), |
| | | 'autoresponder_start_date' => ($has_responder && $responder['resp_on'] === 'true' ? strftime('%Y-%m-%d', time()) : strftime('%Y-%m-%d', time() - (3600*24))), |
| | | 'autoresponder_end_date' => ($has_responder && $responder['resp_on'] === 'true' ? strftime('%Y-%m-%d', time() + (3600*24*365)) : strftime('%Y-%m-%d', time())), |
| | | 'move_junk' => yes_no(0) |
| | | ); |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | |
| | | // if this is no postbox we do not need to create a mailuser |
| | | if($entry['postbox'] !== 'false') { |
| | | $old_mail = $app->db->queryOneRecord("SELECT mailuser_id FROM mail_user WHERE email = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "'"); |
| | | if($old_mail) { |
| | | $new_id = $old_mail['mailuser_id']; |
| | | $ok = $importer->mail_user_update($session_id, $client_id, $new_id, array_merge($old_mail, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->mail_user_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Mail" . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . ") could not be inserted/updated.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Mail " . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . ") inserted/updated.<br />"; |
| | | |
| | | add_command('rsync -av --delete-after --modify-window 10 --progress -e ssh root@${MYSERVER}:/var/qmail/mailnames/' . $parent_domain['name'] . '/' . strtolower($entry['mail_name']) . '/Maildir/ ' . $maildir . '/Maildir/'); |
| | | add_command('chown -R vmail:vmail ' . $maildir); |
| | | add_command('chmod 744 ' . $maildir . '/Maildir/subscriptions'); |
| | | add_command('chmod 600 ' . $maildir . '/Maildir/dovecot-*'); |
| | | add_command('chmod 700 ' . $maildir . '/Maildir/cur ' . $maildir . '/Maildir/new ' . $maildir . '/Maildir/tmp'); |
| | | add_command('chmod 600 ' . $maildir . '/Maildir/cur/* ' . $maildir . '/Maildir/new/* ' . $maildir . '/Maildir/tmp/*'); |
| | | } |
| | | $mail_ids[$entry['id']] = $new_id; |
| | | } |
| | | |
| | | // select all redirs for this address |
| | | $mail_redir = $exdb->queryAllRecords("SELECT id, mn_id, address FROM mail_redir WHERE mn_id = '" . $entry['id'] . "'"); |
| | | foreach($mail_redir as $redir) { |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'source' => $entry['mail_name'] . "@" . $parent_domain['name'], |
| | | 'destination' => $redir['address'], |
| | | 'type' => 'forward', // or forward |
| | | 'active' => yes_no(1) |
| | | ); |
| | | |
| | | $old_mail = $app->db->queryOneRecord("SELECT forwarding_id FROM mail_forwarding WHERE source = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "' AND destination = '" . $redir['address'] . "'"); |
| | | if($old_mail) { |
| | | $new_id = $old_mail['forwarding_id']; |
| | | $ok = $importer->mail_forward_update($session_id, $client_id, $new_id, array_merge($old_mail, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->mail_forward_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Mail redirect " . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . " to " . $redir['address'] . ") could not be inserted/updated.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Mail redirect " . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . " to " . $redir['address'] . ") inserted/updated.<br />"; |
| | | } |
| | | } |
| | | unset($mail_redir); |
| | | } |
| | | unset($mail_addresses); |
| | | |
| | | $mail_aliases = $exdb->queryAllRecords("SELECT a.id, a.mn_id, a.alias, m.dom_id, m.mail_name FROM mail_aliases as a INNER JOIN mail as m ON (m.id = a.mn_id)"); |
| | | foreach($mail_aliases as $entry) { |
| | | |
| | | $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'"); |
| | | if(!$parent_domain) { |
| | | $msg .= "Could not insert/update mail alias " . $entry['alias'] . " as domain is missing.<br />"; |
| | | continue; |
| | | } |
| | | |
| | | $params = array( |
| | | 'server_id' => $server_id, |
| | | 'source' => $entry['alias'] . "@" . $parent_domain['name'], |
| | | 'destination' => $entry['mail_name'] . "@" . $parent_domain['name'], |
| | | 'type' => 'alias', // or forward |
| | | 'active' => yes_no(1) |
| | | ); |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]]; |
| | | |
| | | $old_mail = $app->db->queryOneRecord("SELECT forwarding_id FROM mail_forwarding WHERE source = '" . $entry['alias'] . "@" . $parent_domain['name'] . "' AND destination = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "'"); |
| | | if($old_mail) { |
| | | $new_id = $old_mail['forwarding_id']; |
| | | $ok = $importer->mail_alias_update($session_id, $client_id, $new_id, array_merge($old_mail, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $new_id = $importer->mail_alias_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | if($new_id === false) { |
| | | //something went wrong here... |
| | | $msg .= "Mail alias " . $entry['id'] . " (" . $entry['alias'] . "@" . $parent_domain['name'] . ") could not be inserted/updated.<br />"; |
| | | $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $msg .= "Mail alias " . $entry['id'] . " (" . $entry['alias'] . "@" . $parent_domain['name'] . ") inserted/updated.<br />"; |
| | | } |
| | | } |
| | | unset($mail_aliases); |
| | | |
| | | //spamfilter // preferences = true/false, username = email address, can be *@* |
| | | //id, username, preferences |
| | | |
| | | //spamfilter_preferences |
| | | //prefid, spamfilter_id, preference, value |
| | | |
| | | |
| | | |
| | | //$client_traffic = $exdb->queryAllRecords("SELECT t.cl_id, t.date, t.http_in, t.http_out, t.ftp_in, t.ftp_out, t.smtp_in, t.smtp_out, t.pop3_imap_in, t.pop3_imap_out FROM ClientsTraffic as t"); |
| | | |
| | | $db_userids = array(); |
| | | |
| | | $db_users = $exdb->queryAllRecords("SELECT u.id, u.login, u.account_id, u.db_id, a.password, a.type as `pwtype`, d.dom_id FROM db_users as u INNER JOIN data_bases as d ON (d.id = u.db_id) LEFT JOIN accounts as a ON (a.id = u.account_id)"); |
| | | foreach($db_users as $db_user) { |
| | | // database user |
| | | $params = array('server_id' => $server_id, |
| | | 'database_user' => $db_user['login'], |
| | | 'database_password' => $db_user['password']); |
| | | |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$db_user['dom_id']]]; |
| | | |
| | | $check = $app->db->queryOneRecord('SELECT * FROM `web_database_user` WHERE `database_user` = \'' . $app->db->quote($db_user['login']) . '\''); |
| | | $db_user_id = 0; |
| | | if($check) { |
| | | $ok = $importer->sites_database_user_update($session_id, $client_id, $check['database_user_id'], array_merge($check, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | $db_user_id = $check['database_user_id']; |
| | | } else { |
| | | $db_user_id = $importer->sites_database_user_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | if(!isset($db_userids[$db_user['db_id']])) $db_userids[$db_user['db_id']] = $db_user_id; |
| | | $msg .= 'Created / updated database user: ' . $db_user['login'] . '<br />'; |
| | | } |
| | | |
| | | add_command('# DATABASES'); |
| | | |
| | | $databases = $exdb->queryAllRecords("SELECT d.id, d.name, d.type, d.dom_id, d.db_server_id, d.default_user_id FROM `data_bases` as d"); |
| | | foreach($databases as $database) { |
| | | $params = array('server_id' => $server_id, |
| | | 'parent_domain_id' => $domain_ids[$database['dom_id']], |
| | | 'type' => 'mysql', |
| | | 'database_name' => $database['name'], |
| | | 'database_user_id' => $db_userids[$database['id']], |
| | | 'database_ro_user_id' => 0, |
| | | 'database_charset' => 'utf8', |
| | | 'remote_access' => 'n', |
| | | 'active' => 'y', |
| | | 'remote_ips' => ''); |
| | | |
| | | $client_id = $plesk_ispc_ids[$domain_owners[$database['dom_id']]]; |
| | | |
| | | $check = $app->db->queryOneRecord('SELECT * FROM `web_database` WHERE `database_name` = \'' . $app->db->quote($database['name']) . '\''); |
| | | if($check) { |
| | | $ok = $importer->sites_database_update($session_id, $client_id, $check['database_id'], array_merge($check, $params)); |
| | | if($ok === false) $msg .= " Error: " . $importer->getFault() . "<br />"; |
| | | } else { |
| | | $importer->sites_database_add($session_id, $client_id, $params); |
| | | } |
| | | |
| | | add_command('for T in `mysql -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS} ' . $database['name'] . ' -e \'show tables\' | awk \'{ print $1}\' | grep -v \'^Tables\'` ; do echo "DROP TABLE \\`$T\\`" ; mysql -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS} ' . $database['name'] . ' -e "DROP TABLE \\`$T\\`" ; done'); |
| | | add_command('mysqldump -cCQ --quote-names --hex-blob -h ${MYSERVER} -u ${MYSQL_EXPORT_USER} -p${MYSQL_EXPORT_PASS} ' . $database['name'] . ' | mysql -D ' . $database['name'] . ' -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS}'); |
| | | |
| | | $msg .= 'Created / updated database: ' . $database['name'] . '<br />'; |
| | | } |
| | | |
| | | // do we need table disk_usage for import? i think we don't |
| | | |
| | | // name is domain name, displayName is including "Umlaute" |
| | | //$anon_ftp = $exdb->queryAllRecords("SELECT f.id, f.dom_id, f.max_conn, f.bandwidth, f.incoming, f.incoming_readable, f.incoming_subdirs, f.status, f.quota, f.display_login, f.login_text FROM anon_ftp as f"); |
| | | |
| | | |
| | | //DomainServices |
| | | //id, dom_id, type, status, parameters_id, ipCollectionId |
| | | |
| | | //DomainsTraffic |
| | | //dom_id, date, http_in, http_out, ftp_in, ftp_out, smtp_in, smtp_out, pop3_imap_in, pop3_imap_out |
| | | |
| | | |
| | | //IP_Adresses |
| | | //id, ip_address, mask, iface, ssl_certificate_id, default_domain_id, ftps, main, status |
| | | |
| | | //ip_pool |
| | | //id, ip_address_id, type |
| | | |
| | | /* TODO: |
| | | */ |
| | | //misc // needed? global settings |
| | | //param, val |
| | | |
| | | //Permissions |
| | | //id, permission, value |
| | | |
| | | //smb_users // pass is base64 encoded plaintext |
| | | //id, login, password, contactName, email, companyName, phone, fax, address, city, state, zip, country, creationDate, isBuiltIn, roleId, uuid, isLocked, authCookie, sessionId, externalId, ownerId, isDomainAdmin, additionalInfo, imNumber, imType, isLegacyUser |
| | | |
| | | /* TODO: |
| | | //misc // needed? global settings |
| | | //param, val |
| | | |
| | | //Permissions |
| | | //id, permission, value |
| | | |
| | | //smb_users // pass is base64 encoded plaintext |
| | | //id, login, password, contactName, email, companyName, phone, fax, address, city, state, zip, country, creationDate, isBuiltIn, roleId, uuid, isLocked, authCookie, sessionId, externalId, ownerId, isDomainAdmin, additionalInfo, imNumber, imType, isLegacyUser |
| | | |
| | | /* TODO: |
| | | sys_users // mapped_to = parent_id |
| | | id, login, account_id, home, shell, quota, mapped_to |
| | | |
| | | |
| | | */ |
| | | add_command('unset MYSERVER'); |
| | | add_command('unset MYSQL_EXPORT_USER'); |
| | | add_command('unset MYSQL_EXPORT_PASS'); |
| | | add_command('unset MYSQL_IMPORT_USER'); |
| | | add_command('unset MYSQL_IMPORT_PASS'); |
| | | add_command('# END'); |
| | | file_put_contents('/tmp/plesk_import_commands.sh', $COMMANDS); |
| | | add_command('unset MYSERVER'); |
| | | add_command('unset MYSQL_EXPORT_USER'); |
| | | add_command('unset MYSQL_EXPORT_PASS'); |
| | | add_command('unset MYSQL_IMPORT_USER'); |
| | | add_command('unset MYSQL_IMPORT_PASS'); |
| | | add_command('# END'); |
| | | file_put_contents('/tmp/plesk_import_commands.sh', $COMMANDS); |
| | | } else { |
| | | $msg .= 'Connecting to external database failed!<br />'; |
| | | $msg .= $exdb->connect_error; |
| | | $msg .= substr($exdb->errorMessage, 0, 25); |
| | | |
| | | $msg .= 'Connecting to external database failed!<br />'; |
| | | $msg .= $exdb->connect_error; |
| | | $msg .= substr($exdb->errorMessage, 0, 25); |
| | | |
| | | $error .= $exdb->errorMessage; |
| | | } |
| | | |
| | | |
| | | //* restore db login details |
| | | /*$conf['db_host'] = $conf_bak['db_host']; |
| | | $conf['db_database'] = $conf_bak['db_database']; |
| | | $conf['db_user'] = $conf_bak['db_user']; |
| | | $conf['db_password'] = $conf_bak['db_password'];*/ |
| | | |
| | | |
| | | } |
| | | |
| | | $app->tpl->setVar('msg',$msg); |
| | | $app->tpl->setVar('error',$error); |
| | | $app->tpl->setVar('msg', $msg); |
| | | $app->tpl->setVar('error', $error); |
| | | |
| | | |
| | | $app->tpl_defaults(); |
| | | $app->tpl->pparse(); |
| | | |
| | | |
| | | ?> |
| | | ?> |