66 lines
3.1 KiB
JavaScript
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
|