Implement instance info page
This commit is contained in:
parent
c135d02895
commit
7ad9560f53
3 changed files with 137 additions and 0 deletions
BIN
src/client/assets/misskey-php-like-logo.png
Normal file
BIN
src/client/assets/misskey-php-like-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
|
@ -2,6 +2,7 @@
|
||||||
* Web Client Server
|
* Web Client Server
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import * as os from 'os';
|
||||||
import ms = require('ms');
|
import ms = require('ms');
|
||||||
import * as Koa from 'koa';
|
import * as Koa from 'koa';
|
||||||
import * as Router from 'koa-router';
|
import * as Router from 'koa-router';
|
||||||
|
@ -18,6 +19,8 @@ import config from '../../config';
|
||||||
import Note, { pack as packNote } from '../../models/note';
|
import Note, { pack as packNote } from '../../models/note';
|
||||||
import getNoteSummary from '../../misc/get-note-summary';
|
import getNoteSummary from '../../misc/get-note-summary';
|
||||||
import fetchMeta from '../../misc/fetch-meta';
|
import fetchMeta from '../../misc/fetch-meta';
|
||||||
|
import Emoji from '../../models/emoji';
|
||||||
|
const pkg = require('../../../package.json');
|
||||||
|
|
||||||
const client = `${__dirname}/../../client/`;
|
const client = `${__dirname}/../../client/`;
|
||||||
|
|
||||||
|
@ -195,6 +198,27 @@ router.get('/notes/:note', async ctx => {
|
||||||
});
|
});
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
router.get('/info', async ctx => {
|
||||||
|
const meta = await fetchMeta();
|
||||||
|
const emojis = await Emoji.find({ host: null }, {
|
||||||
|
fields: {
|
||||||
|
_id: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
await ctx.render('info', {
|
||||||
|
version: pkg.version,
|
||||||
|
machine: os.hostname(),
|
||||||
|
os: os.platform(),
|
||||||
|
node: process.version,
|
||||||
|
cpu: {
|
||||||
|
model: os.cpus()[0].model,
|
||||||
|
cores: os.cpus().length
|
||||||
|
},
|
||||||
|
emojis: emojis,
|
||||||
|
meta: meta
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Render base html for all requests
|
// Render base html for all requests
|
||||||
router.get('*', async ctx => {
|
router.get('*', async ctx => {
|
||||||
const meta = await fetchMeta();
|
const meta = await fetchMeta();
|
||||||
|
|
113
src/server/web/views/info.pug
Normal file
113
src/server/web/views/info.pug
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
doctype html
|
||||||
|
|
||||||
|
html
|
||||||
|
|
||||||
|
head
|
||||||
|
meta(charset='utf-8')
|
||||||
|
meta(name='application-name' content='Misskey')
|
||||||
|
title Misskey
|
||||||
|
style.
|
||||||
|
html {
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
max-width: 934px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
padding: 5px;
|
||||||
|
background: rgb(153, 153, 204);
|
||||||
|
border: 1px solid #000;
|
||||||
|
}
|
||||||
|
header:after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
header > h1 {
|
||||||
|
float: left;
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
header > img {
|
||||||
|
float: right;
|
||||||
|
width: 220px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
margin: 1em 0;
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
table tr th {
|
||||||
|
background-color: #ccf;
|
||||||
|
border: 1px solid #000;
|
||||||
|
width: 300px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 4px 5px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table tr td {
|
||||||
|
background-color: #ddd;
|
||||||
|
border: 1px solid #000;
|
||||||
|
padding: 4px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
main
|
||||||
|
header
|
||||||
|
h1 Misskey Version #{version}
|
||||||
|
img(src='/assets/misskey-php-like-logo.png' alt='')
|
||||||
|
table
|
||||||
|
tr
|
||||||
|
th Instance
|
||||||
|
td= meta.name
|
||||||
|
tr
|
||||||
|
th Maintainer
|
||||||
|
td
|
||||||
|
= meta.maintainer.name
|
||||||
|
| <#{meta.maintainer.email}>
|
||||||
|
tr
|
||||||
|
th System
|
||||||
|
td= os
|
||||||
|
tr
|
||||||
|
th Node version
|
||||||
|
td= node
|
||||||
|
tr
|
||||||
|
th Machine
|
||||||
|
td= machine
|
||||||
|
tr
|
||||||
|
th CPU
|
||||||
|
td= cpu.model
|
||||||
|
tr
|
||||||
|
th Registration
|
||||||
|
td= !meta.disableRegistration ? 'yes' : 'no'
|
||||||
|
tr
|
||||||
|
th reCAPTCHA enabled
|
||||||
|
td= meta.enableRecaptcha ? 'yes' : 'no'
|
||||||
|
tr
|
||||||
|
th Cache remote files
|
||||||
|
td= meta.cacheRemoteFiles ? 'yes' : 'no'
|
||||||
|
tr
|
||||||
|
th Drive capacity per local user
|
||||||
|
td
|
||||||
|
= meta.localDriveCapacityMb
|
||||||
|
| MB
|
||||||
|
tr
|
||||||
|
th Drive capacity per remote user
|
||||||
|
td
|
||||||
|
= meta.remoteDriveCapacityMb
|
||||||
|
| MB
|
||||||
|
tr
|
||||||
|
th Max text length
|
||||||
|
td= meta.maxNoteTextLength
|
||||||
|
tr
|
||||||
|
th Emojis
|
||||||
|
td
|
||||||
|
each emoji in emojis
|
||||||
|
| :#{emoji.name}:
|
||||||
|
= ' '
|
||||||
|
|
Loading…
Reference in a new issue