diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 57ffe867de..9ccc914564 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -31,47 +31,47 @@ App::init(function ($utopia, $request, $response, $project, $user, $register, $e throw new Exception('Missing or unknown project ID', 400); } - /* - * Abuse Check - */ - $timeLimit = new TimeLimit($route->getLabel('abuse-key', 'url:{url},ip:{ip}'), $route->getLabel('abuse-limit', 0), $route->getLabel('abuse-time', 3600), function () use ($register) { - return $register->get('db'); - }); - $timeLimit->setNamespace('app_'.$project->getId()); - $timeLimit - ->setParam('{userId}', $user->getId()) - ->setParam('{userAgent}', $request->getUserAgent('')) - ->setParam('{ip}', $request->getIP()) - ->setParam('{url}', $request->getHostname().$route->getURL()) - ; + // /* + // * Abuse Check + // */ + // $timeLimit = new TimeLimit($route->getLabel('abuse-key', 'url:{url},ip:{ip}'), $route->getLabel('abuse-limit', 0), $route->getLabel('abuse-time', 3600), function () use ($register) { + // return $register->get('db'); + // }); + // $timeLimit->setNamespace('app_'.$project->getId()); + // $timeLimit + // ->setParam('{userId}', $user->getId()) + // ->setParam('{userAgent}', $request->getUserAgent('')) + // ->setParam('{ip}', $request->getIP()) + // ->setParam('{url}', $request->getHostname().$route->getURL()) + // ; - //TODO make sure we get array here + // //TODO make sure we get array here - foreach ($request->getParams() as $key => $value) { // Set request params as potential abuse keys - if(!empty($value)) { - $timeLimit->setParam('{param-'.$key.'}', (\is_array($value)) ? \json_encode($value) : $value); - } - } + // foreach ($request->getParams() as $key => $value) { // Set request params as potential abuse keys + // if(!empty($value)) { + // $timeLimit->setParam('{param-'.$key.'}', (\is_array($value)) ? \json_encode($value) : $value); + // } + // } - $abuse = new Abuse($timeLimit); + // $abuse = new Abuse($timeLimit); - if ($timeLimit->limit()) { - $response - ->addHeader('X-RateLimit-Limit', $timeLimit->limit()) - ->addHeader('X-RateLimit-Remaining', $timeLimit->remaining()) - ->addHeader('X-RateLimit-Reset', $timeLimit->time() + $route->getLabel('abuse-time', 3600)) - ; - } + // if ($timeLimit->limit()) { + // $response + // ->addHeader('X-RateLimit-Limit', $timeLimit->limit()) + // ->addHeader('X-RateLimit-Remaining', $timeLimit->remaining()) + // ->addHeader('X-RateLimit-Reset', $timeLimit->time() + $route->getLabel('abuse-time', 3600)) + // ; + // } - $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::$roles); - $isAppUser = Auth::isAppUser(Authorization::$roles); + // $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::$roles); + // $isAppUser = Auth::isAppUser(Authorization::$roles); - if (($abuse->check() // Route is rate-limited - && App::getEnv('_APP_OPTIONS_ABUSE', 'enabled') !== 'disabled') // Abuse is not diabled - && (!$isAppUser && !$isPrivilegedUser)) // User is not an admin or API key - { - throw new Exception('Too many requests', 429); - } + // if (($abuse->check() // Route is rate-limited + // && App::getEnv('_APP_OPTIONS_ABUSE', 'enabled') !== 'disabled') // Abuse is not diabled + // && (!$isAppUser && !$isPrivilegedUser)) // User is not an admin or API key + // { + // throw new Exception('Too many requests', 429); + // } /* * Background Jobs diff --git a/app/http.php b/app/http.php index 7d56a9046b..b32103a416 100644 --- a/app/http.php +++ b/app/http.php @@ -78,11 +78,11 @@ $http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swo $db = $register->get('dbPool')->get(); $redis = $register->get('redisPool')->get(); - $register->set('db', function () use (&$db) { + App::setResource('db', function () use (&$db) { return $db; }); - $register->set('cache', function () use (&$redis) { + App::setResource('cache', function () use (&$redis) { return $redis; }); diff --git a/src/Appwrite/Database/Adapter/MySQL.php b/src/Appwrite/Database/Adapter/MySQL.php index 5f5bc74621..93dc379834 100644 --- a/src/Appwrite/Database/Adapter/MySQL.php +++ b/src/Appwrite/Database/Adapter/MySQL.php @@ -54,7 +54,7 @@ class MySQL extends Adapter * @param PDO $pdo * @param Redis $redis */ - public function __construct(PDO $pdo, Redis $redis) + public function __construct($pdo, Redis $redis) { $this->pdo = $pdo; $this->redis = $redis; @@ -939,7 +939,7 @@ class MySQL extends Adapter * * @throws Exception */ - protected function getPDO(): PDO + protected function getPDO() { return $this->pdo; } diff --git a/src/Appwrite/Realtime/Server.php b/src/Appwrite/Realtime/Server.php index 4351e22ce2..bdf5ac2973 100644 --- a/src/Appwrite/Realtime/Server.php +++ b/src/Appwrite/Realtime/Server.php @@ -176,16 +176,16 @@ class Server $db = $this->register->get('dbPool')->get(); $redis = $this->register->get('redisPool')->get(); - $this->register->set('db', function () use (&$db) { + Console::info("Connection open (user: {$connection}, worker: {$server->getWorkerId()})"); + + App::setResource('db', function () use (&$db) { return $db; }); - $this->register->set('cache', function () use (&$redis) { + App::setResource('cache', function () use (&$redis) { return $redis; }); - Console::info("Connection open (user: {$connection}, worker: {$server->getWorkerId()})"); - App::setResource('request', function () use ($request) { return $request; }); @@ -211,24 +211,24 @@ class Server throw new Exception('Missing or unknown project ID', 1008); } - /* - * Abuse Check - * - * Abuse limits are connecting 128 times per minute and ip address. - */ - $timeLimit = new TimeLimit('url:{url},ip:{ip}', 128, 60, function () use ($db) { - return $db; - }); - $timeLimit - ->setNamespace('app_' . $project->getId()) - ->setParam('{ip}', $request->getIP()) - ->setParam('{url}', $request->getURI()); + // /* + // * Abuse Check + // * + // * Abuse limits are connecting 128 times per minute and ip address. + // */ + // $timeLimit = new TimeLimit('url:{url},ip:{ip}', 128, 60, function () use ($db) { + // return $db; + // }); + // $timeLimit + // ->setNamespace('app_' . $project->getId()) + // ->setParam('{ip}', $request->getIP()) + // ->setParam('{url}', $request->getURI()); - $abuse = new Abuse($timeLimit); + // $abuse = new Abuse($timeLimit); - if ($abuse->check() && App::getEnv('_APP_OPTIONS_ABUSE', 'enabled') === 'enabled') { - throw new Exception('Too many requests', 1013); - } + // if ($abuse->check() && App::getEnv('_APP_OPTIONS_ABUSE', 'enabled') === 'enabled') { + // throw new Exception('Too many requests', 1013); + // } /* * Validate Client Domain - Check to avoid CSRF attack. diff --git a/tests/benchmarks/ws.js b/tests/benchmarks/ws.js index d7bef7ab5f..1f69fe00be 100644 --- a/tests/benchmarks/ws.js +++ b/tests/benchmarks/ws.js @@ -21,7 +21,7 @@ export default function () { // const url = new URL('wss://appwrite-realtime.monitor-api.com/v1/realtime'); // url.searchParams.append('project', '604249e6b1a9f'); const url = new URL('ws://localhost/v1/realtime'); - url.searchParams.append('project', '60476312f335c'); + url.searchParams.append('project', 'console'); url.searchParams.append('channels[]', 'files'); const res = ws.connect(url.toString(), function (socket) {