auth->check_module_permissions('admin'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); $app->uses('tpl,validate_dns'); $app->tpl->newTemplate('form.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/dns_import_tupa.htm'); $msg = ''; $error = ''; // Resyncing dns zones if(isset($_POST['start']) && $_POST['start'] == 1) { //* CSRF Check $app->auth->csrf_token_check(); //* 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']); //* Establish connection to external database $msg .= 'Connecting to external database...
'; //* 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']; //* create new db object $exdb = new db('imp'); $server_id = 1; $sys_userid = 1; $sys_groupid = 1; function addot($text) { return trim($text) . '.'; } //* Connect to DB if($exdb !== false) { $domains = $exdb->queryAllRecords("SELECT * FROM domains WHERE type = 'MASTER'"); if(is_array($domains)) { foreach($domains as $domain) { $soa = $exdb->queryOneRecord("SELECT * FROM records WHERE type = 'SOA' AND domain_id = ".$domain['id']); if(is_array($soa)) { $parts = explode(' ', $soa['content']); $origin = $app->db->quote(addot($soa['name'])); $ns = $app->db->quote(addot($parts[0])); $mbox = $app->db->quote(addot($parts[1])); $serial = $app->db->quote($parts[2]); $refresh = 7200; $retry = 540; $expire = 604800; $minimum = 86400; $ttl = $app->db->quote($soa['ttl']); $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `origin`, `ns`, `mbox`, `serial`, `refresh`, `retry`, `expire`, `minimum`, `ttl`, `active`, `xfer`) VALUES ('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$origin', '$ns', '$mbox', '$serial', '$refresh', '$retry', '$expire', '$minimum', '$ttl', 'Y', '')"; $dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id'); unset($parts); $msg .= 'Import Zone: '.$soa['name'].'
'; //* Process the other records $records = $exdb->queryAllRecords("SELECT * FROM records WHERE type != 'SOA' AND domain_id = ".$domain['id']); if(is_array($records)) { foreach($records as $rec) { $rr = array(); $rr['name'] = $app->db->quote(addot($rec['name'])); $rr['type'] = $app->db->quote($rec['type']); $rr['aux'] = $app->db->quote($rec['prio']); $rr['ttl'] = $app->db->quote($rec['ttl']); if($rec['type'] == 'NS' || $rec['type'] == 'MX' || $rec['type'] == 'CNAME') { $rr['data'] = $app->db->quote(addot($rec['content'])); } else { $rr['data'] = $app->db->quote($rec['content']); } $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `zone`, `name`, `type`, `data`, `aux`, `ttl`, `active`) VALUES ('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$dns_soa_id', '$rr[name]', '$rr[type]', '$rr[data]', '$rr[aux]', '$rr[ttl]', 'Y')"; $dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id'); //$msg .= $insert_data.'
'; } } } } } } else { $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); //* SET csrf token $csrf_token = $app->auth->csrf_token_get('dns_import'); $app->tpl->setVar('_csrf_id',$csrf_token['csrf_id']); $app->tpl->setVar('_csrf_key',$csrf_token['csrf_key']); $app->tpl_defaults(); $app->tpl->pparse(); ?>