summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-10-25 02:34:58 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-10-25 02:34:58 +0900
commit6d557269c13f023d80aeeb28ddceb7337aca134c (patch)
treef69595ca45dd0d05dc3af4404dd8205dc828ddc1 /src/server
parentMerge branch 'develop' (diff)
parent12.94.0 (diff)
downloadmisskey-6d557269c13f023d80aeeb28ddceb7337aca134c.tar.gz
misskey-6d557269c13f023d80aeeb28ddceb7337aca134c.tar.bz2
misskey-6d557269c13f023d80aeeb28ddceb7337aca134c.zip
Merge branch 'develop'
Diffstat (limited to 'src/server')
-rw-r--r--src/server/index.ts18
-rw-r--r--src/server/web/index.ts16
2 files changed, 33 insertions, 1 deletions
diff --git a/src/server/index.ts b/src/server/index.ts
index c891596140..5e1a12e4d3 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -26,6 +26,7 @@ import { networkChart } from '@/services/chart/index';
import { genAvatar } from '@/misc/gen-avatar';
import { createTemp } from '@/misc/create-temp';
import { publishMainStream } from '@/services/stream';
+import { parseAcct } from '@/misc/acct';
export const serverLogger = new Logger('server', 'gray', false);
@@ -68,7 +69,22 @@ router.use(activityPub.routes());
router.use(nodeinfo.routes());
router.use(wellKnown.routes());
-router.get('/avatar/:x', async ctx => {
+router.get('/avatar/@:acct', async ctx => {
+ const { username, host } = parseAcct(ctx.params.acct);
+ const user = await Users.findOne({
+ usernameLower: username.toLowerCase(),
+ host: host === config.host ? null : host,
+ isSuspended: false
+ });
+
+ if (user) {
+ ctx.redirect(Users.getAvatarUrl(user));
+ } else {
+ ctx.redirect('/static-assets/user-unknown.png');
+ }
+});
+
+router.get('/random-avatar/:x', async ctx => {
const [temp] = await createTemp();
await genAvatar(ctx.params.x, fs.createWriteStream(temp));
ctx.set('Content-Type', 'image/png');
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index 8f9b6add6e..35337868d9 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -101,6 +101,22 @@ router.get('/apple-touch-icon.png', async ctx => {
});
});
+router.get('/twemoji/(.*)', async ctx => {
+ const path = ctx.path.replace('/twemoji/', '');
+
+ if (!path.match(/^[0-9a-f-]+\.svg$/)) {
+ ctx.status = 404;
+ return;
+ }
+
+ ctx.set('Content-Security-Policy', `default-src 'none'; style-src 'unsafe-inline'`);
+
+ await send(ctx as any, path, {
+ root: `${_dirname}/../../../node_modules/@discordapp/twemoji/dist/svg/`,
+ maxage: ms('30 days'),
+ });
+});
+
// ServiceWorker
router.get('/sw.js', async ctx => {
await send(ctx as any, `/sw.${config.version}.js`, {