summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2019-10-01 01:46:31 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-10-01 01:46:31 +0900
commit6ba5968861c4d38f699f8589f99b791cc1470e43 (patch)
treea6c503640a06b26da41b37e3fa869100d871b09b /src/server/api
parentFix typo: accpet -> accept (#5469) (diff)
downloadmisskey-6ba5968861c4d38f699f8589f99b791cc1470e43.tar.gz
misskey-6ba5968861c4d38f699f8589f99b791cc1470e43.tar.bz2
misskey-6ba5968861c4d38f699f8589f99b791cc1470e43.zip
Apply DB limit to the maximum note text length (#5465)
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/endpoints/admin/update-meta.ts3
-rw-r--r--src/server/api/endpoints/meta.ts3
-rw-r--r--src/server/api/endpoints/notes/create.ts5
3 files changed, 8 insertions, 3 deletions
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index 1d6973e7ac..05a1e25c01 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -3,6 +3,7 @@ import define from '../../define';
import { getConnection } from 'typeorm';
import { Meta } from '../../../../models/entities/meta';
import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import { DB_MAX_NOTE_TEXT_LENGTH } from '../../../../misc/hard-limits';
export const meta = {
desc: {
@@ -121,7 +122,7 @@ export const meta = {
},
maxNoteTextLength: {
- validator: $.optional.num.min(0),
+ validator: $.optional.num.min(0).max(DB_MAX_NOTE_TEXT_LENGTH),
desc: {
'ja-JP': '投稿の最大文字数'
}
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index c07a1c07bb..0b56a9d4ef 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -7,6 +7,7 @@ import * as pkg from '../../../../package.json';
import { Emojis } from '../../../models';
import { getConnection } from 'typeorm';
import redis from '../../../db/redis';
+import { DB_MAX_NOTE_TEXT_LENGTH } from '../../../misc/hard-limits';
export const meta = {
stability: 'stable',
@@ -138,7 +139,7 @@ export default define(meta, async (ps, me) => {
bannerUrl: instance.bannerUrl,
errorImageUrl: instance.errorImageUrl,
iconUrl: instance.iconUrl,
- maxNoteTextLength: instance.maxNoteTextLength,
+ maxNoteTextLength: Math.min(instance.maxNoteTextLength, DB_MAX_NOTE_TEXT_LENGTH),
emojis: emojis.map(e => ({
id: e.id,
aliases: e.aliases,
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index 1650de9071..6e392c03f1 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -10,6 +10,7 @@ import { User } from '../../../../models/entities/user';
import { Users, DriveFiles, Notes } from '../../../../models';
import { DriveFile } from '../../../../models/entities/drive-file';
import { Note } from '../../../../models/entities/note';
+import { DB_MAX_NOTE_TEXT_LENGTH } from '../../../../misc/hard-limits';
let maxNoteTextLength = 1000;
@@ -55,7 +56,9 @@ export const meta = {
text: {
validator: $.optional.nullable.str.pipe(text =>
- length(text.trim()) <= maxNoteTextLength && text.trim() != ''
+ text.trim() != ''
+ && length(text.trim()) <= maxNoteTextLength
+ && Array.from(text.trim()).length <= DB_MAX_NOTE_TEXT_LENGTH // DB limit
),
default: null as any,
desc: {