summaryrefslogtreecommitdiff
path: root/packages/backend/src/server
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-02-12 11:20:17 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-02-12 11:20:17 +0900
commitc5ef6bf38ada420e80091891f57beeaa6b87b68c (patch)
treed2f2f7b3c4586df1ab1af0cf61af2ca5571810cc /packages/backend/src/server
parentMerge branch 'develop' (diff)
parent13.6.1 (diff)
downloadmisskey-c5ef6bf38ada420e80091891f57beeaa6b87b68c.tar.gz
misskey-c5ef6bf38ada420e80091891f57beeaa6b87b68c.tar.bz2
misskey-c5ef6bf38ada420e80091891f57beeaa6b87b68c.zip
Merge branch 'develop'
Diffstat (limited to 'packages/backend/src/server')
-rw-r--r--packages/backend/src/server/ActivityPubServerService.ts8
-rw-r--r--packages/backend/src/server/FileServerService.ts6
-rw-r--r--packages/backend/src/server/api/ApiCallService.ts18
-rw-r--r--packages/backend/src/server/api/endpoints/users/lists/push.ts17
-rw-r--r--packages/backend/src/server/web/cli.js3
5 files changed, 42 insertions, 10 deletions
diff --git a/packages/backend/src/server/ActivityPubServerService.ts b/packages/backend/src/server/ActivityPubServerService.ts
index 186d3822d8..5480395eeb 100644
--- a/packages/backend/src/server/ActivityPubServerService.ts
+++ b/packages/backend/src/server/ActivityPubServerService.ts
@@ -441,6 +441,14 @@ export class ActivityPubServerService {
fastify.addContentTypeParser('application/activity+json', { parseAs: 'string' }, fastify.getDefaultJsonParser('ignore', 'ignore'));
fastify.addContentTypeParser('application/ld+json', { parseAs: 'string' }, fastify.getDefaultJsonParser('ignore', 'ignore'));
+ fastify.addHook('onRequest', (request, reply, done) => {
+ reply.header('Access-Control-Allow-Headers', 'Accept');
+ reply.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
+ reply.header('Access-Control-Allow-Origin', '*');
+ reply.header('Access-Control-Expose-Headers', 'Vary');
+ done();
+ });
+
//#region Routing
// inbox (limit: 64kb)
fastify.post('/inbox', { bodyLimit: 1024 * 64 }, async (request, reply) => await this.inbox(request, reply));
diff --git a/packages/backend/src/server/FileServerService.ts b/packages/backend/src/server/FileServerService.ts
index 49ded6c28e..f4bc568fdc 100644
--- a/packages/backend/src/server/FileServerService.ts
+++ b/packages/backend/src/server/FileServerService.ts
@@ -150,6 +150,12 @@ export class FileServerService {
file.cleanup();
return await reply.redirect(301, url.toString());
} else if (file.mime.startsWith('video/')) {
+ const externalThumbnail = this.videoProcessingService.getExternalVideoThumbnailUrl(file.url);
+ if (externalThumbnail) {
+ file.cleanup();
+ return await reply.redirect(301, externalThumbnail);
+ }
+
image = await this.videoProcessingService.generateVideoThumbnail(file.path);
}
}
diff --git a/packages/backend/src/server/api/ApiCallService.ts b/packages/backend/src/server/api/ApiCallService.ts
index 395a1c468a..2f3e7a44a9 100644
--- a/packages/backend/src/server/api/ApiCallService.ts
+++ b/packages/backend/src/server/api/ApiCallService.ts
@@ -227,15 +227,17 @@ export class ApiCallService implements OnApplicationShutdown {
// TODO: 毎リクエスト計算するのもあれだしキャッシュしたい
const factor = user ? (await this.roleService.getUserPolicies(user.id)).rateLimitFactor : 1;
- // Rate limit
- await this.rateLimiterService.limit(limit as IEndpointMeta['limit'] & { key: NonNullable<string> }, limitActor, factor).catch(err => {
- throw new ApiError({
- message: 'Rate limit exceeded. Please try again later.',
- code: 'RATE_LIMIT_EXCEEDED',
- id: 'd5826d14-3982-4d2e-8011-b9e9f02499ef',
- httpStatusCode: 429,
+ if (factor > 0) {
+ // Rate limit
+ await this.rateLimiterService.limit(limit as IEndpointMeta['limit'] & { key: NonNullable<string> }, limitActor, factor).catch(err => {
+ throw new ApiError({
+ message: 'Rate limit exceeded. Please try again later.',
+ code: 'RATE_LIMIT_EXCEEDED',
+ id: 'd5826d14-3982-4d2e-8011-b9e9f02499ef',
+ httpStatusCode: 429,
+ });
});
- });
+ }
}
if (ep.meta.requireCredential || ep.meta.requireModerator || ep.meta.requireAdmin) {
diff --git a/packages/backend/src/server/api/endpoints/users/lists/push.ts b/packages/backend/src/server/api/endpoints/users/lists/push.ts
index 3a079ee1ab..1c1fdc23f1 100644
--- a/packages/backend/src/server/api/endpoints/users/lists/push.ts
+++ b/packages/backend/src/server/api/endpoints/users/lists/push.ts
@@ -45,6 +45,12 @@ export const meta = {
code: 'YOU_HAVE_BEEN_BLOCKED',
id: '990232c5-3f9d-4d83-9f3f-ef27b6332a4b',
},
+
+ tooManyUsers: {
+ message: 'You can not push users any more.',
+ code: 'TOO_MANY_USERS',
+ id: '2dd9752e-a338-413d-8eec-41814430989b',
+ },
},
} as const;
@@ -110,8 +116,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
throw new ApiError(meta.errors.alreadyAdded);
}
- // Push the user
- await this.userListService.push(user, userList, me);
+ try {
+ await this.userListService.push(user, userList, me);
+ } catch (err) {
+ if (err instanceof UserListService.TooManyUsersError) {
+ throw new ApiError(meta.errors.tooManyUsers);
+ }
+
+ throw err;
+ }
});
}
}
diff --git a/packages/backend/src/server/web/cli.js b/packages/backend/src/server/web/cli.js
index 3dff1d4860..3467f7ac2a 100644
--- a/packages/backend/src/server/web/cli.js
+++ b/packages/backend/src/server/web/cli.js
@@ -11,6 +11,9 @@ window.onload = async () => {
// Send request
fetch(endpoint.indexOf('://') > -1 ? endpoint : `/api/${endpoint}`, {
+ headers: {
+ 'Content-Type': 'application/json'
+ },
method: 'POST',
body: JSON.stringify(data),
credentials: 'omit',