66 lines
3.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.servicesRouter = void 0;
const express_1 = require("express");
const auth_middleware_1 = require("../../middleware/auth.middleware");
const rbac_middleware_1 = require("../../middleware/rbac.middleware");
const env_1 = require("../../config/env");
const logger_1 = require("../../utils/logger");
const metrics_1 = require("../../utils/metrics");
const health_check_1 = require("../../utils/health-check");
const router = (0, express_1.Router)();
router.use(auth_middleware_1.authenticate);
router.use((0, rbac_middleware_1.requireRole)('SUPER_ADMIN'));
// Removed duplicated isServiceOnline - now using shared utility from utils/health-check.ts
// GET /api/services/status — check NocoDB, n8n, Gitea availability
router.get('/status', async (_req, res, next) => {
try {
const [nocodbOnline, n8nOnline, giteaOnline, mailhogOnline, miniqrOnline, excalidrawOnline] = await Promise.all([
(0, health_check_1.isServiceOnline)(env_1.env.NOCODB_URL),
(0, health_check_1.isServiceOnline)(env_1.env.N8N_URL),
(0, health_check_1.isServiceOnline)(env_1.env.GITEA_URL),
(0, health_check_1.isServiceOnline)(env_1.env.MAILHOG_URL),
(0, health_check_1.isServiceOnline)(env_1.env.MINI_QR_URL),
(0, health_check_1.isServiceOnline)(env_1.env.EXCALIDRAW_URL),
]);
// Update Prometheus gauges
(0, metrics_1.setServiceUp)('nocodb', nocodbOnline);
(0, metrics_1.setServiceUp)('n8n', n8nOnline);
(0, metrics_1.setServiceUp)('gitea', giteaOnline);
(0, metrics_1.setServiceUp)('mailhog', mailhogOnline);
(0, metrics_1.setServiceUp)('miniqr', miniqrOnline);
(0, metrics_1.setServiceUp)('excalidraw', excalidrawOnline);
res.json({
nocodb: { online: nocodbOnline, url: env_1.env.NOCODB_URL },
n8n: { online: n8nOnline, url: env_1.env.N8N_URL },
gitea: { online: giteaOnline, url: env_1.env.GITEA_URL },
mailhog: { online: mailhogOnline, url: env_1.env.MAILHOG_URL },
miniqr: { online: miniqrOnline, url: env_1.env.MINI_QR_URL },
excalidraw: { online: excalidrawOnline, url: env_1.env.EXCALIDRAW_URL },
});
}
catch (err) {
logger_1.logger.error('Failed to check services status', err);
next(err);
}
});
// GET /api/services/config — return public-facing port numbers + subdomain info for iframe URLs
router.get('/config', async (_req, res, _next) => {
res.json({
nocodbPort: env_1.env.NOCODB_EMBED_PORT,
n8nPort: env_1.env.N8N_EMBED_PORT,
giteaPort: env_1.env.GITEA_EMBED_PORT,
mailhogPort: env_1.env.MAILHOG_EMBED_PORT,
miniqrPort: env_1.env.MINI_QR_EMBED_PORT,
excalidrawPort: env_1.env.EXCALIDRAW_EMBED_PORT,
domain: env_1.env.DOMAIN,
nocodbSubdomain: 'db',
n8nSubdomain: 'n8n',
giteaSubdomain: 'git',
mailhogSubdomain: 'mail',
miniqrSubdomain: 'qr',
excalidrawSubdomain: 'draw',
});
});
exports.servicesRouter = router;
//# sourceMappingURL=services.routes.js.map