More fixes for RST

This commit is contained in:
Pinga 2025-04-30 10:44:37 +03:00
parent 9fffa850e5
commit b150d95b36
2 changed files with 79 additions and 29 deletions

View file

@ -58,6 +58,7 @@ try {
$endOfPreviousDay = date('Y-m-d 23:59:59', strtotime('-1 day')); $endOfPreviousDay = date('Y-m-d 23:59:59', strtotime('-1 day'));
$domainCount = fetchDomainCount($dbh, $tld['id']); $domainCount = fetchDomainCount($dbh, $tld['id']);
$NNDNCount = fetchNNDNCount($dbh);
$hostCount = fetchCount($dbh, 'host'); $hostCount = fetchCount($dbh, 'host');
$contactCount = fetchCount($dbh, 'contact'); $contactCount = fetchCount($dbh, 'contact');
$registrarCount = fetchCount($dbh, 'registrar'); $registrarCount = fetchCount($dbh, 'registrar');
@ -66,7 +67,7 @@ try {
if (strpos($tldname, '.') !== false) { if (strpos($tldname, '.') !== false) {
continue; continue;
} }
// Starting the escrow deposit for this TLD // Starting the escrow deposit for this TLD
// Initializing XMLWriter // Initializing XMLWriter
$xml = new XMLWriter(); $xml = new XMLWriter();
@ -114,12 +115,15 @@ try {
'urn:ietf:params:xml:ns:rdeHost-1.0', 'urn:ietf:params:xml:ns:rdeHost-1.0',
'urn:ietf:params:xml:ns:rdeDomain-1.0', 'urn:ietf:params:xml:ns:rdeDomain-1.0',
'urn:ietf:params:xml:ns:rdeRegistrar-1.0', 'urn:ietf:params:xml:ns:rdeRegistrar-1.0',
'urn:ietf:params:xml:ns:rdeIDN-1.0',
'urn:ietf:params:xml:ns:rdeNNDN-1.0', 'urn:ietf:params:xml:ns:rdeNNDN-1.0',
'urn:ietf:params:xml:ns:rdeEppParams-1.0', 'urn:ietf:params:xml:ns:rdeEppParams-1.0',
'urn:ietf:params:xml:ns:rdePolicy-1.0' 'urn:ietf:params:xml:ns:rdePolicy-1.0'
]; ];
if (!isIDN($dbh, $tld['id'])) {
$objURIs[] = 'urn:ietf:params:xml:ns:rdeIDN-1.0';
}
// Write each rde:objURI element // Write each rde:objURI element
foreach ($objURIs as $objURI) { foreach ($objURIs as $objURI) {
$xml->startElementNS('rde', 'objURI', null); $xml->startElementNS('rde', 'objURI', null);
@ -154,15 +158,17 @@ try {
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeRegistrar-1.0'); $xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeRegistrar-1.0');
$xml->text($registrarCount); $xml->text($registrarCount);
$xml->endElement(); $xml->endElement();
$xml->startElement('rdeHeader:count'); if (!isIDN($dbh, $tld['id'])) {
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0'); $xml->startElement('rdeHeader:count');
$xml->text('1'); $xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$xml->endElement(); $xml->text('1');
$xml->endElement();
}
$xml->startElement('rdeHeader:count'); $xml->startElement('rdeHeader:count');
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0'); $xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0');
$xml->text('0'); $xml->text($NNDNCount);
$xml->endElement(); $xml->endElement();
$xml->startElement('rdeHeader:count'); $xml->startElement('rdeHeader:count');
@ -189,7 +195,9 @@ try {
$xml->writeElement('rdeDomain:name', $domain['name']); $xml->writeElement('rdeDomain:name', $domain['name']);
$xml->writeElement('rdeDomain:roid', 'D' . $domain['id'] . '-' . $c['roid']); $xml->writeElement('rdeDomain:roid', 'D' . $domain['id'] . '-' . $c['roid']);
$xml->writeElement('rdeDomain:uName', $domain['name']); $xml->writeElement('rdeDomain:uName', $domain['name']);
$xml->writeElement('rdeDomain:idnTableId', 'Latn'); if (!isIDN($dbh, $tld['id'])) {
$xml->writeElement('rdeDomain:idnTableId', 'Latn');
}
// Fetch domain status // Fetch domain status
$stmt = $dbh->prepare("SELECT * FROM domain_status WHERE domain_id = :domain_id;"); $stmt = $dbh->prepare("SELECT * FROM domain_status WHERE domain_id = :domain_id;");
@ -377,13 +385,15 @@ try {
$xml->endElement(); // Closing rdeRegistrar:registrar $xml->endElement(); // Closing rdeRegistrar:registrar
} }
// Writing the idnTableRef section if (!isIDN($dbh, $tld['id'])) {
$xml->startElement('rdeIDN:idnTableRef'); // Writing the idnTableRef section
$xml->writeAttribute('id', 'Latn'); $xml->startElement('rdeIDN:idnTableRef');
$xml->writeElement('rdeIDN:url', 'https://namingo.org'); $xml->writeAttribute('id', 'Latn');
$xml->writeElement('rdeIDN:urlPolicy', 'https://namingo.org'); $xml->writeElement('rdeIDN:url', 'https://namingo.org');
$xml->endElement(); // Closing rdeIDN:idnTableRef $xml->writeElement('rdeIDN:urlPolicy', 'https://namingo.org');
$xml->endElement(); // Closing rdeIDN:idnTableRef
}
// Start of rdeEppParams:eppParams // Start of rdeEppParams:eppParams
$xml->startElementNS('rdeEppParams', 'eppParams', null); $xml->startElementNS('rdeEppParams', 'eppParams', null);
@ -616,14 +626,16 @@ try {
$reportXML->text($registrarCount); $reportXML->text($registrarCount);
$reportXML->endElement(); $reportXML->endElement();
$reportXML->startElement('rdeHeader:count'); if (!isIDN($dbh, $tld['id'])) {
$reportXML->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0'); $reportXML->startElement('rdeHeader:count');
$reportXML->text('0'); $reportXML->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$reportXML->endElement(); $reportXML->text('0');
$reportXML->endElement();
}
$reportXML->startElement('rdeHeader:count'); $reportXML->startElement('rdeHeader:count');
$reportXML->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0'); $reportXML->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0');
$reportXML->text('0'); $reportXML->text($NNDNCount);
$reportXML->endElement(); $reportXML->endElement();
$reportXML->startElement('rdeHeader:count'); $reportXML->startElement('rdeHeader:count');
@ -690,12 +702,15 @@ try {
'urn:ietf:params:xml:ns:rdeHost-1.0', 'urn:ietf:params:xml:ns:rdeHost-1.0',
'urn:ietf:params:xml:ns:rdeDomain-1.0', 'urn:ietf:params:xml:ns:rdeDomain-1.0',
'urn:ietf:params:xml:ns:rdeRegistrar-1.0', 'urn:ietf:params:xml:ns:rdeRegistrar-1.0',
'urn:ietf:params:xml:ns:rdeIDN-1.0',
'urn:ietf:params:xml:ns:rdeNNDN-1.0', 'urn:ietf:params:xml:ns:rdeNNDN-1.0',
'urn:ietf:params:xml:ns:rdeEppParams-1.0', 'urn:ietf:params:xml:ns:rdeEppParams-1.0',
'urn:ietf:params:xml:ns:rdePolicy-1.0' 'urn:ietf:params:xml:ns:rdePolicy-1.0'
]; ];
if (!isIDN($dbh, $tld['id'])) {
$objURIs[] = 'urn:ietf:params:xml:ns:rdeIDN-1.0';
}
// Write each rde:objURI element // Write each rde:objURI element
foreach ($objURIs as $objURI) { foreach ($objURIs as $objURI) {
$xml->startElementNS('rde', 'objURI', null); $xml->startElementNS('rde', 'objURI', null);
@ -730,15 +745,17 @@ try {
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeRegistrar-1.0'); $xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeRegistrar-1.0');
$xml->text($registrarCount); $xml->text($registrarCount);
$xml->endElement(); $xml->endElement();
$xml->startElement('rdeHeader:count'); if (!isIDN($dbh, $tld['id'])) {
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0'); $xml->startElement('rdeHeader:count');
$xml->text('1'); $xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$xml->endElement(); $xml->text('1');
$xml->endElement();
}
$xml->startElement('rdeHeader:count'); $xml->startElement('rdeHeader:count');
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0'); $xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0');
$xml->text('0'); $xml->text($NNDNCount);
$xml->endElement(); $xml->endElement();
$xml->startElement('rdeHeader:count'); $xml->startElement('rdeHeader:count');
@ -765,7 +782,9 @@ try {
$xml->writeElement('rdeDomain:name', $domain['name']); $xml->writeElement('rdeDomain:name', $domain['name']);
$xml->writeElement('rdeDomain:roid', 'D' . $domain['id'] . '-' . $c['roid']); $xml->writeElement('rdeDomain:roid', 'D' . $domain['id'] . '-' . $c['roid']);
$xml->writeElement('rdeDomain:uName', $domain['name']); $xml->writeElement('rdeDomain:uName', $domain['name']);
$xml->writeElement('rdeDomain:idnTableId', 'Latn'); if (!isIDN($dbh, $tld['id'])) {
$xml->writeElement('rdeDomain:idnTableId', 'Latn');
}
// Fetch domain status // Fetch domain status
$stmt = $dbh->prepare("SELECT * FROM domain_status WHERE domain_id = :domain_id;"); $stmt = $dbh->prepare("SELECT * FROM domain_status WHERE domain_id = :domain_id;");

View file

@ -154,6 +154,37 @@ function fetchDomainCount($pdo, $tld_id) {
return $result['count']; return $result['count'];
} }
function fetchNNDNCount($pdo) {
// Prepare the SQL query
$query = "SELECT COUNT(name) AS count FROM reserved_domain_names";
$stmt = $pdo->prepare($query);
$stmt->execute();
// Fetch and return the count
$result = $stmt->fetch();
return $result['count'];
}
function isIDN($pdo, $tld_id) {
// Fetch the idn_table value for the given TLD ID
$query = "SELECT idn_table FROM domain_tld WHERE id = :tldid";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':tldid', $tld_id, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch();
if (!$result || !isset($result['idn_table'])) {
return false; // default to false if not found
}
$idnTable = $result['idn_table'];
// Check if the value matches the pattern for non-IDN ASCII-only domain labels
$asciiPattern = '/^(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-)(\.(?!-)(?!.*--)[A-Z0-9-]{1,63}(?<!-))*$/i';
return !preg_match($asciiPattern, $idnTable); // true if it's IDN
}
// Function to check domain against Spamhaus SBL // Function to check domain against Spamhaus SBL
function checkSpamhaus($domain) { function checkSpamhaus($domain) {
// Append '.sbl.spamhaus.org' to the domain // Append '.sbl.spamhaus.org' to the domain