functions/builds/deletes worker
This commit is contained in:
parent
fd4f86b1c1
commit
57bc7d0584
2
.env
2
.env
|
@ -1,4 +1,4 @@
|
|||
_APP_ENV=development
|
||||
_APP_ENV=production
|
||||
_APP_LOCALE=en
|
||||
_APP_WORKER_PER_CORE=2
|
||||
_APP_CONSOLE_WHITELIST_ROOT=disabled
|
||||
|
|
|
@ -132,7 +132,7 @@ CLI::setResource('queue', function (Group $pools) {
|
|||
CLI::setResource('queueForMessaging', function (Connection $queue) {
|
||||
return new Phone($queue);
|
||||
}, ['queue']);
|
||||
CLI::setResource('queueForMail', function (Connection $queue) {
|
||||
CLI::setResource('queueForMails', function (Connection $queue) {
|
||||
return new Mail($queue);
|
||||
}, ['queue']);
|
||||
CLI::setResource('queueForBuilds', function (Connection $queue) {
|
||||
|
|
|
@ -732,8 +732,8 @@ App::post('/v1/account/sessions/magic-url')
|
|||
->inject('dbForProject')
|
||||
->inject('locale')
|
||||
->inject('queueForEvents')
|
||||
->inject('queueForMail')
|
||||
->action(function (string $userId, string $email, string $url, Request $request, Response $response, Document $project, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMail) {
|
||||
->inject('queueForMails')
|
||||
->action(function (string $userId, string $email, string $url, Request $request, Response $response, Document $project, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMails) {
|
||||
|
||||
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
||||
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP disabled');
|
||||
|
@ -837,13 +837,11 @@ App::post('/v1/account/sessions/magic-url')
|
|||
|
||||
$body = $body->render();
|
||||
|
||||
$queueForMail
|
||||
$queueForMails
|
||||
->setSubject($subject)
|
||||
->setBody($body)
|
||||
->setFrom($from)
|
||||
->setRecipient($user->getAttribute('email'))
|
||||
->setUrl($url)
|
||||
->setLocale($locale->default)
|
||||
->trigger()
|
||||
;
|
||||
|
||||
|
@ -1624,6 +1622,8 @@ App::patch('/v1/account/password')
|
|||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||
->label('sdk.response.model', Response::MODEL_ACCOUNT)
|
||||
->label('sdk.offline.model', '/account')
|
||||
->label('sdk.offline.key', 'current')
|
||||
->param('password', '', new Password(), 'New user password. Must be at least 8 chars.')
|
||||
->param('oldPassword', '', new Password(), 'Current user password. Must be at least 8 chars.', true)
|
||||
->inject('response')
|
||||
|
@ -2055,9 +2055,9 @@ App::post('/v1/account/recovery')
|
|||
->inject('dbForProject')
|
||||
->inject('project')
|
||||
->inject('locale')
|
||||
->inject('queueForMail')
|
||||
->inject('queueForMails')
|
||||
->inject('queueForEvents')
|
||||
->action(function (string $email, string $url, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Mail $queueForMail, Event $queueForEvents) {
|
||||
->action(function (string $email, string $url, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Mail $queueForMails, Event $queueForEvents) {
|
||||
|
||||
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
||||
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled');
|
||||
|
@ -2133,7 +2133,7 @@ App::post('/v1/account/recovery')
|
|||
$body = $body->render();
|
||||
|
||||
|
||||
$queueForMail
|
||||
$queueForMails
|
||||
->setRecipient($profile->getAttribute('email', ''))
|
||||
->setName($profile->getAttribute('name'))
|
||||
->setBody($body)
|
||||
|
@ -2252,8 +2252,8 @@ App::post('/v1/account/verification')
|
|||
->inject('dbForProject')
|
||||
->inject('locale')
|
||||
->inject('queueForEvents')
|
||||
->inject('queueForMail')
|
||||
->action(function (string $url, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMail) {
|
||||
->inject('queueForMails')
|
||||
->action(function (string $url, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMails) {
|
||||
|
||||
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
|
||||
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled');
|
||||
|
@ -2312,13 +2312,11 @@ App::post('/v1/account/verification')
|
|||
|
||||
$body = $body->render();
|
||||
|
||||
$queueForMail
|
||||
$queueForMails
|
||||
->setSubject($subject)
|
||||
->setBody($body)
|
||||
->setFrom($from)
|
||||
->setRecipient($user->getAttribute('email'))
|
||||
->setUrl($url)
|
||||
->setLocale($locale->default)
|
||||
->setName($user->getAttribute('name'))
|
||||
->trigger()
|
||||
;
|
||||
|
|
|
@ -895,6 +895,7 @@ App::delete('/v1/functions/:functionId/deployments/:deploymentId')
|
|||
if ($function->getAttribute('deployment') === $deployment->getId()) { // Reset function deployment
|
||||
$function = $dbForProject->updateDocument('functions', $function->getId(), new Document(array_merge($function->getArrayCopy(), [
|
||||
'deployment' => '',
|
||||
'deploymentInternalId' => '',
|
||||
])));
|
||||
}
|
||||
|
||||
|
|
|
@ -315,9 +315,9 @@ App::post('/v1/teams/:teamId/memberships')
|
|||
->inject('user')
|
||||
->inject('dbForProject')
|
||||
->inject('locale')
|
||||
->inject('queueForMail')
|
||||
->inject('queueForMails')
|
||||
->inject('queueForEvents')
|
||||
->action(function (string $teamId, string $email, array $roles, string $url, string $name, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Mail $queueForMail, Event $queueForEvents) {
|
||||
->action(function (string $teamId, string $email, array $roles, string $url, string $name, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Mail $queueForMails, Event $queueForEvents) {
|
||||
|
||||
$isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles());
|
||||
$isAppUser = Auth::isAppUser(Authorization::getRoles());
|
||||
|
@ -461,7 +461,7 @@ App::post('/v1/teams/:teamId/memberships')
|
|||
|
||||
$body = $body->render();
|
||||
|
||||
$queueForMail
|
||||
$queueForMails
|
||||
->setSubject($subject)
|
||||
->setBody($body)
|
||||
->setFrom($from)
|
||||
|
|
|
@ -156,13 +156,13 @@ App::init()
|
|||
->inject('user')
|
||||
->inject('queueForEvents')
|
||||
->inject('queueForAudits')
|
||||
->inject('queueForMail')
|
||||
->inject('queueForMails')
|
||||
->inject('queueForDeletes')
|
||||
->inject('queueForDatabase')
|
||||
->inject('queueForUsage')
|
||||
->inject('dbForProject')
|
||||
->inject('mode')
|
||||
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Mail $queueForMail, Delete $queueForDeletes, EventDatabase $queueForDatabase, Usage $queueForUsage, Database $dbForProject, string $mode) use ($databaseListener) {
|
||||
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Mail $queueForMails, Delete $queueForDeletes, EventDatabase $queueForDatabase, Usage $queueForUsage, Database $dbForProject, string $mode) use ($databaseListener) {
|
||||
|
||||
$route = $utopia->match($request);
|
||||
|
||||
|
@ -236,7 +236,7 @@ App::init()
|
|||
->setProject($project)
|
||||
->setUser($user);
|
||||
|
||||
$queueForMail
|
||||
$queueForMails
|
||||
->setProject($project)
|
||||
->setUser($user);
|
||||
|
||||
|
|
|
@ -869,7 +869,7 @@ App::setResource('queue', function (Group $pools) {
|
|||
App::setResource('queueForMessaging', function (Connection $queue) {
|
||||
return new Phone($queue);
|
||||
}, ['queue']);
|
||||
App::setResource('queueForMail', function (Connection $queue) {
|
||||
App::setResource('queueForMails', function (Connection $queue) {
|
||||
return new Mail($queue);
|
||||
}, ['queue']);
|
||||
App::setResource('queueForBuilds', function (Connection $queue) {
|
||||
|
|
|
@ -125,7 +125,7 @@ Server::setResource('queueForDatabase', function (Connection $queue) {
|
|||
Server::setResource('queueForMessaging', function (Connection $queue) {
|
||||
return new Phone($queue);
|
||||
}, ['queue']);
|
||||
Server::setResource('queueForMail', function (Connection $queue) {
|
||||
Server::setResource('queueForMails', function (Connection $queue) {
|
||||
return new Mail($queue);
|
||||
}, ['queue']);
|
||||
Server::setResource('queueForBuilds', function (Connection $queue) {
|
||||
|
|
|
@ -383,17 +383,17 @@ Server::setResource('applyCertificateFiles', function () {
|
|||
* @param int $attempt How many times it failed already
|
||||
* @return void
|
||||
*/
|
||||
Server::setResource('notifyError', function (Mail $queueForMail) {
|
||||
Server::setResource('notifyError', function (Mail $queueForMails) {
|
||||
return function (
|
||||
string $domain,
|
||||
string $errorMessage,
|
||||
int $attempt,
|
||||
) use ($queueForMail) {
|
||||
) use ($queueForMails) {
|
||||
// Log error into console
|
||||
Console::warning('Cannot renew domain (' . $domain . ') on attempt no. ' . $attempt . ' certificate: ' . $errorMessage);
|
||||
|
||||
// Send mail to administratore mail
|
||||
$queueForMail
|
||||
$queueForMails
|
||||
->setType(MAIL_TYPE_CERTIFICATE)
|
||||
->setRecipient(App::getEnv('_APP_SYSTEM_SECURITY_EMAIL_ADDRESS'))
|
||||
->setUrl('https://' . $domain)
|
||||
|
@ -406,7 +406,7 @@ Server::setResource('notifyError', function (Mail $queueForMail) {
|
|||
])
|
||||
->trigger();
|
||||
};
|
||||
}, ['queueForMail']);
|
||||
}, ['queueForMails']);
|
||||
|
||||
/**
|
||||
* Update all existing domain documents so they have relation to correct certificate document.
|
||||
|
|
|
@ -308,6 +308,7 @@ services:
|
|||
- appwrite-certificates:/storage/certificates:rw
|
||||
- ./app:/usr/src/code/app
|
||||
- ./src:/usr/src/code/src
|
||||
- ./vendor/utopia-php/storage:/usr/src/code/vendor/utopia-php/storage
|
||||
environment:
|
||||
- _APP_ENV
|
||||
- _APP_WORKER_PER_CORE
|
||||
|
|
|
@ -35,14 +35,14 @@ class Certificates extends Action
|
|||
->desc('Certificates worker')
|
||||
->inject('message')
|
||||
->inject('dbForConsole')
|
||||
->inject('queueForMail')
|
||||
->callback(fn($message, $dbForConsole, $queueForMail) => $this->action($message, $dbForConsole, $queueForMail));
|
||||
->inject('queueForMails')
|
||||
->callback(fn($message, $dbForConsole, $queueForMails) => $this->action($message, $dbForConsole, $queueForMails));
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Exception|Throwable
|
||||
*/
|
||||
public function action(Message $message, Database $dbForConsole, Mail $queueForMail): void
|
||||
public function action(Message $message, Database $dbForConsole, Mail $queueForMails): void
|
||||
{
|
||||
$payload = $message->getPayload() ?? [];
|
||||
|
||||
|
@ -54,13 +54,13 @@ class Certificates extends Action
|
|||
$domain = new Domain($document->getAttribute('domain', ''));
|
||||
$skipRenewCheck = $payload['skipRenewCheck'] ?? false;
|
||||
|
||||
$this->execute($domain, $dbForConsole, $queueForMail, $skipRenewCheck);
|
||||
$this->execute($domain, $dbForConsole, $queueForMails, $skipRenewCheck);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Exception|Throwable
|
||||
*/
|
||||
private function execute(Domain $domain, Database $dbForConsole, Mail $queueForMail, bool $skipRenewCheck = false): void
|
||||
private function execute(Domain $domain, Database $dbForConsole, Mail $queueForMails, bool $skipRenewCheck = false): void
|
||||
{
|
||||
/**
|
||||
* 1. Read arguments and validate domain
|
||||
|
@ -152,7 +152,7 @@ class Certificates extends Action
|
|||
$certificate->setAttribute('renewDate', DateTime::now());
|
||||
|
||||
// Send email to security email
|
||||
$this->notifyError($domain->get(), $e->getMessage(), $attempts, $queueForMail);
|
||||
$this->notifyError($domain->get(), $e->getMessage(), $attempts, $queueForMails);
|
||||
} finally {
|
||||
// All actions result in new updatedAt date
|
||||
$certificate->setAttribute('updated', DateTime::now());
|
||||
|
@ -340,11 +340,11 @@ class Certificates extends Action
|
|||
* @param string $domain Domain that caused the error
|
||||
* @param string $errorMessage Verbose error message
|
||||
* @param int $attempt How many times it failed already
|
||||
* @param Mail $queueForMail
|
||||
* @param Mail $queueForMails
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
private function notifyError(string $domain, string $errorMessage, int $attempt, Mail $queueForMail): void
|
||||
private function notifyError(string $domain, string $errorMessage, int $attempt, Mail $queueForMails): void
|
||||
{
|
||||
// Log error into console
|
||||
Console::warning('Cannot renew domain (' . $domain . ') on attempt no. ' . $attempt . ' certificate: ' . $errorMessage);
|
||||
|
@ -375,7 +375,7 @@ class Certificates extends Action
|
|||
->setParam('{{bg-content}}', '#ffffff')
|
||||
->setParam('{{text-content}}', '#000000');
|
||||
|
||||
$queueForMail
|
||||
$queueForMails
|
||||
->setRecipient(App::getEnv('_APP_SYSTEM_SECURITY_EMAIL_ADDRESS'))
|
||||
->setBody($body->render())
|
||||
->setName('Appwrite Administrator')
|
||||
|
|
|
@ -59,7 +59,7 @@ class Deletes extends Action
|
|||
$hourlyUsageRetentionDatetime = $payload['hourlyUsageRetentionDatetime'] ?? null;
|
||||
$resource = $payload['resource'] ?? null;
|
||||
$document = new Document($payload['document'] ?? []);
|
||||
$project = new Document($payload['project'] ?? []);
|
||||
$project = new Document($payload['project'] ?? []);
|
||||
|
||||
switch (strval($type)) {
|
||||
case DELETE_TYPE_DOCUMENT:
|
||||
|
@ -186,6 +186,7 @@ class Deletes extends Action
|
|||
}
|
||||
|
||||
/**
|
||||
* @param Database $dbForConsole
|
||||
* @param callable $getProjectDB
|
||||
* @param string $resource
|
||||
* @throws Exception
|
||||
|
@ -618,7 +619,6 @@ class Deletes extends Action
|
|||
$projectId = $project->getId();
|
||||
$dbForProject = $getProjectDB($project);
|
||||
$deploymentId = $document->getId();
|
||||
$functionId = $document->getAttribute('resourceId');
|
||||
|
||||
/**
|
||||
* Delete deployment files
|
||||
|
|
|
@ -142,6 +142,7 @@ class Functions extends Action
|
|||
$this->execute(
|
||||
dbForProject: $dbForProject,
|
||||
queueForFunctions: $queueForFunctions,
|
||||
queueForEvents: $queueForEvents,
|
||||
queueForUsage: $queueForUsage,
|
||||
project: $project,
|
||||
function: $function,
|
||||
|
|
|
@ -60,13 +60,14 @@ class Webhooks extends Action
|
|||
|
||||
private function execute(array $events, string $payload, Document $webhook, Document $user, Document $project): void
|
||||
{
|
||||
|
||||
$url = \rawurldecode($webhook->getAttribute('url'));
|
||||
$signatureKey = $webhook->getAttribute('signatureKey');
|
||||
$signature = base64_encode(hash_hmac('sha1', $url . $payload, $signatureKey, true));
|
||||
$httpUser = $webhook->getAttribute('httpUser');
|
||||
$httpPass = $webhook->getAttribute('httpPass');
|
||||
$ch = \curl_init($webhook->getAttribute('url'));
|
||||
|
||||
var_dump($url);
|
||||
\curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
|
||||
\curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
||||
\curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
|
|
Loading…
Reference in a new issue