enhance(server): add rate limits for some endpoints
This commit is contained in:
		| @@ -5,15 +5,15 @@ import type { UsersRepository, BlockingsRepository } from '@/models/index.js'; | ||||
| import { UserEntityService } from '@/core/entities/UserEntityService.js'; | ||||
| import { UserBlockingService } from '@/core/UserBlockingService.js'; | ||||
| import { DI } from '@/di-symbols.js'; | ||||
| import { ApiError } from '../../error.js'; | ||||
| import { GetterService } from '@/server/api/GetterService.js'; | ||||
| import { ApiError } from '../../error.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['account'], | ||||
|  | ||||
| 	limit: { | ||||
| 		duration: ms('1hour'), | ||||
| 		max: 100, | ||||
| 		max: 20, | ||||
| 	}, | ||||
|  | ||||
| 	requireCredential: true, | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import ms from 'ms'; | ||||
| import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| import type { ChannelsRepository, DriveFilesRepository } from '@/models/index.js'; | ||||
| import type { Channel } from '@/models/entities/Channel.js'; | ||||
| @@ -14,6 +15,11 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:channels', | ||||
|  | ||||
| 	limit: { | ||||
| 		duration: ms('1hour'), | ||||
| 		max: 10, | ||||
| 	}, | ||||
|  | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
|   | ||||
| @@ -1,10 +1,11 @@ | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import ms from 'ms'; | ||||
| import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| import { IdService } from '@/core/IdService.js'; | ||||
| import { DI } from '@/di-symbols.js'; | ||||
| import type { ClipNotesRepository, ClipsRepository } from '@/models/index.js'; | ||||
| import { ApiError } from '../../error.js'; | ||||
| import { GetterService } from '@/server/api/GetterService.js'; | ||||
| import { ApiError } from '../../error.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['account', 'notes', 'clips'], | ||||
| @@ -13,6 +14,11 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:account', | ||||
|  | ||||
| 	limit: { | ||||
| 		duration: ms('1hour'), | ||||
| 		max: 20, | ||||
| 	}, | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchClip: { | ||||
| 			message: 'No such clip.', | ||||
|   | ||||
| @@ -1,12 +1,13 @@ | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import ms from 'ms'; | ||||
| import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| import { IdService } from '@/core/IdService.js'; | ||||
| import type { MutingsRepository } from '@/models/index.js'; | ||||
| import type { Muting } from '@/models/entities/Muting.js'; | ||||
| import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||
| import { DI } from '@/di-symbols.js'; | ||||
| import { ApiError } from '../../error.js'; | ||||
| import { GetterService } from '@/server/api/GetterService.js'; | ||||
| import { ApiError } from '../../error.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['account'], | ||||
| @@ -15,6 +16,11 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:mutes', | ||||
|  | ||||
| 	limit: { | ||||
| 		duration: ms('1hour'), | ||||
| 		max: 20, | ||||
| 	}, | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchUser: { | ||||
| 			message: 'No such user.', | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import ms from 'ms'; | ||||
| import type { NoteFavoritesRepository } from '@/models/index.js'; | ||||
| import { IdService } from '@/core/IdService.js'; | ||||
| import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| @@ -13,6 +14,11 @@ export const meta = { | ||||
|  | ||||
| 	kind: 'write:favorites', | ||||
|  | ||||
| 	limit: { | ||||
| 		duration: ms('1hour'), | ||||
| 		max: 20, | ||||
| 	}, | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchNote: { | ||||
| 			message: 'No such note.', | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import ms from 'ms'; | ||||
| import type { UserListsRepository, UserListJoiningsRepository, BlockingsRepository } from '@/models/index.js'; | ||||
| import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| import { GetterService } from '@/server/api/GetterService.js'; | ||||
| @@ -15,6 +16,11 @@ export const meta = { | ||||
|  | ||||
| 	description: 'Add a user to an existing list.', | ||||
|  | ||||
| 	limit: { | ||||
| 		duration: ms('1hour'), | ||||
| 		max: 30, | ||||
| 	}, | ||||
|  | ||||
| 	errors: { | ||||
| 		noSuchList: { | ||||
| 			message: 'No such list.', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo