mirror of
https://github.com/maelgangloff/domain-watchdog.git
synced 2025-12-29 16:15:04 +00:00
fix: some RDAP servers return the same entity twice
This commit is contained in:
@@ -323,6 +323,7 @@ readonly class RDAPService
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws \DateMalformedStringException
|
* @throws \DateMalformedStringException
|
||||||
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private function updateDomainEntities(Domain $domain, array $rdapData): void
|
private function updateDomainEntities(Domain $domain, array $rdapData): void
|
||||||
{
|
{
|
||||||
@@ -351,6 +352,7 @@ readonly class RDAPService
|
|||||||
->setDeleted(false));
|
->setDeleted(false));
|
||||||
|
|
||||||
$this->em->persist($domainEntity);
|
$this->em->persist($domainEntity);
|
||||||
|
$this->em->flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -395,6 +397,9 @@ readonly class RDAPService
|
|||||||
return $nameserver;
|
return $nameserver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws \DateMalformedStringException
|
||||||
|
*/
|
||||||
private function updateNameserverEntities(Nameserver $nameserver, array $rdapNameserver): void
|
private function updateNameserverEntities(Nameserver $nameserver, array $rdapNameserver): void
|
||||||
{
|
{
|
||||||
if (!array_key_exists('entities', $rdapNameserver) || !is_array($rdapNameserver['entities'])) {
|
if (!array_key_exists('entities', $rdapNameserver) || !is_array($rdapNameserver['entities'])) {
|
||||||
@@ -403,7 +408,6 @@ readonly class RDAPService
|
|||||||
|
|
||||||
foreach ($rdapNameserver['entities'] as $rdapEntity) {
|
foreach ($rdapNameserver['entities'] as $rdapEntity) {
|
||||||
$roles = $this->extractEntityRoles($rdapNameserver['entities'], $rdapEntity);
|
$roles = $this->extractEntityRoles($rdapNameserver['entities'], $rdapEntity);
|
||||||
|
|
||||||
$entity = $this->registerEntity($rdapEntity, $roles, $nameserver->getLdhName());
|
$entity = $this->registerEntity($rdapEntity, $roles, $nameserver->getLdhName());
|
||||||
|
|
||||||
$nameserverEntity = $this->nameserverEntityRepository->findOneBy([
|
$nameserverEntity = $this->nameserverEntityRepository->findOneBy([
|
||||||
@@ -429,7 +433,13 @@ readonly class RDAPService
|
|||||||
fn ($e) => $e['roles'],
|
fn ($e) => $e['roles'],
|
||||||
array_filter(
|
array_filter(
|
||||||
$entities,
|
$entities,
|
||||||
fn ($e) => $targetEntity === $e
|
fn ($e) => array_key_exists('handle', $targetEntity) && array_key_exists('handle', $e)
|
||||||
|
? $targetEntity['handle'] === $e['handle']
|
||||||
|
: (
|
||||||
|
array_key_exists('vcardArray', $targetEntity) && array_key_exists('vcardArray', $e)
|
||||||
|
? $targetEntity['vcardArray'] === $e['vcardArray']
|
||||||
|
: $targetEntity === $e
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user