Merge branch 'develop' into notification-read-api
This commit is contained in:
@@ -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'],
|
||||
|
@@ -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'],
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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,
|
||||
|
@@ -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,
|
||||
|
@@ -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,
|
||||
|
@@ -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,
|
||||
|
@@ -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,
|
||||
|
@@ -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';
|
||||
|
||||
|
@@ -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';
|
||||
|
||||
|
@@ -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';
|
||||
|
||||
|
@@ -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';
|
||||
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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';
|
||||
|
@@ -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);
|
||||
});
|
||||
|
@@ -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';
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user