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'));
$domainCount = fetchDomainCount($dbh, $tld['id']);
$NNDNCount = fetchNNDNCount($dbh);
$hostCount = fetchCount($dbh, 'host');
$contactCount = fetchCount($dbh, 'contact');
$registrarCount = fetchCount($dbh, 'registrar');
@ -114,12 +115,15 @@ try {
'urn:ietf:params:xml:ns:rdeHost-1.0',
'urn:ietf:params:xml:ns:rdeDomain-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:rdeEppParams-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
foreach ($objURIs as $objURI) {
$xml->startElementNS('rde', 'objURI', null);
@ -155,14 +159,16 @@ try {
$xml->text($registrarCount);
$xml->endElement();
$xml->startElement('rdeHeader:count');
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$xml->text('1');
$xml->endElement();
if (!isIDN($dbh, $tld['id'])) {
$xml->startElement('rdeHeader:count');
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$xml->text('1');
$xml->endElement();
}
$xml->startElement('rdeHeader:count');
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0');
$xml->text('0');
$xml->text($NNDNCount);
$xml->endElement();
$xml->startElement('rdeHeader:count');
@ -189,7 +195,9 @@ try {
$xml->writeElement('rdeDomain:name', $domain['name']);
$xml->writeElement('rdeDomain:roid', 'D' . $domain['id'] . '-' . $c['roid']);
$xml->writeElement('rdeDomain:uName', $domain['name']);
$xml->writeElement('rdeDomain:idnTableId', 'Latn');
if (!isIDN($dbh, $tld['id'])) {
$xml->writeElement('rdeDomain:idnTableId', 'Latn');
}
// Fetch domain status
$stmt = $dbh->prepare("SELECT * FROM domain_status WHERE domain_id = :domain_id;");
@ -377,12 +385,14 @@ try {
$xml->endElement(); // Closing rdeRegistrar:registrar
}
// Writing the idnTableRef section
$xml->startElement('rdeIDN:idnTableRef');
$xml->writeAttribute('id', 'Latn');
$xml->writeElement('rdeIDN:url', 'https://namingo.org');
$xml->writeElement('rdeIDN:urlPolicy', 'https://namingo.org');
$xml->endElement(); // Closing rdeIDN:idnTableRef
if (!isIDN($dbh, $tld['id'])) {
// Writing the idnTableRef section
$xml->startElement('rdeIDN:idnTableRef');
$xml->writeAttribute('id', 'Latn');
$xml->writeElement('rdeIDN:url', 'https://namingo.org');
$xml->writeElement('rdeIDN:urlPolicy', 'https://namingo.org');
$xml->endElement(); // Closing rdeIDN:idnTableRef
}
// Start of rdeEppParams:eppParams
$xml->startElementNS('rdeEppParams', 'eppParams', null);
@ -616,14 +626,16 @@ try {
$reportXML->text($registrarCount);
$reportXML->endElement();
$reportXML->startElement('rdeHeader:count');
$reportXML->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$reportXML->text('0');
$reportXML->endElement();
if (!isIDN($dbh, $tld['id'])) {
$reportXML->startElement('rdeHeader:count');
$reportXML->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$reportXML->text('0');
$reportXML->endElement();
}
$reportXML->startElement('rdeHeader:count');
$reportXML->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0');
$reportXML->text('0');
$reportXML->text($NNDNCount);
$reportXML->endElement();
$reportXML->startElement('rdeHeader:count');
@ -690,12 +702,15 @@ try {
'urn:ietf:params:xml:ns:rdeHost-1.0',
'urn:ietf:params:xml:ns:rdeDomain-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:rdeEppParams-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
foreach ($objURIs as $objURI) {
$xml->startElementNS('rde', 'objURI', null);
@ -731,14 +746,16 @@ try {
$xml->text($registrarCount);
$xml->endElement();
$xml->startElement('rdeHeader:count');
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$xml->text('1');
$xml->endElement();
if (!isIDN($dbh, $tld['id'])) {
$xml->startElement('rdeHeader:count');
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeIDN-1.0');
$xml->text('1');
$xml->endElement();
}
$xml->startElement('rdeHeader:count');
$xml->writeAttribute('uri', 'urn:ietf:params:xml:ns:rdeNNDN-1.0');
$xml->text('0');
$xml->text($NNDNCount);
$xml->endElement();
$xml->startElement('rdeHeader:count');
@ -765,7 +782,9 @@ try {
$xml->writeElement('rdeDomain:name', $domain['name']);
$xml->writeElement('rdeDomain:roid', 'D' . $domain['id'] . '-' . $c['roid']);
$xml->writeElement('rdeDomain:uName', $domain['name']);
$xml->writeElement('rdeDomain:idnTableId', 'Latn');
if (!isIDN($dbh, $tld['id'])) {
$xml->writeElement('rdeDomain:idnTableId', 'Latn');
}
// Fetch domain status
$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'];
}
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 checkSpamhaus($domain) {
// Append '.sbl.spamhaus.org' to the domain