cache latest server HostName in database

This commit is contained in:
ghost 2024-01-13 03:58:36 +02:00
parent becb46d1bc
commit af4ad5f65b
7 changed files with 91 additions and 16 deletions

View file

@ -133,27 +133,20 @@ class CrontabController extends AbstractController
// Collect servers info
$servers = [];
foreach ((array) $entityManagerInterface->getRepository(Server::class)->findBy(
[
'crc32server' => (int) $request->get('crc32server')
],
[
'id' => 'ASC'
],
) as $server)
foreach ((array) $entityManagerInterface->getRepository(Server::class)->findAll() as $server)
{
try
{
$query = new \xPaw\SourceQuery\SourceQuery();
$node = new \xPaw\SourceQuery\SourceQuery();
$query->Connect(
$node->Connect(
false === filter_var($server->getHost(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) ? $server->getHost() : "[{$server->getHost()}]",
$server->port
);
if ($query->Ping())
if ($node->Ping())
{
if ($info = (array) $query->GetInfo())
if ($info = (array) $node->GetInfo())
{
// Filter response
$bots = isset($info['Bots']) && $info['Bots'] > 0 ? (int) $info['Bots'] : 0;
@ -165,6 +158,28 @@ class CrontabController extends AbstractController
$server->host . ':' . $server->port
);
// Update server name
if (!empty($info['HostName']) && mb_strlen($info['HostName']) < 256)
{
$server->setName(
(string) $info['HostName']
);
}
$server->setUpdated(
time()
);
$server->setOnline(
time()
);
$entityManagerInterface->persist(
$server
);
$entityManagerInterface->flush();
// Get last online value
$online = $entityManagerInterface->getRepository(Online::class)->findOneBy(
[
@ -219,7 +234,7 @@ class CrontabController extends AbstractController
// Update player stats
if ($players)
{
foreach ((array) $query->GetPlayers() as $session)
foreach ((array) $node->GetPlayers() as $session)
{
// Validate fields
if
@ -329,7 +344,7 @@ class CrontabController extends AbstractController
finally
{
$query->Disconnect();
$node->Disconnect();
}
}

View file

@ -95,6 +95,7 @@ class MainController extends AbstractController
// Add server
$servers[] = [
'crc32server' => $server->getCrc32server(),
'name' => $server->getName(),
'host' => $server->getHost(),
'port' => $server->getPort(),
'added' => $server->getAdded(),

View file

@ -169,6 +169,7 @@ class ServerController extends AbstractController
[
'address' => $address,
'crc32server' => $server->getCrc32Server(),
'name' => $server->getName(),
'host' => $server->getHost(),
'port' => $server->getPort(),
'info' => $info,

View file

@ -32,6 +32,9 @@ class Server
#[ORM\Column(type: Types::INTEGER)]
private ?int $port = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $name = null;
public function getId(): ?int
{
return $this->id;
@ -108,4 +111,16 @@ class Server
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): static
{
$this->name = $name;
return $this;
}
}