Skip to content

Commit 4a87c1f

Browse files
committed
Add cooldown to statistics collector
1 parent 7745eb1 commit 4a87c1f

5 files changed

Lines changed: 22 additions & 3 deletions

File tree

app/Connections/ConnectionManager.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public function limitConnectionLength(ControlConnection $connection, int $maximu
5656
if ($cooldownPeriod > 0 && !empty($connection->authToken)) {
5757
$cooldownEndsAt = time() + ($cooldownPeriod * 60);
5858
app(\Expose\Server\Contracts\UserRepository::class)->setCooldownForToken($connection->authToken, $cooldownEndsAt);
59+
$this->statisticsCollector->cooldownTriggered();
5960
}
6061
});
6162
}

app/Contracts/StatisticsCollector.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public function portShared($authToken = null);
1010

1111
public function incomingRequest();
1212

13+
public function cooldownTriggered();
14+
1315
public function flush();
1416

1517
public function save();

app/StatisticsCollector/DatabaseStatisticsCollector.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ class DatabaseStatisticsCollector implements StatisticsCollector
1919
/** @var int */
2020
protected $requests = 0;
2121

22+
/** @var int */
23+
protected $cooldowns = 0;
24+
2225
public function __construct(DatabaseInterface $database)
2326
{
2427
$this->database = $database;
@@ -34,6 +37,7 @@ public function flush()
3437
$this->sharedPorts = [];
3538
$this->sharedSites = [];
3639
$this->requests = 0;
40+
$this->cooldowns = 0;
3741
}
3842

3943
public function siteShared($authToken = null)
@@ -71,6 +75,15 @@ public function incomingRequest()
7175
$this->requests++;
7276
}
7377

78+
public function cooldownTriggered()
79+
{
80+
if (! $this->shouldCollectStatistics()) {
81+
return;
82+
}
83+
84+
$this->cooldowns++;
85+
}
86+
7487
public function save()
7588
{
7689
$sharedSites = 0;
@@ -84,15 +97,16 @@ public function save()
8497
});
8598

8699
$this->database->query('
87-
INSERT INTO statistics (timestamp, shared_sites, shared_ports, unique_shared_sites, unique_shared_ports, incoming_requests)
88-
VALUES (:timestamp, :shared_sites, :shared_ports, :unique_shared_sites, :unique_shared_ports, :incoming_requests)
100+
INSERT INTO statistics (timestamp, shared_sites, shared_ports, unique_shared_sites, unique_shared_ports, incoming_requests, cooldown_count)
101+
VALUES (:timestamp, :shared_sites, :shared_ports, :unique_shared_sites, :unique_shared_ports, :incoming_requests, :cooldown_count)
89102
', [
90103
'timestamp' => today()->toDateString(),
91104
'shared_sites' => $sharedSites,
92105
'shared_ports' => $sharedPorts,
93106
'unique_shared_sites' => count($this->sharedSites),
94107
'unique_shared_ports' => count($this->sharedPorts),
95108
'incoming_requests' => $this->requests,
109+
'cooldown_count' => $this->cooldowns,
96110
])
97111
->then(function () {
98112
$this->flush();

app/StatisticsRepository/DatabaseStatisticsRepository.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ public function getStatistics($from, $until): PromiseInterface
2929
SUM(shared_ports) as shared_ports,
3030
SUM(unique_shared_sites) as unique_shared_sites,
3131
SUM(unique_shared_ports) as unique_shared_ports,
32-
SUM(incoming_requests) as incoming_requests
32+
SUM(incoming_requests) as incoming_requests,
33+
SUM(cooldown_count) as cooldown_count
3334
FROM statistics
3435
WHERE
3536
`timestamp` >= "'.$from.'" AND `timestamp` <= "'.$until.'"')
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE statistics ADD COLUMN cooldown_count INTEGER DEFAULT 0;

0 commit comments

Comments
 (0)