Browse Source

Add system stats endpoints (#101)

v0.2.13
Luke Childs 3 years ago
committed by GitHub
parent
commit
e0a1ebe72f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      logic/disk.js
  2. 31
      routes/v1/system.js
  3. 1
      utils/const.js

7
logic/disk.js

@ -239,6 +239,12 @@ function writeStatusFile(statusFile, contents) {
return diskService.writeFile(statusFilePath, contents);
}
function readSystemStatusFile(resource) {
const statusFilePath = path.join(constants.STATUS_DIR, `${resource}-status.json`);
return diskService.readJsonFile(statusFilePath)
.catch(() => null);
}
function statusFileExists(statusFile) {
if(!/^[0-9a-zA-Z-_]+$/.test(statusFile)) {
throw new Error('Invalid signal file characters');
@ -332,4 +338,5 @@ module.exports = {
readHiddenService,
memoryWarningStatusFileExists,
deleteMemoryWarningStatusFile,
readSystemStatusFile,
};

31
routes/v1/system.js

@ -2,6 +2,7 @@ const express = require('express');
const router = express.Router();
const systemLogic = require('logic/system.js');
const diskLogic = require('logic/disk.js');
const auth = require('middlewares/auth.js');
@ -104,4 +105,34 @@ router.post('/reboot', auth.jwt, safeHandler(async (req, res) => {
return res.status(constants.STATUS_CODES.OK).json(result);
}));
router.get('/storage', safeHandler(async (req, res) => {
const update = await diskLogic.readSystemStatusFile('storage');
return res.status(constants.STATUS_CODES.OK).json(update);
}));
router.get('/memory', safeHandler(async (req, res) => {
const update = await diskLogic.readSystemStatusFile('memory');
return res.status(constants.STATUS_CODES.OK).json(update);
}));
router.get('/temperature', safeHandler(async (req, res) => {
const update = await diskLogic.readSystemStatusFile('temperature');
return res.status(constants.STATUS_CODES.OK).json(update);
}));
router.get('/uptime', safeHandler(async (req, res) => {
const update = await diskLogic.readSystemStatusFile('uptime');
return res.status(constants.STATUS_CODES.OK).json(update);
}));
router.get('/is-umbrel-os', safeHandler(async (req, res) => {
return res.status(constants.STATUS_CODES.OK).json(constants.IS_UMBREL_OS);
}));
module.exports = router;

1
utils/const.js

@ -36,6 +36,7 @@ module.exports = {
DEBUG_STATUS_FILE: process.env.DEBUG_STATUS_FILE || "/statuses/debug-status.json",
TOR_PROXY_IP: process.env.TOR_PROXY_IP || '192.168.0.1',
TOR_PROXY_PORT: process.env.TOR_PROXY_PORT || 9050,
IS_UMBREL_OS: process.env.IS_UMBREL_OS === 'true',
STATUS_CODES: {
ACCEPTED: 202,
BAD_GATEWAY: 502,

Loading…
Cancel
Save