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 = array(
"sys_userid" => $sys_userid,
"sys_groupid" => $sys_groupid,
"sys_perm_user" => 'riud',
"sys_perm_group" => 'riud',
"sys_perm_other" => '',
"server_id" => $server_id,
"origin" => $origin,
"ns" => $ns,
"mbox" => $mbox,
"serial" => $serial,
"refresh" => $refresh,
"retry" => $retry,
"expire" => $expire,
"minimum" => $minimum,
"ttl" => $ttl,
"active" => 'Y',
"xfer" => ''
);
$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 = array(
"sys_userid" => $sys_userid,
"sys_groupid" => $sys_groupid,
"sys_perm_user" => 'riud',
"sys_perm_group" => 'riud',
"sys_perm_other" => '',
"server_id" => $server_id,
"zone" => $dns_soa_id,
"name" => $rr['name'],
"type" => $rr['type'],
"data" => $rr['data'],
"aux" => $rr['aux'],
"ttl" => $rr['ttl'],
"active" => '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();
?>