enhance(server): productionじゃない限りレートリミットを無効に
This commit is contained in:
		@@ -4,12 +4,13 @@ import Redis from 'ioredis';
 | 
			
		||||
import { DI } from '@/di-symbols.js';
 | 
			
		||||
import type Logger from '@/logger.js';
 | 
			
		||||
import { LoggerService } from '@/core/LoggerService.js';
 | 
			
		||||
import type { IEndpointMeta } from './endpoints.js';
 | 
			
		||||
import { bindThis } from '@/decorators.js';
 | 
			
		||||
import type { IEndpointMeta } from './endpoints.js';
 | 
			
		||||
 | 
			
		||||
@Injectable()
 | 
			
		||||
export class RateLimiterService {
 | 
			
		||||
	private logger: Logger;
 | 
			
		||||
	private disabled = false;
 | 
			
		||||
 | 
			
		||||
	constructor(
 | 
			
		||||
		@Inject(DI.redis)
 | 
			
		||||
@@ -18,13 +19,17 @@ export class RateLimiterService {
 | 
			
		||||
		private loggerService: LoggerService,
 | 
			
		||||
	) {
 | 
			
		||||
		this.logger = this.loggerService.getLogger('limiter');
 | 
			
		||||
 | 
			
		||||
		if (process.env.NODE_ENV !== 'production') {
 | 
			
		||||
			this.disabled = true;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@bindThis
 | 
			
		||||
	public limit(limitation: IEndpointMeta['limit'] & { key: NonNullable<string> }, actor: string) {
 | 
			
		||||
		return new Promise<void>((ok, reject) => {
 | 
			
		||||
			if (process.env.NODE_ENV === 'test') ok();
 | 
			
		||||
			
 | 
			
		||||
			if (this.disabled) ok();
 | 
			
		||||
 | 
			
		||||
			// Short-term limit
 | 
			
		||||
			const min = (): void => {
 | 
			
		||||
				const minIntervalLimiter = new Limiter({
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user