Skip to content

Commit af4ad5f

Browse files
author
ghost
committed
cache latest server HostName in database
1 parent becb46d commit af4ad5f

File tree

7 files changed

+91
-16
lines changed

7 files changed

+91
-16
lines changed

migrations/Version20240113013727.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace DoctrineMigrations;
6+
7+
use Doctrine\DBAL\Schema\Schema;
8+
use Doctrine\Migrations\AbstractMigration;
9+
10+
/**
11+
* Auto-generated Migration: Please modify to your needs!
12+
*/
13+
final class Version20240113013727 extends AbstractMigration
14+
{
15+
public function getDescription(): string
16+
{
17+
return '';
18+
}
19+
20+
public function up(Schema $schema): void
21+
{
22+
// this up() migration is auto-generated, please modify it to your needs
23+
$this->addSql('ALTER TABLE server ADD COLUMN name VARCHAR(255) DEFAULT NULL');
24+
}
25+
26+
public function down(Schema $schema): void
27+
{
28+
// this down() migration is auto-generated, please modify it to your needs
29+
$this->addSql('CREATE TEMPORARY TABLE __temp__server AS SELECT id, crc32server, added, updated, online, host, port FROM server');
30+
$this->addSql('DROP TABLE server');
31+
$this->addSql('CREATE TABLE server (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, crc32server BIGINT NOT NULL, added BIGINT NOT NULL, updated BIGINT NOT NULL, online BIGINT NOT NULL, host VARCHAR(255) NOT NULL, port INTEGER NOT NULL)');
32+
$this->addSql('INSERT INTO server (id, crc32server, added, updated, online, host, port) SELECT id, crc32server, added, updated, online, host, port FROM __temp__server');
33+
$this->addSql('DROP TABLE __temp__server');
34+
}
35+
}

src/Controller/CrontabController.php

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -133,27 +133,20 @@ public function index(
133133
// Collect servers info
134134
$servers = [];
135135

136-
foreach ((array) $entityManagerInterface->getRepository(Server::class)->findBy(
137-
[
138-
'crc32server' => (int) $request->get('crc32server')
139-
],
140-
[
141-
'id' => 'ASC'
142-
],
143-
) as $server)
136+
foreach ((array) $entityManagerInterface->getRepository(Server::class)->findAll() as $server)
144137
{
145138
try
146139
{
147-
$query = new \xPaw\SourceQuery\SourceQuery();
140+
$node = new \xPaw\SourceQuery\SourceQuery();
148141

149-
$query->Connect(
142+
$node->Connect(
150143
false === filter_var($server->getHost(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) ? $server->getHost() : "[{$server->getHost()}]",
151144
$server->port
152145
);
153146

154-
if ($query->Ping())
147+
if ($node->Ping())
155148
{
156-
if ($info = (array) $query->GetInfo())
149+
if ($info = (array) $node->GetInfo())
157150
{
158151
// Filter response
159152
$bots = isset($info['Bots']) && $info['Bots'] > 0 ? (int) $info['Bots'] : 0;
@@ -165,6 +158,28 @@ public function index(
165158
$server->host . ':' . $server->port
166159
);
167160

161+
// Update server name
162+
if (!empty($info['HostName']) && mb_strlen($info['HostName']) < 256)
163+
{
164+
$server->setName(
165+
(string) $info['HostName']
166+
);
167+
}
168+
169+
$server->setUpdated(
170+
time()
171+
);
172+
173+
$server->setOnline(
174+
time()
175+
);
176+
177+
$entityManagerInterface->persist(
178+
$server
179+
);
180+
181+
$entityManagerInterface->flush();
182+
168183
// Get last online value
169184
$online = $entityManagerInterface->getRepository(Online::class)->findOneBy(
170185
[
@@ -219,7 +234,7 @@ public function index(
219234
// Update player stats
220235
if ($players)
221236
{
222-
foreach ((array) $query->GetPlayers() as $session)
237+
foreach ((array) $node->GetPlayers() as $session)
223238
{
224239
// Validate fields
225240
if
@@ -329,7 +344,7 @@ public function index(
329344

330345
finally
331346
{
332-
$query->Disconnect();
347+
$node->Disconnect();
333348
}
334349
}
335350

src/Controller/MainController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public function index(
9595
// Add server
9696
$servers[] = [
9797
'crc32server' => $server->getCrc32server(),
98+
'name' => $server->getName(),
9899
'host' => $server->getHost(),
99100
'port' => $server->getPort(),
100101
'added' => $server->getAdded(),

src/Controller/ServerController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ public function index(
169169
[
170170
'address' => $address,
171171
'crc32server' => $server->getCrc32Server(),
172+
'name' => $server->getName(),
172173
'host' => $server->getHost(),
173174
'port' => $server->getPort(),
174175
'info' => $info,

src/Entity/Server.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ class Server
3232
#[ORM\Column(type: Types::INTEGER)]
3333
private ?int $port = null;
3434

35+
#[ORM\Column(length: 255, nullable: true)]
36+
private ?string $name = null;
37+
3538
public function getId(): ?int
3639
{
3740
return $this->id;
@@ -108,4 +111,16 @@ public function setPort(int $port): static
108111

109112
return $this;
110113
}
114+
115+
public function getName(): ?string
116+
{
117+
return $this->name;
118+
}
119+
120+
public function setName(?string $name): static
121+
{
122+
$this->name = $name;
123+
124+
return $this;
125+
}
111126
}

templates/default/main/index.html.twig

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,15 @@
3131
</span>
3232
{% endif %}
3333
</td>
34-
<td class="text-align-left">{{ server.info.HostName }}</td>
34+
<td class="text-align-left">
35+
{% if server.name %}
36+
{{ server.name }}
37+
{% elseif server.info.HostName %}
38+
{{ server.info.HostName }}
39+
{% else %}
40+
#{{ server.crc32server }}
41+
{% endif %}
42+
</td>
3543
<td class="text-align-left">{{ server.info.Map }}</td>
3644
<td class="text-align-left">{{ server.added | format_date }}</td>
3745
<td class="text-align-left">{{ server.online | format_date }}</td>

templates/default/server/index.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
{% endmacro %}
4646
{% from _self import sort %}
4747
{% extends 'default/layout.html.twig' %}
48-
{% block head_title_content %}{% if server.info.HostName is defined %}{{ server.info.HostName }}{% else %}#{{ server.crc32server }}{% endif %} - {{ app.name }}{% endblock %}
48+
{% block head_title_content %}{% if server.name %}{{ server.name }}{% else %}#{{ server.crc32server }}{% endif %} - {{ app.name }}{% endblock %}
4949
{% block main_content %}
5050
<div class="border-default padding-8-px margin-y-8-px">
5151
<h2>

0 commit comments

Comments
 (0)