main.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import express from "express";
  2. import errs from "../lib/error.js";
  3. import pjson from "../package.json" with { type: "json" };
  4. import { isSetup } from "../setup.js";
  5. import auditLogRoutes from "./audit-log.js";
  6. import accessListsRoutes from "./nginx/access_lists.js";
  7. import certificatesHostsRoutes from "./nginx/certificates.js";
  8. import deadHostsRoutes from "./nginx/dead_hosts.js";
  9. import proxyHostsRoutes from "./nginx/proxy_hosts.js";
  10. import redirectionHostsRoutes from "./nginx/redirection_hosts.js";
  11. import streamsRoutes from "./nginx/streams.js";
  12. import reportsRoutes from "./reports.js";
  13. import schemaRoutes from "./schema.js";
  14. import settingsRoutes from "./settings.js";
  15. import tokensRoutes from "./tokens.js";
  16. import usersRoutes from "./users.js";
  17. import versionRoutes from "./version.js";
  18. const router = express.Router({
  19. caseSensitive: true,
  20. strict: true,
  21. mergeParams: true,
  22. });
  23. /**
  24. * Health Check
  25. * GET /api
  26. */
  27. router.get("/", async (_, res /*, next*/) => {
  28. const version = pjson.version.split("-").shift().split(".");
  29. const setup = await isSetup();
  30. res.status(200).send({
  31. status: "OK",
  32. setup,
  33. version: {
  34. major: Number.parseInt(version.shift(), 10),
  35. minor: Number.parseInt(version.shift(), 10),
  36. revision: Number.parseInt(version.shift(), 10),
  37. },
  38. });
  39. });
  40. router.use("/schema", schemaRoutes);
  41. router.use("/tokens", tokensRoutes);
  42. router.use("/users", usersRoutes);
  43. router.use("/audit-log", auditLogRoutes);
  44. router.use("/reports", reportsRoutes);
  45. router.use("/settings", settingsRoutes);
  46. router.use("/version", versionRoutes);
  47. router.use("/nginx/proxy-hosts", proxyHostsRoutes);
  48. router.use("/nginx/redirection-hosts", redirectionHostsRoutes);
  49. router.use("/nginx/dead-hosts", deadHostsRoutes);
  50. router.use("/nginx/streams", streamsRoutes);
  51. router.use("/nginx/access-lists", accessListsRoutes);
  52. router.use("/nginx/certificates", certificatesHostsRoutes);
  53. /**
  54. * API 404 for all other routes
  55. *
  56. * ALL /api/*
  57. */
  58. router.all(/(.+)/, (req, _, next) => {
  59. req.params.page = req.params["0"];
  60. next(new errs.ItemNotFoundError(req.params.page));
  61. });
  62. export default router;