system.controller.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { Request, Response } from 'express';
  2. import si from 'systeminformation';
  3. type CpuData = {
  4. load: number;
  5. };
  6. type DiskData = {
  7. size: number;
  8. used: number;
  9. available: number;
  10. };
  11. type MemoryData = {
  12. total: number;
  13. free: number;
  14. used: number;
  15. };
  16. /**
  17. *
  18. * @param req
  19. * @param res
  20. */
  21. const getCpuInfo = async (req: Request, res: Response<CpuData>) => {
  22. // const cpuInfo = await cpu.getCpuInfo();
  23. const cpuLoad = await si.currentLoad();
  24. res.status(200).send({ load: cpuLoad.currentLoad });
  25. };
  26. /**
  27. *
  28. * @param req
  29. * @param res
  30. */
  31. const getDiskInfo = async (req: Request, res: Response<DiskData>) => {
  32. const disk = await si.fsSize();
  33. const rootDisk = disk.find((item) => item.mount === '/');
  34. if (!rootDisk) {
  35. throw new Error('Could not find root disk');
  36. }
  37. const result: DiskData = {
  38. size: rootDisk.size,
  39. used: rootDisk.used,
  40. available: rootDisk.available,
  41. };
  42. res.status(200).send(result);
  43. };
  44. /**
  45. *
  46. * @param req
  47. * @param res
  48. */
  49. const getMemoryInfo = async (req: Request, res: Response<MemoryData>) => {
  50. const memory = await si.mem();
  51. const result: MemoryData = {
  52. total: memory.total,
  53. free: memory.free,
  54. used: memory.used,
  55. };
  56. res.status(200).json(result);
  57. };
  58. export default { getCpuInfo, getDiskInfo, getMemoryInfo };