Added some more error checking to the EPP server

This commit is contained in:
Pinga 2024-07-27 18:39:32 +03:00
parent d016220ab8
commit 7273e9a070
2 changed files with 35 additions and 2 deletions

View file

@ -4,6 +4,12 @@ function processContactCheck($conn, $db, $xml, $trans) {
$contactIDs = $xml->command->check->children('urn:ietf:params:xml:ns:contact-1.0')->check->{'id'}; $contactIDs = $xml->command->check->children('urn:ietf:params:xml:ns:contact-1.0')->check->{'id'};
$clTRID = (string) $xml->command->clTRID; $clTRID = (string) $xml->command->clTRID;
// Check if contactIDs is null or empty
if ($contactIDs === null || count($contactIDs) == 0) {
sendEppError($conn, $db, 2003, 'contact id', $clTRID, $trans);
return;
}
$results = []; $results = [];
foreach ($contactIDs as $contactID) { foreach ($contactIDs as $contactID) {
$contactID = (string)$contactID; $contactID = (string)$contactID;
@ -59,6 +65,12 @@ function processHostCheck($conn, $db, $xml, $trans) {
$hosts = $xml->command->check->children('urn:ietf:params:xml:ns:host-1.0')->check->{'name'}; $hosts = $xml->command->check->children('urn:ietf:params:xml:ns:host-1.0')->check->{'name'};
$clTRID = (string) $xml->command->clTRID; $clTRID = (string) $xml->command->clTRID;
// Check if hosts is null or empty
if ($hosts === null || count($hosts) == 0) {
sendEppError($conn, $db, 2003, 'host name', $clTRID, $trans);
return;
}
$results = []; $results = [];
foreach ($hosts as $host) { foreach ($hosts as $host) {
$host = (string)$host; $host = (string)$host;
@ -109,6 +121,12 @@ function processDomainCheck($conn, $db, $xml, $trans) {
$domains = $xml->command->check->children('urn:ietf:params:xml:ns:domain-1.0')->check->name; $domains = $xml->command->check->children('urn:ietf:params:xml:ns:domain-1.0')->check->name;
$clTRID = (string) $xml->command->clTRID; $clTRID = (string) $xml->command->clTRID;
// Check if domains is null or empty
if ($domains === null || count($domains) == 0) {
sendEppError($conn, $db, 2003, 'domain name', $clTRID, $trans);
return;
}
$extensionNode = $xml->command->extension; $extensionNode = $xml->command->extension;
if (isset($extensionNode)) { if (isset($extensionNode)) {
$launch_check = $xml->xpath('//launch:check')[0] ?? null; $launch_check = $xml->xpath('//launch:check')[0] ?? null;

View file

@ -4,6 +4,11 @@ function processContactInfo($conn, $db, $xml, $trans) {
$contactID = (string) $xml->command->info->children('urn:ietf:params:xml:ns:contact-1.0')->info->{'id'}; $contactID = (string) $xml->command->info->children('urn:ietf:params:xml:ns:contact-1.0')->info->{'id'};
$clTRID = (string) $xml->command->clTRID; $clTRID = (string) $xml->command->clTRID;
if (!$contactID) {
sendEppError($conn, $db, 2003, 'Missing contact:id', $clTRID, $trans);
return;
}
// Validation for contact ID // Validation for contact ID
$invalid_identifier = validate_identifier($contactID); $invalid_identifier = validate_identifier($contactID);
if ($invalid_identifier) { if ($invalid_identifier) {
@ -94,6 +99,11 @@ function processHostInfo($conn, $db, $xml, $trans) {
$hostName = $xml->command->info->children('urn:ietf:params:xml:ns:host-1.0')->info->name; $hostName = $xml->command->info->children('urn:ietf:params:xml:ns:host-1.0')->info->name;
$clTRID = (string) $xml->command->clTRID; $clTRID = (string) $xml->command->clTRID;
if (!$hostName) {
sendEppError($conn, $db, 2003, 'Specify your host name', $clTRID, $trans);
return;
}
// Validation for host name // Validation for host name
if (!preg_match('/^([A-Z0-9]([A-Z0-9-]{0,61}[A-Z0-9]){0,1}\\.){1,125}[A-Z0-9]([A-Z0-9-]{0,61}[A-Z0-9])$/i', $hostName) && strlen($hostName) > 254) { if (!preg_match('/^([A-Z0-9]([A-Z0-9-]{0,61}[A-Z0-9]){0,1}\\.){1,125}[A-Z0-9]([A-Z0-9-]{0,61}[A-Z0-9])$/i', $hostName) && strlen($hostName) > 254) {
sendEppError($conn, $db, 2005, 'Invalid host name', $clTRID, $trans); sendEppError($conn, $db, 2005, 'Invalid host name', $clTRID, $trans);
@ -172,6 +182,11 @@ function processDomainInfo($conn, $db, $xml, $trans) {
$domainName = $xml->command->info->children('urn:ietf:params:xml:ns:domain-1.0')->info->name; $domainName = $xml->command->info->children('urn:ietf:params:xml:ns:domain-1.0')->info->name;
$clTRID = (string) $xml->command->clTRID; $clTRID = (string) $xml->command->clTRID;
if (!$domainName) {
sendEppError($conn, $db, 2003, 'Please specify a domain name', $clTRID, $trans);
return;
}
$extensionNode = $xml->command->extension; $extensionNode = $xml->command->extension;
if (isset($extensionNode)) { if (isset($extensionNode)) {
$launch_info = $xml->xpath('//launch:info')[0] ?? null; $launch_info = $xml->xpath('//launch:info')[0] ?? null;