| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- <?php
- use \MGModule\DNSManager2 as main;
- define('DS', DIRECTORY_SEPARATOR);
- define('WHMCS_MAIN_DIR', substr(dirname(__FILE__),0, strpos(dirname(__FILE__),'modules'.DS.'addons')));
- define('ADDON_DIR', substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), DS.'cron')));
- define('IS_CLI', php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 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?'<span style="color: red"><b>Migration failed: <b>':'<span>') . $string . '</span></br>';
- }
- }
- }
- $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('<form method="get"><input type="hidden" name="proceed" value="1" /><button type="submit">If you want to proceed click this button</button></form>');
- 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');
|