0)); require_once WHMCS_MAIN_DIR.DS.'init.php'; require_once ADDON_DIR.DS.'loader.php'; $loader = new \MGModule\DNSManager2\loader(); main\addon::I(true); if(!function_exists('dns_echo')) { function dns_echo($string = '', $error = false) { if(IS_CLI) { echo ($error? 'Error: ' : '') . strip_tags($string) . "\r\n"; } else { echo ($error?'Migration failed: ':'') . $string . '
'; } } } $migrate = false; if( isset($_GET['proceed']) || (isset($argv[1]) && $argv[1] == 'proceed')) { $migrate = true; } $whmcs_path = dirname(dirname(dirname(dirname(__DIR__)))); $path = $whmcs_path . DS . 'templates' . DS . 'dns_templates' . DS . 'dns_controller.php'; if(!file_exists($path)) { dns_echo('I cant find old DNS Manager For WHMCS under ' . $path, true); die(); } $path2 = dirname(dirname(__DIR__)) . DS . 'dns_manager' . DS . 'dns_manager.php'; if(!file_exists($path2)) { dns_echo('I cant find old DNS Manager For WHMCS under ' . $path2, true); die(); } $path3 = $whmcs_path . DS . 'includes' . DS . 'dns_core.php'; if(!file_exists($path3)) { dns_echo('I cant find old DNS Manager For WHMCS under ' . $path3, true); die(); } if(!function_exists('dns_controller_listPtrRecords')) { require_once $path; dns_echo('DNS file loaded ('.$path. ')'); } if(!function_exists('dns_manager_isMultiservers')) { require_once $path2; dns_echo('DNS file loaded ('.$path2. ')'); } if(!class_exists('dns_core')) { require_once $path3; dns_echo('DNS file loaded ('.$path3. ')'); } if(!function_exists('dns_controller_listPtrRecords') || !function_exists('dns_manager_isMultiservers') ) { dns_echo('Migration requires newest version of old DNS Manager For WHMCS', true); die(); } if(!$migrate) { dns_echo(); $script = __FILE__; if(IS_CLI) { dns_echo("If you want to proceed then run this command: 'php -q $script proceed 1'"); die(); } else { dns_echo('
'); dns_echo("Or run this command in command line 'php -q $script proceed 1'"); } die(); } $multi = dns_manager_isMultiservers(); $avaiable_submodules = main\mgLibs\custom\dns\Core::getAvailableSubmodules(); $servers_map = array( //jesli tu nie ma to używa tej samej nazwy (sprawdzajac czy istnieje) 'dns_4psa' => 'DNS4PSA', 'parallels_plesk' => 'Plesk', 'cpanel' => 'CPanelOldApi', 'powerdns_hosted' => 'PowerDNSHosted', ); if(!$multi) { $module = dns_manager_getWHMCSconfig('mg_dns_currentmodule'); $server_config = unserialize(dns_manager_getWHMCSconfig("mg_dns_{$module}_config")); $config = unserialize(dns_manager_getWHMCSconfig('dns_processing')); $nameservers = unserialize(dns_manager_getWHMCSconfig('mg_dns_nameservers')); isset($server_config['defaultIP'])?$server_config['default_ip']:''; if(isset($servers_map[$module])) { $module = $servers_map[$module]; } foreach($avaiable_submodules as $sub) { if(strtolower($sub) == strtolower($module)) { $module = $sub; } } if(empty($module)) { die(); } $module_fields = main\mgLibs\custom\CoreManager::getConfiguration($module); $new_server_config = array(); foreach($module_fields as $name => $arr) { if($name == 'default_ip'){ $new_server_config['default_ip'] = $server_config['defaultIP']; }else if(isset($arr['type']) && $arr['type'] == 'password' && isset($server_config[$name])) { $new_server_config[$name] = decrypt($server_config[$name]); } else if(isset($arr['type']) && $arr['type'] == 'yesno') { $new_server_config[$name] = isset($server_config[$name]) && $server_config[$name]==1?'on':''; } else{ $new_server_config[$name] = $server_config[$name]; } } $server_setting = main\models\custom\server\setting\Repository::factory() ->byKey(main\models\custom\server\setting\ServerSettingEnum::MODULE_CONFIGURATION) ->byValue(serialize($new_server_config)) ->one(); if($server_setting === false) { $server_setting = main\models\custom\server\Repository::factory()->byModule($module)->one(); if($server_setting === false) { dns_echo('Cannot find rDNS server', true); die(); } } $server = $server_setting->getServer(); } else { $data = main\mgLibs\MySQL\query::select(array('*'), 'dns_manager_servers',array('userdns' => 1))->fetch(); if($data === false) { dns_echo('There is no server with reverse DNS enabled'); die(); } $server_config = unserialize($data['config']); $module = key($server_config); $nameservers = unserialize(main\mgLibs\MySQL\query::select(array('nameservers'), 'dns_manager_server_ns', array('serverid' => $data['id']))->fetchColumn())?:array(); $default_records = main\mgLibs\MySQL\query::select(array('*'), 'mg_dns_default', array('serverid' => $data['id']))->fetchAll(); if(isset($servers_map[$module])) { //ctrl + c -> ctrl + v bo rilis $module = $servers_map[$module]; } foreach($avaiable_submodules as $sub) { if(strtolower($sub) == strtolower($module)) { $module = $sub; } } if(empty($module)) { die(); } $module_fields = main\mgLibs\custom\CoreManager::getConfiguration($module); $new_server_config = array(); foreach($module_fields as $name => $arr) { if($name == 'default_ip'){ $new_server_config['default_ip'] = $server_config['defaultIP']; }else if(isset($arr['type']) && $arr['type'] == 'password' && isset($server_config[$name])) { $new_server_config[$name] = decrypt($server_config[$name]); } else if(isset($arr['type']) && $arr['type'] == 'yesno') { $new_server_config[$name] = isset($server_config[$name]) && $server_config[$name]==1?'on':''; } else{ $new_server_config[$name] = $server_config[$name]; } } $server_setting = main\models\custom\server\setting\Repository::factory() ->byKey(main\models\custom\server\setting\ServerSettingEnum::MODULE_CONFIGURATION) ->byValue(serialize($new_server_config)) ->one(); if($server_setting === false) { $server_setting = main\models\custom\server\Repository::factory()->byModule($module)->one(); if($server_setting === false) { dns_echo('Cannot find rDNS server', true); die(); } } $server = $server_setting->getServer(); } //=========================================================================================================== //===========================================MIGRATE RDNS==================================================== //=========================================================================================================== $clients = main\mgLibs\MySQL\query::select(array('id'), 'tblclients'); while($client = $clients->fetch()) { $_SESSION['uid'] = $client['id']; $records = dns_controller_listPtrRecords(true); foreach($records as $record) { if(strpos($record['zone'], 'ip6.arpa') !== false) { } else { //ipv4 $domain = new main\mgLibs\custom\helpers\DomainHelper($record['value']); try { $zone = main\models\custom\zone\Repository::factory()->byServerID($server->id)->byName($domain->getDomainWithTLD())->one(); if($zone === false) { try { $zone = new main\models\custom\zone\Zone(); $zone->clientid = $client['id']; $zone->ip = $record['ip']; $zone->name = $domain->getDomainWithTLD(); $zone->relid = 0; $zone->type = 0; $zone->status = 0; $zone->serverid = $server->id; $zone->save(); } catch(Exception $exc) { dns_echo("ERROR: Something went wrong during creation of {$domain->getDomainWithTLD()} zone. Message: {$exc->getMessage()}"); continue; } $module = $server->getModule(); $module->setDomain($domain->getDomainWithTLD()); try { if(!$module->zoneExists()) { $module->activateZone(); $zone->setThatExist(); } } catch(Exception $exc) { dns_echo('WARNING: Cannot activate zone ' . $domain->getDomainWithTLD() . ". Reason: {$exc->getMessage()}"); } } else { if($zone->clientid != $client['id']) { dns_echo("ERROR: Client with id {$client['id']} do not own zone " . $domain->getDomainWithTLD() . ". Currentlly it is owned by client with id {$zone->clientid}"); continue; } } $reverse = new main\models\custom\reverse\Reverse(); $reverse->serverid = $server->id; $reverse->from = $domain->getDomainWithTLD(); $reverse->ip = $record['ip']; $reverse->name = $record['zone']; $reverse->sub = $domain->getSubdomain(); $reverse->ttl = '14400'; $reverse->clientid = $zone->clientid; $reverse->save(); } catch(Exception $e) { dns_echo("ERROR: Zone {$domain->getDomainWithTLD()} was created and added to user account but there was an error during migrating ptr records. Error Message: {$e->getMessage()} "); continue; } } } } dns_echo('DONE');