summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-02-11 17:58:04 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-02-11 17:58:04 +0900
commit1ce8da66c2a38fea9bf7aa314717412539fbab6d (patch)
tree3c02cc6ec9ce2ee8313943240e7d423573462244 /packages/backend/src/server/api
parentMerge branch 'develop' (diff)
parent12.106.0 (diff)
downloadmisskey-1ce8da66c2a38fea9bf7aa314717412539fbab6d.tar.gz
misskey-1ce8da66c2a38fea9bf7aa314717412539fbab6d.tar.bz2
misskey-1ce8da66c2a38fea9bf7aa314717412539fbab6d.zip
Merge branch 'develop'
Diffstat (limited to 'packages/backend/src/server/api')
-rw-r--r--packages/backend/src/server/api/endpoints/admin/resync-chart.ts22
-rw-r--r--packages/backend/src/server/api/endpoints/i/update.ts21
2 files changed, 20 insertions, 23 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/resync-chart.ts b/packages/backend/src/server/api/endpoints/admin/resync-chart.ts
deleted file mode 100644
index d80d2b0426..0000000000
--- a/packages/backend/src/server/api/endpoints/admin/resync-chart.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import define from '../../define';
-import { driveChart, notesChart, usersChart } from '@/services/chart/index';
-import { insertModerationLog } from '@/services/insert-moderation-log';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true,
- requireModerator: true,
-} as const;
-
-// eslint-disable-next-line import/no-default-export
-export default define(meta, async (ps, me) => {
- insertModerationLog(me, 'chartResync');
-
- driveChart.resync();
- notesChart.resync();
- usersChart.resync();
-
- // TODO: ユーザーごとのチャートもキューに入れて更新する
- // TODO: インスタンスごとのチャートもキューに入れて更新する
-});
diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts
index eb57aa2bfc..aec7bbd2e1 100644
--- a/packages/backend/src/server/api/endpoints/i/update.ts
+++ b/packages/backend/src/server/api/endpoints/i/update.ts
@@ -1,3 +1,4 @@
+const RE2 = require('re2');
import $ from 'cafy';
import * as mfm from 'mfm-js';
import { ID } from '@/misc/cafy-id';
@@ -117,7 +118,7 @@ export const meta = {
},
mutedWords: {
- validator: $.optional.arr($.arr($.str)),
+ validator: $.optional.arr($.either($.arr($.str.min(1)).min(1), $.str)),
},
mutedInstances: {
@@ -163,6 +164,12 @@ export const meta = {
code: 'NO_SUCH_PAGE',
id: '8e01b590-7eb9-431b-a239-860e086c408e',
},
+
+ invalidRegexp: {
+ message: 'Invalid Regular Expression.',
+ code: 'INVALID_REGEXP',
+ id: '0d786918-10df-41cd-8f33-8dec7d9a89a5',
+ }
},
res: {
@@ -191,6 +198,18 @@ export default define(meta, async (ps, _user, token) => {
if (ps.avatarId !== undefined) updates.avatarId = ps.avatarId;
if (ps.bannerId !== undefined) updates.bannerId = ps.bannerId;
if (ps.mutedWords !== undefined) {
+ // validate regular expression syntax
+ ps.mutedWords.filter(x => !Array.isArray(x)).forEach(x => {
+ const regexp = x.match(/^\/(.+)\/(.*)$/);
+ if (!regexp) throw new ApiError(meta.errors.invalidRegexp);
+
+ try {
+ new RE2(regexp[1], regexp[2]);
+ } catch (err) {
+ throw new ApiError(meta.errors.invalidRegexp);
+ }
+ });
+
profileUpdates.mutedWords = ps.mutedWords;
profileUpdates.enableWordMute = ps.mutedWords.length > 0;
}