diff --git a/CHANGELOG.md b/CHANGELOG.md index 30bffd3613..c2d6a3e8c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,10 +12,13 @@ ## 12.x.x (unreleased) ### Improvements -- リモートユーザーのDeleteアクティビティに対応 +- ActivityPub: リモートユーザーのDeleteアクティビティに対応 +- ActivityPub: add resolver check for blocked instance - UIの改善 ### Bugfixes +- アカウントデータのエクスポート/インポート処理ができない問題を修正 +- アンテナの既読が付かない問題を修正 - popupで設定ページを表示すると、アカウントの削除ページにアクセスすることができない問題を修正 ## 12.90.1 (2021/09/05) diff --git a/README.md b/README.md index 816765af67..0aae1b3329 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,12 @@ Related projects - [misskey.js](https://github.com/misskey-dev/misskey.js) - Misskey SDK for JavaScript - [mfm.js](https://github.com/misskey-dev/mfm.js) - MFM parser +Sponsors +---------------------------------------------------------------- +
+ RSS3 +
+ :heart: Backers ---------------------------------------------------------------- diff --git a/src/client/pages/timeline.vue b/src/client/pages/timeline.vue index 125191223c..4b5b90e6ae 100644 --- a/src/client/pages/timeline.vue +++ b/src/client/pages/timeline.vue @@ -51,6 +51,18 @@ export default defineComponent({ icon: this.src === 'local' ? 'fas fa-comments' : this.src === 'social' ? 'fas fa-share-alt' : this.src === 'global' ? 'fas fa-globe' : 'fas fa-home', bg: 'var(--bg)', actions: [{ + icon: 'fas fa-list-ul', + text: this.$ts.lists, + handler: this.chooseList + }, { + icon: 'fas fa-satellite', + text: this.$ts.antennas, + handler: this.chooseAntenna + }, { + icon: 'fas fa-satellite-dish', + text: this.$ts.channel, + handler: this.chooseChannel + }, { icon: 'fas fa-calendar-alt', text: this.$ts.jumpToSpecifiedDate, handler: this.timetravel diff --git a/src/queue/processors/db/export-blocking.ts b/src/queue/processors/db/export-blocking.ts index a0fc385006..8b8aa259d4 100644 --- a/src/queue/processors/db/export-blocking.ts +++ b/src/queue/processors/db/export-blocking.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import addFile from '@/services/drive/add-file'; -import dateFormat from 'dateformat'; +import * as dateFormat from 'dateformat'; import { getFullApAccount } from '@/misc/convert-host'; import { Users, Blockings } from '@/models/index'; import { MoreThan } from 'typeorm'; diff --git a/src/queue/processors/db/export-following.ts b/src/queue/processors/db/export-following.ts index 3612150363..a0ecf5f560 100644 --- a/src/queue/processors/db/export-following.ts +++ b/src/queue/processors/db/export-following.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import addFile from '@/services/drive/add-file'; -import dateFormat from 'dateformat'; +import * as dateFormat from 'dateformat'; import { getFullApAccount } from '@/misc/convert-host'; import { Users, Followings } from '@/models/index'; import { MoreThan } from 'typeorm'; diff --git a/src/queue/processors/db/export-mute.ts b/src/queue/processors/db/export-mute.ts index 70b2272cdb..d5976f7d56 100644 --- a/src/queue/processors/db/export-mute.ts +++ b/src/queue/processors/db/export-mute.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import addFile from '@/services/drive/add-file'; -import dateFormat from 'dateformat'; +import * as dateFormat from 'dateformat'; import { getFullApAccount } from '@/misc/convert-host'; import { Users, Mutings } from '@/models/index'; import { MoreThan } from 'typeorm'; diff --git a/src/queue/processors/db/export-notes.ts b/src/queue/processors/db/export-notes.ts index 3f146aff1b..49850aa706 100644 --- a/src/queue/processors/db/export-notes.ts +++ b/src/queue/processors/db/export-notes.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import addFile from '@/services/drive/add-file'; -import dateFormat from 'dateformat'; +import * as dateFormat from 'dateformat'; import { Users, Notes, Polls } from '@/models/index'; import { MoreThan } from 'typeorm'; import { Note } from '@/models/entities/note'; diff --git a/src/queue/processors/db/export-user-lists.ts b/src/queue/processors/db/export-user-lists.ts index 89bbd5af18..8a86c4df5d 100644 --- a/src/queue/processors/db/export-user-lists.ts +++ b/src/queue/processors/db/export-user-lists.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import addFile from '@/services/drive/add-file'; -import dateFormat from 'dateformat'; +import * as dateFormat from 'dateformat'; import { getFullApAccount } from '@/misc/convert-host'; import { Users, UserLists, UserListJoinings } from '@/models/index'; import { In } from 'typeorm'; diff --git a/src/remote/activitypub/resolver.ts b/src/remote/activitypub/resolver.ts index 32f3d9ef26..f392a65e3a 100644 --- a/src/remote/activitypub/resolver.ts +++ b/src/remote/activitypub/resolver.ts @@ -4,6 +4,8 @@ import { ILocalUser } from '@/models/entities/user'; import { getInstanceActor } from '@/services/instance-actor'; import { signedGet } from './request'; import { IObject, isCollectionOrOrderedCollection, ICollection, IOrderedCollection } from './type'; +import { fetchMeta } from '@/misc/fetch-meta'; +import { extractDbHost } from '@/misc/convert-host'; export default class Resolver { private history: Set; @@ -44,6 +46,12 @@ export default class Resolver { this.history.add(value); + const meta = await fetchMeta(); + const host = extractDbHost(value); + if (meta.blockedHosts.includes(host)) { + throw new Error('Instance is blocked'); + } + if (config.signToActivityPubGet && !this.user) { this.user = await getInstanceActor(); } diff --git a/src/server/api/call.ts b/src/server/api/call.ts index 2768bde07e..bd86ffdc35 100644 --- a/src/server/api/call.ts +++ b/src/server/api/call.ts @@ -40,7 +40,12 @@ export default async (endpoint: string, user: User | null | undefined, token: Ac } if (ep.meta.requireCredential && user!.isSuspended) { - throw new ApiError(accessDenied, { reason: 'Your account has been suspended.' }); + throw new ApiError({ + message: 'Your account has been suspended.', + code: 'YOUR_ACCOUNT_SUSPENDED', + id: 'a8c724b3-6e9c-4b46-b1a8-bc3ed6258370', + httpStatusCode: 403 + }); } if (ep.meta.requireAdmin && !user!.isAdmin) { diff --git a/src/server/api/endpoints/antennas/notes.ts b/src/server/api/endpoints/antennas/notes.ts index 3c8a4fbdae..1759e95b4c 100644 --- a/src/server/api/endpoints/antennas/notes.ts +++ b/src/server/api/endpoints/antennas/notes.ts @@ -1,6 +1,7 @@ import $ from 'cafy'; import { ID } from '@/misc/cafy-id'; import define from '../../define'; +import readNote from '@/services/note/read'; import { Antennas, Notes, AntennaNotes } from '@/models/index'; import { makePaginationQuery } from '../../common/make-pagination-query'; import { generateVisibilityQuery } from '../../common/generate-visibility-query'; @@ -84,5 +85,9 @@ export default define(meta, async (ps, user) => { .take(ps.limit!) .getMany(); + if (notes.length > 0) { + readNote(user.id, notes); + } + return await Notes.packMany(notes, user); });