mirror of
https://github.com/getnamingo/registry.git
synced 2025-07-22 02:25:59 +02:00
Finalised the zone generator scripts
Added optimized zone generator for larger zones.
This commit is contained in:
parent
55b7f3260a
commit
8cae312a6a
2 changed files with 186 additions and 14 deletions
|
@ -14,8 +14,8 @@ require_once 'helpers.php';
|
|||
$dsn = "{$c['db_type']}:host={$c['db_host']};dbname={$c['db_database']};port={$c['db_port']}";
|
||||
|
||||
try {
|
||||
$dbh = new PDO($dsn, $c['db_username'], $c['db_password']);
|
||||
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
$db = new PDO($dsn, $c['db_username'], $c['db_password']);
|
||||
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
} catch (PDOException $e) {
|
||||
die("Connection failed: " . $e->getMessage());
|
||||
}
|
||||
|
@ -24,13 +24,13 @@ $timestamp = time();
|
|||
$ns1 = 'ns1.namingo.org';
|
||||
$ns2 = 'ns2.namingo.org';
|
||||
|
||||
$sth = $dbh->prepare('SELECT id, tld FROM domain_tld');
|
||||
$sth = $db->prepare('SELECT id, tld FROM domain_tld');
|
||||
$sth->execute();
|
||||
|
||||
while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
||||
$tldRE = preg_quote($tld, '/');
|
||||
$cleanedTld = ltrim(strtolower($tld), '.');
|
||||
$zone = new Zone($cleanedTld . '.');
|
||||
$zone = new Zone('.');
|
||||
$zone->setDefaultTtl(3600);
|
||||
|
||||
$soa = new ResourceRecord;
|
||||
|
@ -59,7 +59,7 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
$nsRecord2->setRdata(Factory::Ns($ns2 . '.'));
|
||||
$zone->addResourceRecord($nsRecord2);
|
||||
|
||||
$sth2 = $dbh->prepare('SELECT DISTINCT domain.id, domain.name, domain.rgpstatus, host.name
|
||||
$sth2 = $db->prepare('SELECT DISTINCT domain.id, domain.name, domain.rgpstatus, host.name
|
||||
FROM domain
|
||||
INNER JOIN domain_host_map ON domain.id = domain_host_map.domain_id
|
||||
INNER JOIN host ON domain_host_map.host_id = host.id
|
||||
|
@ -77,7 +77,7 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
$sth2->execute([':id' => $id]);
|
||||
|
||||
while (list($did, $dname, $rgp, $hname) = $sth2->fetch(PDO::FETCH_NUM)) {
|
||||
$sthStatus = $dbh->prepare("SELECT id FROM domain_status WHERE domain_id = :did AND status LIKE '%Hold' LIMIT 1");
|
||||
$sthStatus = $db->prepare("SELECT id FROM domain_status WHERE domain_id = :did AND status LIKE '%Hold' LIMIT 1");
|
||||
$sthStatus->bindParam(':did', $did, PDO::PARAM_INT);
|
||||
$sthStatus->execute();
|
||||
$status_id = $sthStatus->fetchColumn();
|
||||
|
@ -88,13 +88,13 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
$dname = ($dname == "$tld.") ? '@' : $dname;
|
||||
|
||||
$nsRecord = new ResourceRecord;
|
||||
$nsRecord->setName($dname);
|
||||
$nsRecord->setName($dname . '.');
|
||||
$nsRecord->setClass(Classes::INTERNET);
|
||||
$nsRecord->setRdata(Factory::Ns($hname . '.'));
|
||||
$zone->addResourceRecord($nsRecord);
|
||||
}
|
||||
|
||||
$sth2 = $dbh->prepare("SELECT host.name, host.domain_id, host_addr.ip, host_addr.addr
|
||||
$sth2 = $db->prepare("SELECT host.name, host.domain_id, host_addr.ip, host_addr.addr
|
||||
FROM domain
|
||||
INNER JOIN host ON domain.id = host.domain_id
|
||||
INNER JOIN host_addr ON host.id = host_addr.host_id
|
||||
|
@ -104,7 +104,7 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
$sth2->execute([':id' => $id]);
|
||||
|
||||
while (list($hname, $did, $type, $addr) = $sth2->fetch(PDO::FETCH_NUM)) {
|
||||
$sthStatus = $dbh->prepare("SELECT id FROM domain_status WHERE domain_id = :did AND status LIKE '%Hold' LIMIT 1");
|
||||
$sthStatus = $db->prepare("SELECT id FROM domain_status WHERE domain_id = :did AND status LIKE '%Hold' LIMIT 1");
|
||||
$sthStatus->bindParam(':did', $did, PDO::PARAM_INT);
|
||||
$sthStatus->execute();
|
||||
$status_id = $sthStatus->fetchColumn();
|
||||
|
@ -115,7 +115,7 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
$hname = ($hname == "$tld.") ? '@' : $hname;
|
||||
|
||||
$record = new ResourceRecord;
|
||||
$record->setName($hname);
|
||||
$record->setName($hname . '.');
|
||||
$record->setClass(Classes::INTERNET);
|
||||
|
||||
if ($type == 'v4') {
|
||||
|
@ -128,7 +128,7 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
}
|
||||
|
||||
// Fetch DS records for domains from the secdns table
|
||||
$sthDS = $dbh->prepare("SELECT domain_id, keytag, alg, digesttype, digest
|
||||
$sthDS = $db->prepare("SELECT domain_id, keytag, alg, digesttype, digest
|
||||
FROM secdns
|
||||
WHERE domain_id IN (
|
||||
SELECT id FROM domain
|
||||
|
@ -138,7 +138,7 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
$sthDS->execute([':id' => $id]);
|
||||
|
||||
while (list($did, $keytag, $alg, $digesttype, $digest) = $sthDS->fetch(PDO::FETCH_NUM)) {
|
||||
$sthStatus = $dbh->prepare("SELECT id FROM domain_status WHERE domain_id = :did AND status LIKE '%Hold' LIMIT 1");
|
||||
$sthStatus = $db->prepare("SELECT id FROM domain_status WHERE domain_id = :did AND status LIKE '%Hold' LIMIT 1");
|
||||
$sthStatus->bindParam(':did', $did, PDO::PARAM_INT);
|
||||
$sthStatus->execute();
|
||||
$status_id = $sthStatus->fetchColumn();
|
||||
|
@ -146,7 +146,7 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
if ($status_id) continue;
|
||||
|
||||
// Fetch domain name based on domain_id for the DS record
|
||||
$sthDomainName = $dbh->prepare("SELECT name FROM domain WHERE id = :did LIMIT 1");
|
||||
$sthDomainName = $db->prepare("SELECT name FROM domain WHERE id = :did LIMIT 1");
|
||||
$sthDomainName->bindParam(':did', $did, PDO::PARAM_INT);
|
||||
$sthDomainName->execute();
|
||||
$dname = $sthDomainName->fetchColumn();
|
||||
|
@ -155,7 +155,7 @@ while (list($id, $tld) = $sth->fetch(PDO::FETCH_NUM)) {
|
|||
$dname = ($dname == "$tld.") ? '@' : $dname;
|
||||
|
||||
$dsRecord = new ResourceRecord;
|
||||
$dsRecord->setName($dname);
|
||||
$dsRecord->setName($dname . '.');
|
||||
$dsRecord->setClass(Classes::INTERNET);
|
||||
$dsRecord->setRdata(Factory::Ds($keytag, $alg, $digest, $digesttype));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue