diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index aed3adc01..fea28fa2a 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.29.9", + "version": "2.29.10", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index 450e605c3..97074f128 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -348,7 +348,7 @@ export class ContestDetailProblemSubmitHandler extends ContestProblemHandler { if (this.domain.langs && !this.domain.langs.includes(lang)) { throw new BadRequestError('Language not allowed'); } - await this.limitRate('add_record', 60, 10); + await this.limitRate('add_record', 60, system.get('limit.submission')); const rid = await record.add(domainId, pid, this.user._id, lang, code, true, pretest ? input : { type: document.TYPE_CONTEST, tid, diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index 9203d415b..e4953fc16 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -223,7 +223,7 @@ class HomeworkDetailProblemSubmitHandler extends HomeworkDetailProblemHandler { if (this.domain.langs && !this.domain.langs.includes(lang)) { throw new BadRequestError('Language not allowed'); } - await this.limitRate('add_record', 60, 5); + await this.limitRate('add_record', 60, system.get('limit.submission')); const rid = await record.add(domainId, pid, this.user._id, lang, code, true, pretest ? input : { type: document.TYPE_HOMEWORK, tid, diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index f123907bd..ed6cd8638 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -252,7 +252,7 @@ export class ProblemSubmitHandler extends ProblemDetailHandler { if (this.domain.langs && !this.domain.langs.includes(lang)) { throw new BadRequestError('Language not allowed'); } - await this.limitRate('add_record', 60, 5); + await this.limitRate('add_record', 60, system.get('limit.submission')); const rid = await record.add(domainId, this.pdoc.docId, this.user._id, lang, code, true, pretest ? input : undefined); const rdoc = await record.get(domainId, rid); if (!pretest) { @@ -273,7 +273,7 @@ export class ProblemPretestHandler extends ProblemDetailHandler { @param('code', Types.Content) @param('input', Types.Content, true) async post(domainId: string, lang: string, code: string, input = '') { - await this.limitRate('add_record', 60, 5); + await this.limitRate('do_pretest', 60, system.get('limit.pretest')); const rid = await record.add( domainId, this.pdoc.docId, this.user._id, lang, code, true, input, diff --git a/packages/hydrooj/src/model/setting.ts b/packages/hydrooj/src/model/setting.ts index 519599f29..115b5cfb9 100644 --- a/packages/hydrooj/src/model/setting.ts +++ b/packages/hydrooj/src/model/setting.ts @@ -187,6 +187,8 @@ SystemSetting( Setting('setting_limits', 'limit.problem_files_size_max', 128 * 1024 * 1024, 'number', 'limit.problem_files_size_max', 'Max files size per problem'), Setting('setting_limits', 'limit.user_files', 100, 'number', 'limit.user_files', 'Max files for user'), Setting('setting_limits', 'limit.user_files_size', 128 * 1024 * 1024, 'number', 'limit.user_files_size', 'Max total file size for user'), + Setting('setting_limits', 'limit.submisson', 30, 'number', 'limit.submission', 'Max submission count per minute'), + Setting('setting_limits', 'limit.pretest', 60, 'number', 'limit.pretest', 'Max pretest count per minute'), Setting('setting_basic', 'default.priv', builtin.PRIV.PRIV_DEFAULT, 'number', 'default.priv', 'Default Privilege', FLAG_PRO), Setting('setting_basic', 'problem.categories', builtin.CATEGORIES, 'yaml', 'problem.categories', 'Problem Categories'), Setting('setting_basic', 'pagination.problem', 100, 'number', 'pagination.problem', 'Problems per page'),