forked from engineering/cloudservices
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import os from 'os';
|
|
import { Server } from '..';
|
|
import { Route } from '../../class';
|
|
|
|
export default class Root extends Route {
|
|
constructor(server: Server) {
|
|
super(server, { path: '/', deprecated: false });
|
|
}
|
|
|
|
public bind() {
|
|
this.router.get('/', async (req, res) => {
|
|
try {
|
|
const date = new Date();
|
|
date.setSeconds(-process.uptime());
|
|
const accounts = await this.server.client.db.Account.find();
|
|
const administrators = accounts.filter((account) => account.root === true).length;
|
|
const response = {
|
|
nodeVersion: process.version,
|
|
uptime: process.uptime(),
|
|
server: {
|
|
users: accounts.length,
|
|
administrators,
|
|
},
|
|
stats: {
|
|
uptime: os.uptime(),
|
|
loadAverage: os.loadavg(),
|
|
cpuModel: os.cpus()[0].model,
|
|
cpuClock: os.cpus()[0].speed / 1000,
|
|
cpuCores: os.cpus().length,
|
|
hostname: os.hostname(),
|
|
ipv4: os.networkInterfaces().eth0.filter((r) => r.family === 'IPv4')[0].address,
|
|
ipv6: os.networkInterfaces().eth0.filter((r) => r.family === 'IPv6')[0].address,
|
|
},
|
|
};
|
|
res.status(200).json({ code: this.constants.codes.SUCCESS, message: response });
|
|
} catch (error) {
|
|
this.handleError(error, res);
|
|
this.server.client.util.handleError(error);
|
|
}
|
|
});
|
|
}
|
|
}
|