Merge branch 'develop' into notification-read-api

This commit is contained in:
tamaina
2021-11-13 12:25:06 +09:00
52 changed files with 621 additions and 452 deletions

View File

@@ -2,7 +2,7 @@ import $ from 'cafy';
import define from '../../define';
import Resolver from '@/remote/activitypub/resolver';
import { ApiError } from '../../error';
import * as ms from 'ms';
import ms from 'ms';
export const meta = {
tags: ['federation'],

View File

@@ -11,7 +11,7 @@ import { Note } from '@/models/entities/note';
import { User } from '@/models/entities/user';
import { fetchMeta } from '@/misc/fetch-meta';
import { isActor, isPost, getApId } from '@/remote/activitypub/type';
import * as ms from 'ms';
import ms from 'ms';
export const meta = {
tags: ['federation'],

View File

@@ -1,6 +1,6 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import ms from 'ms';
import create from '@/services/blocking/create';
import define from '../../define';
import { ApiError } from '../../error';

View File

@@ -1,6 +1,6 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import ms from 'ms';
import deleteBlocking from '@/services/blocking/delete';
import define from '../../define';
import { ApiError } from '../../error';

View File

@@ -1,4 +1,4 @@
import * as ms from 'ms';
import ms from 'ms';
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import create from '@/services/drive/add-file';

View File

@@ -1,6 +1,6 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import ms from 'ms';
import uploadFromUrl from '@/services/drive/upload-from-url';
import define from '../../../define';
import { DriveFiles } from '@/models/index';

View File

@@ -1,6 +1,6 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import ms from 'ms';
import create from '@/services/following/create';
import define from '../../define';
import { ApiError } from '../../error';

View File

@@ -1,6 +1,6 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import ms from 'ms';
import deleteFollowing from '@/services/following/delete';
import define from '../../define';
import { ApiError } from '../../error';

View File

@@ -1,5 +1,5 @@
import $ from 'cafy';
import * as ms from 'ms';
import ms from 'ms';
import define from '../../../define';
import { ID } from '../../../../../misc/cafy-id';
import { DriveFiles, GalleryPosts } from '@/models/index';

View File

@@ -1,5 +1,5 @@
import $ from 'cafy';
import * as ms from 'ms';
import ms from 'ms';
import define from '../../../define';
import { ID } from '../../../../../misc/cafy-id';
import { DriveFiles, GalleryPosts } from '@/models/index';

View File

@@ -1,6 +1,6 @@
import define from '../../define';
import { createExportBlockingJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
export const meta = {
secure: true,

View File

@@ -1,6 +1,6 @@
import define from '../../define';
import { createExportFollowingJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
export const meta = {
secure: true,

View File

@@ -1,6 +1,6 @@
import define from '../../define';
import { createExportMuteJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
export const meta = {
secure: true,

View File

@@ -1,6 +1,6 @@
import define from '../../define';
import { createExportNotesJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
export const meta = {
secure: true,

View File

@@ -1,6 +1,6 @@
import define from '../../define';
import { createExportUserListsJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
export const meta = {
secure: true,

View File

@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { createImportBlockingJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
import { ApiError } from '../../error';
import { DriveFiles } from '@/models/index';

View File

@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { createImportFollowingJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
import { ApiError } from '../../error';
import { DriveFiles } from '@/models/index';

View File

@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { createImportMutingJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
import { ApiError } from '../../error';
import { DriveFiles } from '@/models/index';

View File

@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { createImportUserListsJob } from '@/queue/index';
import * as ms from 'ms';
import ms from 'ms';
import { ApiError } from '../../error';
import { DriveFiles } from '@/models/index';

View File

@@ -3,7 +3,7 @@ import { publishMainStream } from '@/services/stream';
import define from '../../define';
import rndstr from 'rndstr';
import config from '@/config/index';
import * as ms from 'ms';
import ms from 'ms';
import * as bcrypt from 'bcryptjs';
import { Users, UserProfiles } from '@/models/index';
import { sendEmail } from '@/services/send-email';

View File

@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import * as ms from 'ms';
import ms from 'ms';
import { ApiError } from '../../../error';
import { MessagingMessages } from '@/models/index';
import { deleteMessage } from '@/services/messages/delete';

View File

@@ -1,5 +1,5 @@
import $ from 'cafy';
import * as ms from 'ms';
import ms from 'ms';
import { length } from 'stringz';
import create from '@/services/note/create';
import define from '../../define';

View File

@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import deleteNote from '@/services/note/delete';
import define from '../../define';
import * as ms from 'ms';
import ms from 'ms';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
import { Users } from '@/models/index';

View File

@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import * as ms from 'ms';
import ms from 'ms';
import deleteReaction from '@/services/note/reaction/delete';
import { getNote } from '../../../common/getters';
import { ApiError } from '../../../error';

View File

@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import deleteNote from '@/services/note/delete';
import define from '../../define';
import * as ms from 'ms';
import ms from 'ms';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
import { Notes, Users } from '@/models/index';

View File

@@ -1,5 +1,5 @@
import $ from 'cafy';
import * as ms from 'ms';
import ms from 'ms';
import define from '../../define';
import { ID } from '@/misc/cafy-id';
import { Pages, DriveFiles } from '@/models/index';

View File

@@ -1,5 +1,5 @@
import $ from 'cafy';
import * as ms from 'ms';
import ms from 'ms';
import define from '../../define';
import { ApiError } from '../../error';
import { Pages, DriveFiles } from '@/models/index';

View File

@@ -3,7 +3,7 @@ import { publishMainStream } from '@/services/stream';
import define from '../define';
import rndstr from 'rndstr';
import config from '@/config/index';
import * as ms from 'ms';
import ms from 'ms';
import { Users, UserProfiles, PasswordResetRequests } from '@/models/index';
import { sendEmail } from '@/services/send-email';
import { ApiError } from '../error';

View File

@@ -1,4 +1,4 @@
import * as ms from 'ms';
import ms from 'ms';
import $ from 'cafy';
import define from '../../define';
import { Users, Followings } from '@/models/index';

View File

@@ -1,4 +1,5 @@
import $ from 'cafy';
import * as sanitizeHtml from 'sanitize-html';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { publishAdminStream } from '@/services/stream';
@@ -6,6 +7,8 @@ import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
import { AbuseUserReports, Users } from '@/models/index';
import { genId } from '@/misc/gen-id';
import { sendEmail } from '@/services/send-email';
import { fetchMeta } from '@/misc/fetch-meta';
export const meta = {
tags: ['users'],
@@ -26,23 +29,24 @@ export const meta = {
noSuchUser: {
message: 'No such user.',
code: 'NO_SUCH_USER',
id: '1acefcb5-0959-43fd-9685-b48305736cb5'
id: '1acefcb5-0959-43fd-9685-b48305736cb5',
},
cannotReportYourself: {
message: 'Cannot report yourself.',
code: 'CANNOT_REPORT_YOURSELF',
id: '1e13149e-b1e8-43cf-902e-c01dbfcb202f'
id: '1e13149e-b1e8-43cf-902e-c01dbfcb202f',
},
cannotReportAdmin: {
message: 'Cannot report the admin.',
code: 'CANNOT_REPORT_THE_ADMIN',
id: '35e166f5-05fb-4f87-a2d5-adb42676d48f'
}
}
id: '35e166f5-05fb-4f87-a2d5-adb42676d48f',
},
},
};
// eslint-disable-next-line import/no-default-export
export default define(meta, async (ps, me) => {
// Lookup user
const user = await getUser(ps.userId).catch(e => {
@@ -72,10 +76,10 @@ export default define(meta, async (ps, me) => {
setTimeout(async () => {
const moderators = await Users.find({
where: [{
isAdmin: true
isAdmin: true,
}, {
isModerator: true
}]
isModerator: true,
}],
});
for (const moderator of moderators) {
@@ -83,8 +87,15 @@ export default define(meta, async (ps, me) => {
id: report.id,
targetUserId: report.targetUserId,
reporterId: report.reporterId,
comment: report.comment
comment: report.comment,
});
}
const meta = await fetchMeta();
if (meta.email) {
sendEmail(meta.email, 'New abuse report',
sanitizeHtml(ps.comment),
sanitizeHtml(ps.comment));
}
}, 1);
});

View File

@@ -3,7 +3,7 @@
*/
import { dirname } from 'path';
import * as ms from 'ms';
import ms from 'ms';
import * as Koa from 'koa';
import * as Router from '@koa/router';
import * as send from 'koa-send';

View File

@@ -21,8 +21,8 @@ export async function sendEmail(to: string, subject: string, html: string, text:
proxy: config.proxySmtp,
auth: enableAuth ? {
user: meta.smtpUser,
pass: meta.smtpPass
} : undefined
pass: meta.smtpPass,
} : undefined,
} as any);
try {
@@ -33,86 +33,85 @@ export async function sendEmail(to: string, subject: string, html: string, text:
subject: subject,
text: text,
html: `<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>${ subject }</title>
<style>
html {
background: #eee;
}
<html>
<head>
<meta charset="utf-8">
<title>${ subject }</title>
<style>
html {
background: #eee;
}
body {
padding: 16px;
margin: 0;
font-family: sans-serif;
font-size: 14px;
}
body {
padding: 16px;
margin: 0;
font-family: sans-serif;
font-size: 14px;
}
a {
text-decoration: none;
color: #86b300;
}
a:hover {
text-decoration: underline;
}
a {
text-decoration: none;
color: #86b300;
}
a:hover {
text-decoration: underline;
}
main {
max-width: 500px;
margin: 0 auto;
background: #fff;
color: #555;
}
main > header {
padding: 32px;
background: #86b300;
}
main > header > img {
max-width: 128px;
max-height: 28px;
vertical-align: bottom;
}
main > article {
padding: 32px;
}
main > article > h1 {
margin: 0 0 1em 0;
}
main > footer {
padding: 32px;
border-top: solid 1px #eee;
}
main {
max-width: 500px;
margin: 0 auto;
background: #fff;
color: #555;
}
main > header {
padding: 32px;
background: #86b300;
}
main > header > img {
max-width: 128px;
max-height: 28px;
vertical-align: bottom;
}
main > article {
padding: 32px;
}
main > article > h1 {
margin: 0 0 1em 0;
}
main > footer {
padding: 32px;
border-top: solid 1px #eee;
}
nav {
box-sizing: border-box;
max-width: 500px;
margin: 16px auto 0 auto;
padding: 0 32px;
}
nav > a {
color: #888;
}
</style>
</head>
<body>
<main>
<header>
<img src="${ meta.logoImageUrl || meta.iconUrl || iconUrl }"/>
</header>
<article>
<h1>${ subject }</h1>
<div>${ html }</div>
</article>
<footer>
<a href="${ emailSettingUrl }">${ 'Email setting' }</a>
</footer>
</main>
<nav>
<a href="${ config.url }">${ config.host }</a>
</nav>
</body>
</html>
`
nav {
box-sizing: border-box;
max-width: 500px;
margin: 16px auto 0 auto;
padding: 0 32px;
}
nav > a {
color: #888;
}
</style>
</head>
<body>
<main>
<header>
<img src="${ meta.logoImageUrl || meta.iconUrl || iconUrl }"/>
</header>
<article>
<h1>${ subject }</h1>
<div>${ html }</div>
</article>
<footer>
<a href="${ emailSettingUrl }">${ 'Email setting' }</a>
</footer>
</main>
<nav>
<a href="${ config.url }">${ config.host }</a>
</nav>
</body>
</html>`,
});
logger.info('Message sent: %s', info.messageId);