diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
new file mode 100644
index 0000000000..80d880244c
--- /dev/null
+++ b/.github/workflows/nightly.yml
@@ -0,0 +1,47 @@
+name: Nightly Security Scan
+on:
+ schedule:
+ - cron: '0 0 * * *' # 12am UTC daily runtime
+ workflow_dispatch:
+
+jobs:
+ scan-image:
+ name: Scan Docker Image
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out code
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+ - name: Build the Docker image
+ run: docker build . -t appwrite_image:latest
+ - name: Run Trivy vulnerability scanner on image
+ uses: aquasecurity/trivy-action@0.20.0
+ with:
+ image-ref: 'appwrite_image:latest'
+ format: 'sarif'
+ output: 'trivy-image-results.sarif'
+ ignore-unfixed: 'false'
+ severity: 'CRITICAL,HIGH'
+ - name: Upload Docker Image Scan Results
+ uses: github/codeql-action/upload-sarif@v2
+ with:
+ sarif_file: 'trivy-image-results.sarif'
+
+ scan-code:
+ name: Scan Code
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out code
+ uses: actions/checkout@v4
+ - name: Run Trivy vulnerability scanner on filesystem
+ uses: aquasecurity/trivy-action@0.20.0
+ with:
+ scan-type: 'fs'
+ format: 'sarif'
+ output: 'trivy-fs-results.sarif'
+ severity: 'CRITICAL,HIGH'
+ - name: Upload Code Scan Results
+ uses: github/codeql-action/upload-sarif@v2
+ with:
+ sarif_file: 'trivy-fs-results.sarif'
diff --git a/.github/workflows/pr-scan.yml b/.github/workflows/pr-scan.yml
index af510ccc3b..eded58985d 100644
--- a/.github/workflows/pr-scan.yml
+++ b/.github/workflows/pr-scan.yml
@@ -1,17 +1,22 @@
name: PR Security Scan
-on:
- pull_request:
+on:
+ pull_request_target:
types: [opened, synchronize, reopened]
- workflow_dispatch:
+
jobs:
scan:
runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: write
steps:
- - name: Check out code
+ - name: Check out code
uses: actions/checkout@v4
with:
+ ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
submodules: 'recursive'
+
- name: Build the Docker image
uses: docker/build-push-action@v5
with:
@@ -19,6 +24,7 @@ jobs:
push: false
load: true
tags: pr_image:${{ github.sha }}
+
- name: Run Trivy vulnerability scanner on image
uses: aquasecurity/trivy-action@0.20.0
with:
@@ -26,6 +32,7 @@ jobs:
format: 'json'
output: 'trivy-image-results.json'
severity: 'CRITICAL,HIGH'
+
- name: Run Trivy vulnerability scanner on source code
uses: aquasecurity/trivy-action@0.20.0
with:
@@ -34,10 +41,11 @@ jobs:
format: 'json'
output: 'trivy-fs-results.json'
severity: 'CRITICAL,HIGH'
- - name: Process and post Trivy scan results
+
+ - name: Process Trivy scan results
+ id: process-results
uses: actions/github-script@v7
with:
- github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const fs = require('fs');
let commentBody = '## Security Scan Results for PR\n\n';
@@ -79,9 +87,19 @@ jobs:
commentBody += 'Please contact the core team for assistance.';
}
- github.rest.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: commentBody
- });
+ core.setOutput('comment-body', commentBody);
+ - name: Find Comment
+ uses: peter-evans/find-comment@v3
+ id: fc
+ with:
+ issue-number: ${{ github.event.pull_request.number }}
+ comment-author: 'github-actions[bot]'
+ body-includes: Security Scan Results for PR
+
+ - name: Create or update comment
+ uses: peter-evans/create-or-update-comment@v3
+ with:
+ issue-number: ${{ github.event.pull_request.number }}
+ comment-id: ${{ steps.fc.outputs.comment-id }}
+ body: ${{ steps.process-results.outputs.comment-body }}
+ edit-mode: replace
diff --git a/README.md b/README.md
index 8305d78ef0..6db4416e58 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-> Our Appwrite Init event has concluded. You can check out all the new and upcoming features [on our Init website](https://appwrite.io/init) 🚀
+> Appwrite Init has concluded! You can check out all the latest announcements [on our Init website](https://appwrite.io/init) 🚀
@@ -134,6 +134,12 @@ Choose from one of the providers below:
Akamai Compute
+
+
+
+ AWS Marketplace
+
+ |
diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php
index 12b2793fb8..81665a9a16 100644
--- a/app/controllers/shared/api.php
+++ b/app/controllers/shared/api.php
@@ -602,10 +602,11 @@ App::shutdown()
/**
* Trigger functions.
*/
- $queueForFunctions
- ->from($queueForEvents)
- ->trigger();
-
+ if (!$queueForEvents->isPaused()) {
+ $queueForFunctions
+ ->from($queueForEvents)
+ ->trigger();
+ }
/**
* Trigger webhooks.
*/
diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml
index a79ebfcc52..4806dbad9e 100644
--- a/app/views/install/compose.phtml
+++ b/app/views/install/compose.phtml
@@ -676,6 +676,7 @@ $image = $this->getParam('image', '');
entrypoint: worker-usage-dump
<<: *x-logging
container_name: appwrite-worker-usage-dump
+ restart: unless-stopped
networks:
- appwrite
depends_on:
diff --git a/composer.json b/composer.json
index 9279f896a3..e467dc74b7 100644
--- a/composer.json
+++ b/composer.json
@@ -44,13 +44,13 @@
"ext-sockets": "*",
"appwrite/php-runtimes": "0.14.*",
"appwrite/php-clamav": "2.0.*",
- "utopia-php/abuse": "0.40.*",
+ "utopia-php/abuse": "0.42.*",
"utopia-php/analytics": "0.10.*",
- "utopia-php/audit": "0.41.*",
+ "utopia-php/audit": "0.42.*",
"utopia-php/cache": "0.10.*",
"utopia-php/cli": "0.15.*",
"utopia-php/config": "0.2.*",
- "utopia-php/database": "0.51.*",
+ "utopia-php/database": "0.52.*",
"utopia-php/domains": "0.5.*",
"utopia-php/dsn": "0.2.1",
"utopia-php/framework": "0.33.*",
diff --git a/composer.lock b/composer.lock
index 94e4954044..aa231c6814 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "cd0323e7303780f34b2f775a526de516",
+ "content-hash": "341116bfee981d2d1d6f3e611c3474aa",
"packages": [
{
"name": "adhocore/jwt",
@@ -1429,16 +1429,16 @@
},
{
"name": "utopia-php/abuse",
- "version": "0.40.0",
+ "version": "0.42.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/abuse.git",
- "reference": "69748a6741a9e44f0c9e430f3c2bd2b8a677c048"
+ "reference": "08cf17e7f4fd213966c8d8702e406f2269244f0f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/utopia-php/abuse/zipball/69748a6741a9e44f0c9e430f3c2bd2b8a677c048",
- "reference": "69748a6741a9e44f0c9e430f3c2bd2b8a677c048",
+ "url": "https://api.github.com/repos/utopia-php/abuse/zipball/08cf17e7f4fd213966c8d8702e406f2269244f0f",
+ "reference": "08cf17e7f4fd213966c8d8702e406f2269244f0f",
"shasum": ""
},
"require": {
@@ -1446,7 +1446,7 @@
"ext-pdo": "*",
"ext-redis": "*",
"php": ">=8.0",
- "utopia-php/database": "0.51.*"
+ "utopia-php/database": "0.52.*"
},
"require-dev": {
"laravel/pint": "1.5.*",
@@ -1474,9 +1474,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/abuse/issues",
- "source": "https://github.com/utopia-php/abuse/tree/0.40.0"
+ "source": "https://github.com/utopia-php/abuse/tree/0.42.0"
},
- "time": "2024-08-16T06:08:24+00:00"
+ "time": "2024-08-21T08:24:01+00:00"
},
{
"name": "utopia-php/analytics",
@@ -1526,21 +1526,21 @@
},
{
"name": "utopia-php/audit",
- "version": "0.41.0",
+ "version": "0.42.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/audit.git",
- "reference": "77f1d0a95ea791e38a38a8bc1b7728ffcedcd2d1"
+ "reference": "9dc168470625bcf11ff8cd9ab5660db09129f618"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/utopia-php/audit/zipball/77f1d0a95ea791e38a38a8bc1b7728ffcedcd2d1",
- "reference": "77f1d0a95ea791e38a38a8bc1b7728ffcedcd2d1",
+ "url": "https://api.github.com/repos/utopia-php/audit/zipball/9dc168470625bcf11ff8cd9ab5660db09129f618",
+ "reference": "9dc168470625bcf11ff8cd9ab5660db09129f618",
"shasum": ""
},
"require": {
"php": ">=8.0",
- "utopia-php/database": "0.51.*"
+ "utopia-php/database": "0.52.*"
},
"require-dev": {
"laravel/pint": "1.5.*",
@@ -1567,9 +1567,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/audit/issues",
- "source": "https://github.com/utopia-php/audit/tree/0.41.0"
+ "source": "https://github.com/utopia-php/audit/tree/0.42.0"
},
- "time": "2024-08-16T06:08:00+00:00"
+ "time": "2024-08-21T08:24:08+00:00"
},
{
"name": "utopia-php/cache",
@@ -1723,16 +1723,16 @@
},
{
"name": "utopia-php/database",
- "version": "0.51.1",
+ "version": "0.52.1",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/database.git",
- "reference": "845783a54cced784e00db084a29486fdb96d3d58"
+ "reference": "d22a316a010699c5ebb4768c1020167c192b9c6b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/utopia-php/database/zipball/845783a54cced784e00db084a29486fdb96d3d58",
- "reference": "845783a54cced784e00db084a29486fdb96d3d58",
+ "url": "https://api.github.com/repos/utopia-php/database/zipball/d22a316a010699c5ebb4768c1020167c192b9c6b",
+ "reference": "d22a316a010699c5ebb4768c1020167c192b9c6b",
"shasum": ""
},
"require": {
@@ -1744,14 +1744,14 @@
"utopia-php/mongo": "0.3.*"
},
"require-dev": {
- "fakerphp/faker": "^1.14",
- "laravel/pint": "1.13.*",
- "pcov/clobber": "^2.0",
- "phpstan/phpstan": "1.10.*",
- "phpunit/phpunit": "^9.4",
- "rregeer/phpunit-coverage-check": "^0.3.1",
- "swoole/ide-helper": "4.8.0",
- "utopia-php/cli": "^0.14.0"
+ "fakerphp/faker": "1.23.*",
+ "laravel/pint": "1.17.*",
+ "pcov/clobber": "2.0.*",
+ "phpstan/phpstan": "1.11.*",
+ "phpunit/phpunit": "9.6.*",
+ "rregeer/phpunit-coverage-check": "0.3.*",
+ "swoole/ide-helper": "5.1.3",
+ "utopia-php/cli": "0.14.*"
},
"type": "library",
"autoload": {
@@ -1773,9 +1773,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/database/issues",
- "source": "https://github.com/utopia-php/database/tree/0.51.1"
+ "source": "https://github.com/utopia-php/database/tree/0.52.1"
},
- "time": "2024-08-16T10:54:25+00:00"
+ "time": "2024-08-23T02:43:43+00:00"
},
{
"name": "utopia-php/domains",
diff --git a/public/images/integrations/aws-logo.svg b/public/images/integrations/aws-logo.svg
new file mode 100644
index 0000000000..3ab41cde07
--- /dev/null
+++ b/public/images/integrations/aws-logo.svg
@@ -0,0 +1,38 @@
+
+
+