49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
/**
|
|
* Health check HTTP server
|
|
*
|
|
* Provides a simple /health endpoint for Docker healthcheck
|
|
* and monitoring. Returns domain list and feature flags.
|
|
*/
|
|
|
|
import { createServer, type Server } from 'node:http';
|
|
import { log } from './logger.js';
|
|
|
|
export function startHealthServer(
|
|
port: number,
|
|
domains: string[],
|
|
getStats?: () => any,
|
|
): Server {
|
|
const server = createServer((_req, res) => {
|
|
const stats = getStats?.() ?? {};
|
|
|
|
const payload = {
|
|
status: 'healthy',
|
|
worker: 'unified-email-worker-ts',
|
|
version: '2.0.0',
|
|
domains,
|
|
domainCount: domains.length,
|
|
features: {
|
|
bounce_handling: true,
|
|
ooo_replies: true,
|
|
forwarding: true,
|
|
blocklist: true,
|
|
prometheus_metrics: true,
|
|
lmtp: false,
|
|
legacy_smtp_forward: false,
|
|
},
|
|
stats,
|
|
uptime: process.uptime(),
|
|
timestamp: new Date().toISOString(),
|
|
};
|
|
|
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify(payload, null, 2));
|
|
});
|
|
|
|
server.listen(port, () => {
|
|
log(`Health check on port ${port}`);
|
|
});
|
|
|
|
return server;
|
|
}
|