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…
	
	Add table
		Add a link
		
	
		Reference in a new issue