main.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. const router = express.Router({
  18. caseSensitive: true,
  19. strict: true,
  20. mergeParams: true,
  21. });
  22. /**
  23. * Health Check
  24. * GET /api
  25. */
  26. router.get("/", async (_, res /*, next*/) => {
  27. const version = pjson.version.split("-").shift().split(".");
  28. const setup = await isSetup();
  29. res.status(200).send({
  30. status: "OK",
  31. setup,
  32. version: {
  33. major: Number.parseInt(version.shift(), 10),
  34. minor: Number.parseInt(version.shift(), 10),
  35. revision: Number.parseInt(version.shift(), 10),
  36. },
  37. });
  38. });
  39. router.use("/schema", schemaRoutes);
  40. router.use("/tokens", tokensRoutes);
  41. router.use("/users", usersRoutes);
  42. router.use("/audit-log", auditLogRoutes);
  43. router.use("/reports", reportsRoutes);
  44. router.use("/settings", settingsRoutes);
  45. router.use("/nginx/proxy-hosts", proxyHostsRoutes);
  46. router.use("/nginx/redirection-hosts", redirectionHostsRoutes);
  47. router.use("/nginx/dead-hosts", deadHostsRoutes);
  48. router.use("/nginx/streams", streamsRoutes);
  49. router.use("/nginx/access-lists", accessListsRoutes);
  50. router.use("/nginx/certificates", certificatesHostsRoutes);
  51. /**
  52. * API 404 for all other routes
  53. *
  54. * ALL /api/*
  55. */
  56. router.all(/(.+)/, (req, _, next) => {
  57. req.params.page = req.params["0"];
  58. next(new errs.ItemNotFoundError(req.params.page));
  59. });
  60. export default router;