mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Compare commits
200
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddb86127b7 | ||
|
|
ea0a5a186c | ||
|
|
928590b175 | ||
|
|
7656ba11ff | ||
|
|
7ae7ccbe49 | ||
|
|
6d376df00a | ||
|
|
0e03842173 | ||
|
|
aa8af5a213 | ||
|
|
f1a3cd13ff | ||
|
|
00989fcdde | ||
|
|
c677374a11 | ||
|
|
3f0a8fbe21 | ||
|
|
7d5ae2f1c3 | ||
|
|
0f8ad539ad | ||
|
|
9839a4ef36 | ||
|
|
e91c762953 | ||
|
|
3f6368f046 | ||
|
|
d802639b0e | ||
|
|
3d333633e4 | ||
|
|
900f64bf8d | ||
|
|
dad8f597ca | ||
|
|
90f18c57ac | ||
|
|
6e7dd26f75 | ||
|
|
9151abc951 | ||
|
|
714f6b62ac | ||
|
|
316693798e | ||
|
|
c7f92fbb02 | ||
|
|
e715f9e90c | ||
|
|
f6ea6d2fc5 | ||
|
|
e626c2ad45 | ||
|
|
3b19ef6b1e | ||
|
|
c1a3b29a97 | ||
|
|
aa2385ffb9 | ||
|
|
8b99517dd0 | ||
|
|
33037a3ae5 | ||
|
|
b0852aeca3 | ||
|
|
09da4378c6 | ||
|
|
a85b43654c | ||
|
|
ad8693c018 | ||
|
|
a0280e3c43 | ||
|
|
76216c3bf6 | ||
|
|
c8c4576bbc | ||
|
|
dac8766eb4 | ||
|
|
f6de256220 | ||
|
|
2f9b44930f | ||
|
|
627df0d11f | ||
|
|
fcd323baa4 | ||
|
|
0009b73b06 | ||
|
|
b5efbdbb0f | ||
|
|
a6e9d58f12 | ||
|
|
b496bcb6df | ||
|
|
030e26b223 | ||
|
|
9e69e41e02 | ||
|
|
773fa6ffd6 | ||
|
|
21bff77c50 | ||
|
|
472f167b4a | ||
|
|
f86bf6fdfd | ||
|
|
f3315c69a0 | ||
|
|
76701b0cca | ||
|
|
2cc73151d1 | ||
|
|
39e237dfb4 | ||
|
|
c624d94c45 | ||
|
|
b22188251d | ||
|
|
68d017f452 | ||
|
|
2ed854893d | ||
|
|
eb083a7e10 | ||
|
|
2076a429c6 | ||
|
|
59766b6ce6 | ||
|
|
36bff12939 | ||
|
|
b4c986839e | ||
|
|
d425c9f071 | ||
|
|
e219ee2d84 | ||
|
|
e66d0216c6 | ||
|
|
e3e20d2923 | ||
|
|
e0c503e249 | ||
|
|
c3a8db0ea4 | ||
|
|
228cabab3a | ||
|
|
2b3e7f67a4 | ||
|
|
c2d5e8ec11 | ||
|
|
028c5366c2 | ||
|
|
cca0c3ae45 | ||
|
|
0b85a64dab | ||
|
|
4eafce998d | ||
|
|
4963d98331 | ||
|
|
1633acbdc3 | ||
|
|
9e07579a52 | ||
|
|
16a2d61874 | ||
|
|
75e8635563 | ||
|
|
83e94629dc | ||
|
|
b00b609621 | ||
|
|
cdbd72ec3d | ||
|
|
a6104ad8cd | ||
|
|
6e3160c502 | ||
|
|
104ec3188f | ||
|
|
4e37699e25 | ||
|
|
118252d3af | ||
|
|
509f06c2f0 | ||
|
|
12458af84a | ||
|
|
66bfc5748b | ||
|
|
cf32ba0351 | ||
|
|
b47a4703c4 | ||
|
|
4ceff430f9 | ||
|
|
5603516d88 | ||
|
|
013d95ebf3 | ||
|
|
eca8d116c2 | ||
|
|
8210808db0 | ||
|
|
4a003f2826 | ||
|
|
54f39494c0 | ||
|
|
ae4edf119f | ||
|
|
7be7b3389c | ||
|
|
54555cb3cd | ||
|
|
a56293e018 | ||
|
|
f8b2878943 | ||
|
|
a0c58317bd | ||
|
|
e687c64ca0 | ||
|
|
3ff5472543 | ||
|
|
d979c0c914 | ||
|
|
a41b767400 | ||
|
|
ba0a495d3c | ||
|
|
6435fa84af | ||
|
|
8743330ad8 | ||
|
|
a37aa5551a | ||
|
|
b2521cf8a3 | ||
|
|
c853b6593a | ||
|
|
d980711c30 | ||
|
|
7ab55e0694 | ||
|
|
db244937ff | ||
|
|
bcb593e6df | ||
|
|
9bfab69062 | ||
|
|
5451a9cd23 | ||
|
|
5ea83b8827 | ||
|
|
6fe7d92fea | ||
|
|
28b02a4ba8 | ||
|
|
f4d456fa4c | ||
|
|
687252b15b | ||
|
|
f21b1c87a6 | ||
|
|
ccbde6c470 | ||
|
|
f189c41421 | ||
|
|
5fcb990b1c | ||
|
|
30bd25d134 | ||
|
|
36d2b84301 | ||
|
|
a80b921927 | ||
|
|
1373d62c52 | ||
|
|
d0481482ae | ||
|
|
78b9be2e78 | ||
|
|
a3b7cf84d5 | ||
|
|
add6a60af4 | ||
|
|
4543c182b5 | ||
|
|
051d6e580c | ||
|
|
36e4c8c399 | ||
|
|
7921bd62d9 | ||
|
|
74ecc20751 | ||
|
|
d477de256a | ||
|
|
cffbc77d05 | ||
|
|
16fe23244b | ||
|
|
7d7b2c7544 | ||
|
|
d2c66894fd | ||
|
|
1cd3e69161 | ||
|
|
5850caff35 | ||
|
|
0cce55565a | ||
|
|
6b429c9da9 | ||
|
|
8f6151a575 | ||
|
|
3f19fac0b4 | ||
|
|
08e5ed6a8a | ||
|
|
e4d554689f | ||
|
|
19912c87c9 | ||
|
|
0de1e64958 | ||
|
|
aa0a795ec6 | ||
|
|
d1b062a418 | ||
|
|
812d8a34cf | ||
|
|
ec02d881c9 | ||
|
|
b706571a21 | ||
|
|
134f90a464 | ||
|
|
eb553fa96c | ||
|
|
fd8b7eb6fc | ||
|
|
501411f5b5 | ||
|
|
bee844fcdb | ||
|
|
d18a67e6d8 | ||
|
|
25d44b5b4c | ||
|
|
ee7de0cb41 | ||
|
|
28642b9f04 | ||
|
|
c18308c024 | ||
|
|
1eafbf2ee2 | ||
|
|
b98bcdd4a1 | ||
|
|
4c8cd5b6c6 | ||
|
|
5b37a91b46 | ||
|
|
52647cef23 | ||
|
|
11ec31aefb | ||
|
|
73ca1efbeb | ||
|
|
340aa48d93 | ||
|
|
8ff72b341e | ||
|
|
a23402075e | ||
|
|
6b86ed0117 | ||
|
|
e2a45cec8e | ||
|
|
ec2eb2bfa3 | ||
|
|
10adfc5124 | ||
|
|
5f7aae0e60 | ||
|
|
4952608b8d | ||
|
|
42ebefef92 | ||
|
|
03d33601b0 |
@@ -107,4 +107,4 @@ _APP_MESSAGE_SMS_TEST_DSN=
|
||||
_APP_MESSAGE_EMAIL_TEST_DSN=
|
||||
_APP_MESSAGE_PUSH_TEST_DSN=
|
||||
_APP_WEBHOOK_MAX_FAILED_ATTEMPTS=10
|
||||
_APP_PROJECT_REGIONS=default
|
||||
_APP_PROJECT_REGIONS=default
|
||||
Submodule
+1
Submodule app/console added at 0959b594b3
@@ -250,7 +250,7 @@ App::post('/v1/functions')
|
||||
|
||||
$schedule = Authorization::skip(
|
||||
fn () => $dbForConsole->createDocument('schedules', new Document([
|
||||
'region' => System::getEnv('_APP_REGION', 'default'), // Todo replace with projects region
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'function',
|
||||
'resourceId' => $function->getId(),
|
||||
'resourceInternalId' => $function->getInternalId(),
|
||||
@@ -1957,7 +1957,7 @@ App::post('/v1/functions/:functionId/executions')
|
||||
];
|
||||
|
||||
$schedule = $dbForConsole->createDocument('schedules', new Document([
|
||||
'region' => System::getEnv('_APP_REGION', 'default'),
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => ScheduleExecutions::getSupportedResource(),
|
||||
'resourceId' => $execution->getId(),
|
||||
'resourceInternalId' => $execution->getInternalId(),
|
||||
|
||||
@@ -2743,7 +2743,7 @@ App::post('/v1/messaging/messages/email')
|
||||
break;
|
||||
case MessageStatus::SCHEDULED:
|
||||
$schedule = $dbForConsole->createDocument('schedules', new Document([
|
||||
'region' => System::getEnv('_APP_REGION', 'default'),
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getInternalId(),
|
||||
@@ -2860,7 +2860,7 @@ App::post('/v1/messaging/messages/sms')
|
||||
break;
|
||||
case MessageStatus::SCHEDULED:
|
||||
$schedule = $dbForConsole->createDocument('schedules', new Document([
|
||||
'region' => System::getEnv('_APP_REGION', 'default'),
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getInternalId(),
|
||||
@@ -3757,7 +3757,7 @@ App::patch('/v1/messaging/messages/push/:messageId')
|
||||
|
||||
if (\is_null($currentScheduledAt) && !\is_null($scheduledAt)) {
|
||||
$schedule = $dbForConsole->createDocument('schedules', new Document([
|
||||
'region' => System::getEnv('_APP_REGION', 'default'),
|
||||
'region' => $project->getAttribute('region'),
|
||||
'resourceType' => 'message',
|
||||
'resourceId' => $message->getId(),
|
||||
'resourceInternalId' => $message->getInternalId(),
|
||||
|
||||
@@ -128,6 +128,15 @@ App::post('/v1/projects')
|
||||
|
||||
$databases = Config::getParam('pools-database', []);
|
||||
|
||||
|
||||
if ($region !== 'default') {
|
||||
$databaseKeys = System::getEnv('_APP_DATABASE_KEYS', '');
|
||||
$keys = explode(',', $databaseKeys);
|
||||
$databases = array_filter($keys, function ($value) use ($region) {
|
||||
return str_contains($value, $region);
|
||||
});
|
||||
}
|
||||
|
||||
$databaseOverride = System::getEnv('_APP_DATABASE_OVERRIDE');
|
||||
$index = \array_search($databaseOverride, $databases);
|
||||
if ($index !== false) {
|
||||
@@ -195,17 +204,21 @@ App::post('/v1/projects')
|
||||
$dsn = new DSN('mysql://' . $dsn);
|
||||
}
|
||||
|
||||
$adapter = $pools->get($dsn->getHost())->pop()->getResource();
|
||||
$dbForProject = new Database($adapter, $cache);
|
||||
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
|
||||
$sharedTablesV1 = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES_V1', ''));
|
||||
|
||||
$projectTables = !\in_array($dsn->getHost(), $sharedTables);
|
||||
$sharedTablesV1 = \in_array($dsn->getHost(), $sharedTablesV1);
|
||||
$sharedTablesV2 = !$projectTables && !$sharedTablesV1;
|
||||
$sharedTables = $sharedTablesV1 || $sharedTablesV2;
|
||||
|
||||
var_dump($dsn->getHost());
|
||||
var_dump($sharedTables);
|
||||
var_dump($projectTables);
|
||||
var_dump($sharedTablesV1);
|
||||
var_dump($sharedTablesV2);
|
||||
if (!$sharedTablesV2) {
|
||||
$adapter = $pools->get($dsn->getHost())->pop()->getResource();
|
||||
$dbForProject = new Database($adapter, $cache);
|
||||
|
||||
if ($sharedTables) {
|
||||
$dbForProject
|
||||
->setSharedTables(true)
|
||||
@@ -226,6 +239,8 @@ App::post('/v1/projects')
|
||||
$create = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($create || $projectTables) {
|
||||
$audit = new Audit($dbForProject);
|
||||
$audit->setup();
|
||||
|
||||
@@ -449,7 +449,7 @@ App::init()
|
||||
});
|
||||
|
||||
App::init()
|
||||
->groups(['api', 'web'])
|
||||
->groups(['api'])
|
||||
->inject('utopia')
|
||||
->inject('swooleRequest')
|
||||
->inject('request')
|
||||
|
||||
+7
-1
@@ -264,9 +264,15 @@ $http->on(Constant::EVENT_START, function (Server $http) use ($payloadSize, $reg
|
||||
$sharedTablesV1 = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES_V1', ''));
|
||||
$sharedTablesV2 = \array_diff($sharedTables, $sharedTablesV1);
|
||||
|
||||
$region = System::getEnv('_APP_REGION', 'fra');
|
||||
$cache = $app->getResource('cache');
|
||||
|
||||
foreach ($sharedTablesV2 as $hostname) {
|
||||
$regionDatabases = \array_filter(
|
||||
$sharedTablesV2,
|
||||
fn ($hostname) => \str_contains($hostname, $region)
|
||||
);
|
||||
|
||||
foreach ($regionDatabases as $hostname) {
|
||||
$adapter = $pools
|
||||
->get($hostname)
|
||||
->pop()
|
||||
|
||||
@@ -1334,6 +1334,10 @@ App::setResource('project', function ($dbForConsole, $request, $console) {
|
||||
|
||||
$project = Authorization::skip(fn () => $dbForConsole->getDocument('projects', $projectId));
|
||||
|
||||
if ($project->getAttribute('region') !== System::getEnv('_APP_REGION')) {
|
||||
throw new Exception(Exception::GENERAL_ACCESS_FORBIDDEN, 'Project is not accessible in this region. Please make sure you are using the correct endpoint');
|
||||
}
|
||||
|
||||
return $project;
|
||||
}, ['dbForConsole', 'request', 'console']);
|
||||
|
||||
@@ -1397,6 +1401,7 @@ App::setResource('console', function () {
|
||||
'githubSecret' => System::getEnv('_APP_CONSOLE_GITHUB_SECRET', ''),
|
||||
'githubAppid' => System::getEnv('_APP_CONSOLE_GITHUB_APP_ID', '')
|
||||
],
|
||||
'region' => System::getEnv('_APP_REGION', 'default')
|
||||
]);
|
||||
}, []);
|
||||
|
||||
|
||||
Generated
+2
-2
@@ -8557,7 +8557,7 @@
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": {},
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
@@ -8581,5 +8581,5 @@
|
||||
"platform-overrides": {
|
||||
"php": "8.3"
|
||||
},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.2.0"
|
||||
}
|
||||
|
||||
@@ -195,6 +195,7 @@ services:
|
||||
- _APP_DATABASE_SHARED_TABLES
|
||||
- _APP_DATABASE_SHARED_TABLES_V1
|
||||
- _APP_DATABASE_SHARED_NAMESPACE
|
||||
- _APP_DATABASE_KEYS
|
||||
|
||||
appwrite-console:
|
||||
<<: *x-logging
|
||||
|
||||
Reference in New Issue
Block a user