fix timelimit
This commit is contained in:
parent
caddb13008
commit
ef919c0395
1 changed files with 7 additions and 20 deletions
|
@ -10,12 +10,9 @@ use Appwrite\Messaging\Adapter\Realtime;
|
||||||
use Appwrite\Network\Validator\Origin;
|
use Appwrite\Network\Validator\Origin;
|
||||||
use Swoole\Http\Request as SwooleRequest;
|
use Swoole\Http\Request as SwooleRequest;
|
||||||
use Swoole\Http\Response as SwooleResponse;
|
use Swoole\Http\Response as SwooleResponse;
|
||||||
use Swoole\Process;
|
|
||||||
use Swoole\Runtime;
|
use Swoole\Runtime;
|
||||||
use Swoole\Table;
|
use Swoole\Table;
|
||||||
use Swoole\Timer;
|
use Swoole\Timer;
|
||||||
use Swoole\WebSocket\Frame;
|
|
||||||
use Swoole\WebSocket\Server as SwooleServer;
|
|
||||||
use Utopia\Abuse\Abuse;
|
use Utopia\Abuse\Abuse;
|
||||||
use Utopia\Abuse\Adapters\TimeLimit;
|
use Utopia\Abuse\Adapters\TimeLimit;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
|
@ -47,9 +44,8 @@ $server = new Server($adapter);
|
||||||
|
|
||||||
$realtime = new Realtime();
|
$realtime = new Realtime();
|
||||||
|
|
||||||
$server->onStart(function (SwooleServer $server) use ($stats) {
|
$server->onStart(function () use ($stats) {
|
||||||
Console::success('Server started succefully');
|
Console::success('Server started succefully');
|
||||||
Console::info("Master pid {$server->master_pid}, manager pid {$server->manager_pid}");
|
|
||||||
|
|
||||||
Timer::tick(10000, function () use ($stats) {
|
Timer::tick(10000, function () use ($stats) {
|
||||||
foreach ($stats as $projectId => $value) {
|
foreach ($stats as $projectId => $value) {
|
||||||
|
@ -79,14 +75,9 @@ $server->onStart(function (SwooleServer $server) use ($stats) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Process::signal(2, function () use ($server) {
|
|
||||||
Console::log('Stop by Ctrl+C');
|
|
||||||
$server->shutdown();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$server->onWorkerStart(function (SwooleServer $swooleServer, int $workerId) use ($server, $register, $stats, $realtime) {
|
$server->onWorkerStart(function (int $workerId) use ($server, $register, $stats, $realtime) {
|
||||||
Console::success('Worker ' . $workerId . ' started succefully');
|
Console::success('Worker ' . $workerId . ' started succefully');
|
||||||
|
|
||||||
$attempts = 0;
|
$attempts = 0;
|
||||||
|
@ -198,9 +189,8 @@ $server->onWorkerStart(function (SwooleServer $swooleServer, int $workerId) use
|
||||||
Console::error('Failed to restart pub/sub...');
|
Console::error('Failed to restart pub/sub...');
|
||||||
});
|
});
|
||||||
|
|
||||||
$server->onOpen(function (SwooleServer $swooleServer, SwooleRequest $request) use ($server, $register, $stats, &$realtime) {
|
$server->onOpen(function (int $connection, SwooleRequest $request) use ($server, $register, $stats, &$realtime) {
|
||||||
$app = new App('UTC');
|
$app = new App('UTC');
|
||||||
$connection = $request->fd;
|
|
||||||
$request = new Request($request);
|
$request = new Request($request);
|
||||||
|
|
||||||
/** @var PDO $db */
|
/** @var PDO $db */
|
||||||
|
@ -208,7 +198,7 @@ $server->onOpen(function (SwooleServer $swooleServer, SwooleRequest $request) us
|
||||||
/** @var Redis $redis */
|
/** @var Redis $redis */
|
||||||
$redis = $register->get('redisPool')->get();
|
$redis = $register->get('redisPool')->get();
|
||||||
|
|
||||||
Console::info("Connection open (user: {$connection}, worker: {$swooleServer->getWorkerId()})");
|
Console::info("Connection open (user: {$connection})");
|
||||||
|
|
||||||
App::setResource('db', function () use (&$db) {
|
App::setResource('db', function () use (&$db) {
|
||||||
return $db;
|
return $db;
|
||||||
|
@ -248,9 +238,7 @@ $server->onOpen(function (SwooleServer $swooleServer, SwooleRequest $request) us
|
||||||
*
|
*
|
||||||
* Abuse limits are connecting 128 times per minute and ip address.
|
* Abuse limits are connecting 128 times per minute and ip address.
|
||||||
*/
|
*/
|
||||||
$timeLimit = new TimeLimit('url:{url},ip:{ip}', 128, 60, function () use (&$db) {
|
$timeLimit = new TimeLimit('url:{url},ip:{ip}', 128, 60, $db);
|
||||||
return $db;
|
|
||||||
});
|
|
||||||
$timeLimit
|
$timeLimit
|
||||||
->setNamespace('app_' . $project->getId())
|
->setNamespace('app_' . $project->getId())
|
||||||
->setParam('{ip}', $request->getIP())
|
->setParam('{ip}', $request->getIP())
|
||||||
|
@ -316,13 +304,12 @@ $server->onOpen(function (SwooleServer $swooleServer, SwooleRequest $request) us
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$server->onMessage(function (SwooleServer $swooleServer, Frame $frame) use ($server) {
|
$server->onMessage(function (int $connection, string $message) use ($server) {
|
||||||
$connection = $frame->fd;
|
|
||||||
$server->send([$connection], 'Sending messages is not allowed.');
|
$server->send([$connection], 'Sending messages is not allowed.');
|
||||||
$server->close($connection, 1003);
|
$server->close($connection, 1003);
|
||||||
});
|
});
|
||||||
|
|
||||||
$server->onClose(function (SwooleServer $server, int $connection) use ($realtime, $stats) {
|
$server->onClose(function (int $connection) use ($realtime, $stats) {
|
||||||
if (array_key_exists($connection, $realtime->connections)) {
|
if (array_key_exists($connection, $realtime->connections)) {
|
||||||
$stats->decr($realtime->connections[$connection]['projectId'], 'connectionsTotal');
|
$stats->decr($realtime->connections[$connection]['projectId'], 'connectionsTotal');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue