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) {
//* 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 = addot($soa['name']);
$ns = addot($parts[0]);
$mbox = addot($parts[1]);
$serial = $parts[2];
$refresh = 7200;
$retry = 540;
$expire = 604800;
$minimum = 86400;
$ttl = $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'] = addot($rec['name']);
$rr['type'] = $rec['type'];
$rr['aux'] = $rec['prio'];
$rr['ttl'] = $rec['ttl'];
if($rec['type'] == 'NS' || $rec['type'] == 'MX' || $rec['type'] == 'CNAME') {
$rr['data'] = addot($rec['content']);
} else {
$rr['data'] = $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);
$app->tpl_defaults();
$app->tpl->pparse();
?>