diff --git a/.env b/.env index 5372945d70..19215e23ee 100644 --- a/.env +++ b/.env @@ -17,7 +17,7 @@ _APP_OPTIONS_ROUTER_PROTECTION=disabled _APP_OPTIONS_FORCE_HTTPS=disabled _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=disabled _APP_OPENSSL_KEY_V1=your-secret-key -_APP_DOMAIN=localhost +_APP_DOMAIN=traefik _APP_DOMAIN_FUNCTIONS=functions.localhost _APP_DOMAIN_TARGET=localhost _APP_REDIS_HOST=redis diff --git a/app/config/collections.php b/app/config/collections.php index 2b7777e85b..1b7036c587 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -4551,7 +4551,7 @@ $consoleCollections = array_merge([ 'filters' => [], ], [ - '$id' => ID::custom('metadata'), + '$id' => ID::custom('data'), 'type' => Database::VAR_STRING, 'format' => '', 'size' => 65535, @@ -4559,7 +4559,7 @@ $consoleCollections = array_merge([ 'required' => false, 'default' => new \stdClass(), 'array' => false, - 'filters' => ['json'], + 'filters' => ['json', 'encrypt'], ], [ '$id' => ID::custom('active'), diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index a6e38094b8..637a53cc2c 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -1765,7 +1765,7 @@ App::post('/v1/functions/:functionId/executions') ->setParam('executionId', $execution->getId()) ->trigger(); } else { - $metadata = [ + $data = [ 'headers' => $headers, 'path' => $path, 'method' => $method, @@ -1781,7 +1781,7 @@ App::post('/v1/functions/:functionId/executions') 'resourceUpdatedAt' => DateTime::now(), 'projectId' => $project->getId(), 'schedule' => $scheduledAt, - 'metadata' => $metadata, + 'data' => $data, 'active' => true, ])); } @@ -1828,6 +1828,7 @@ App::post('/v1/functions/:functionId/executions') 'APPWRITE_FUNCTION_PROJECT_ID' => $project->getId(), 'APPWRITE_FUNCTION_RUNTIME_NAME' => $runtime['name'] ?? '', 'APPWRITE_FUNCTION_RUNTIME_VERSION' => $runtime['version'] ?? '', + 'APPWRITE_VERSION' => APP_VERSION_STABLE ]); /** Execute function */ diff --git a/app/controllers/general.php b/app/controllers/general.php index 92ddec58f5..56b151f860 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -250,6 +250,7 @@ function router(App $utopia, Database $dbForConsole, callable $getProjectDB, Swo 'APPWRITE_FUNCTION_PROJECT_ID' => $project->getId(), 'APPWRITE_FUNCTION_RUNTIME_NAME' => $runtime['name'] ?? '', 'APPWRITE_FUNCTION_RUNTIME_VERSION' => $runtime['version'] ?? '', + 'APPWRITE_VERSION' => APP_VERSION_STABLE ]); /** Execute function */ @@ -901,7 +902,7 @@ App::get('/robots.txt') $host = $request->getHostname() ?? ''; $mainDomain = System::getEnv('_APP_DOMAIN', ''); - if ($host === $mainDomain) { + if ($host === $mainDomain || $host === 'localhost') { $template = new View(__DIR__ . '/../views/general/robots.phtml'); $response->text($template->render(false)); } else { @@ -926,7 +927,7 @@ App::get('/humans.txt') $host = $request->getHostname() ?? ''; $mainDomain = System::getEnv('_APP_DOMAIN', ''); - if ($host === $mainDomain) { + if ($host === $mainDomain || $host === 'localhost') { $template = new View(__DIR__ . '/../views/general/humans.phtml'); $response->text($template->render(false)); } else { diff --git a/src/Appwrite/Platform/Tasks/ScheduleExecutions.php b/src/Appwrite/Platform/Tasks/ScheduleExecutions.php index 55cefb2a44..2fdbd98da3 100644 --- a/src/Appwrite/Platform/Tasks/ScheduleExecutions.php +++ b/src/Appwrite/Platform/Tasks/ScheduleExecutions.php @@ -29,6 +29,11 @@ class ScheduleExecutions extends ScheduleBase foreach ($this->schedules as $schedule) { if (!$schedule['active']) { + $dbForConsole->deleteDocument( + 'schedules', + $schedule['$id'], + ); + unset($this->schedules[$schedule['resourceId']]); continue; } @@ -46,10 +51,10 @@ class ScheduleExecutions extends ScheduleBase // TODO: Refactor to use function instead of functionId ->setFunctionId($schedule['resource']['functionId']) ->setExecution($schedule['resource']) - ->setMethod($schedule['metadata']['method'] ?? 'POST') - ->setPath($schedule['metadata']['path'] ?? '/') - ->setHeaders($schedule['metadata']['headers'] ?? []) - ->setBody($schedule['metadata']['body'] ?? '') + ->setMethod($schedule['data']['method'] ?? 'POST') + ->setPath($schedule['data']['path'] ?? '/') + ->setHeaders($schedule['data']['headers'] ?? []) + ->setBody($schedule['data']['body'] ?? '') ->setProject($schedule['project']) ->trigger(); diff --git a/src/Appwrite/Platform/Workers/Builds.php b/src/Appwrite/Platform/Workers/Builds.php index 53fc589cc1..922498c3fa 100644 --- a/src/Appwrite/Platform/Workers/Builds.php +++ b/src/Appwrite/Platform/Workers/Builds.php @@ -400,6 +400,7 @@ class Builds extends Action 'APPWRITE_FUNCTION_PROJECT_ID' => $project->getId(), 'APPWRITE_FUNCTION_RUNTIME_NAME' => $runtime['name'] ?? '', 'APPWRITE_FUNCTION_RUNTIME_VERSION' => $runtime['version'] ?? '', + 'APPWRITE_VERSION' => APP_VERSION_STABLE ]); $command = $deployment->getAttribute('commands', ''); diff --git a/src/Appwrite/Platform/Workers/Functions.php b/src/Appwrite/Platform/Workers/Functions.php index c53bab6ef6..fb7ca0b34a 100644 --- a/src/Appwrite/Platform/Workers/Functions.php +++ b/src/Appwrite/Platform/Workers/Functions.php @@ -468,6 +468,7 @@ class Functions extends Action 'APPWRITE_FUNCTION_PROJECT_ID' => $project->getId(), 'APPWRITE_FUNCTION_RUNTIME_NAME' => $runtime['name'] ?? '', 'APPWRITE_FUNCTION_RUNTIME_VERSION' => $runtime['version'] ?? '', + 'APPWRITE_VERSION' => APP_VERSION_STABLE ]); /** Execute function */ diff --git a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php index f824f47131..9a42d54434 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php @@ -445,6 +445,7 @@ class FunctionsCustomClientTest extends Scope $this->assertEquals('http', $output['APPWRITE_FUNCTION_TRIGGER']); $this->assertEquals('PHP', $output['APPWRITE_FUNCTION_RUNTIME_NAME']); $this->assertEquals('8.0', $output['APPWRITE_FUNCTION_RUNTIME_VERSION']); + $this->assertEquals(APP_VERSION_STABLE, $output['APPWRITE_VERSION']); $this->assertEquals('', $output['APPWRITE_FUNCTION_EVENT']); $this->assertEquals('foobar', $output['APPWRITE_FUNCTION_DATA']); $this->assertEquals($this->getUser()['$id'], $output['APPWRITE_FUNCTION_USER_ID']); @@ -829,6 +830,7 @@ class FunctionsCustomClientTest extends Scope $this->assertEquals('http', $output['APPWRITE_FUNCTION_TRIGGER']); $this->assertEquals('PHP', $output['APPWRITE_FUNCTION_RUNTIME_NAME']); $this->assertEquals('8.0', $output['APPWRITE_FUNCTION_RUNTIME_VERSION']); + $this->assertEquals(APP_VERSION_STABLE, $output['APPWRITE_VERSION']); $this->assertEquals('', $output['APPWRITE_FUNCTION_EVENT']); $this->assertEquals('foobar', $output['APPWRITE_FUNCTION_DATA']); $this->assertEquals($this->getUser()['$id'], $output['APPWRITE_FUNCTION_USER_ID']); diff --git a/tests/resources/functions/php-fn/index.php b/tests/resources/functions/php-fn/index.php index 3eea2d6fea..b353ad2ca4 100644 --- a/tests/resources/functions/php-fn/index.php +++ b/tests/resources/functions/php-fn/index.php @@ -10,6 +10,7 @@ return function ($context) { 'APPWRITE_FUNCTION_TRIGGER' => $context->req->headers['x-appwrite-trigger'] ?? '', 'APPWRITE_FUNCTION_RUNTIME_NAME' => \getenv('APPWRITE_FUNCTION_RUNTIME_NAME') ?: '', 'APPWRITE_FUNCTION_RUNTIME_VERSION' => \getenv('APPWRITE_FUNCTION_RUNTIME_VERSION') ?: '', + 'APPWRITE_VERSION' => \getenv('APPWRITE_VERSION') ?: '', 'APPWRITE_FUNCTION_EVENT' => $context->req->headers['x-appwrite-event'] ?? '', 'APPWRITE_FUNCTION_EVENT_DATA' => $context->req->bodyRaw ?? '', 'APPWRITE_FUNCTION_DATA' => $context->req->bodyRaw ?? '',