🔉 feat: TTS/STT rate limiters (#2925)

* fix: remove double initialization of speech routes

* refactor(useMessageHelpers): more consistent latestMessage updates based on unique textKey and early returns when setting

* feat: TTS/STT rate limiters

* chore: remove console log

* fix: make modular chat true by default
This commit is contained in:
Danny Avila 2024-05-30 18:39:21 -04:00 committed by GitHub
parent 08d6bea359
commit 8318f26d66
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 265 additions and 35 deletions

View file

@ -1,5 +1,6 @@
const express = require('express');
const { uaParser, checkBan, requireJwtAuth, createFileLimiters } = require('~/server/middleware');
const { createTTSLimiters, createSTTLimiters } = require('~/server/middleware/speech');
const { createMulterInstance } = require('./multer');
const files = require('./files');
@ -15,8 +16,10 @@ const initialize = async () => {
router.use(uaParser);
/* Important: stt/tts routes must be added before the upload limiters */
router.use('/stt', stt);
router.use('/tts', tts);
const { sttIpLimiter, sttUserLimiter } = createSTTLimiters();
const { ttsIpLimiter, ttsUserLimiter } = createTTSLimiters();
router.use('/stt', sttIpLimiter, sttUserLimiter, stt);
router.use('/tts', ttsIpLimiter, ttsUserLimiter, tts);
const upload = await createMulterInstance();
const { fileUploadIpLimiter, fileUploadUserLimiter } = createFileLimiters();
@ -24,9 +27,6 @@ const initialize = async () => {
router.post('/', upload.single('file'));
router.post('/images', upload.single('file'));
router.use('/stt', stt);
router.use('/tts', tts);
router.use('/', files);
router.use('/images', images);
router.use('/images/avatar', avatar);