/** * Daemon Manager * Manages the background mailer service */ import { SmtpServer } from '../mail/delivery/placeholder.ts'; import { ApiServer } from '../api/api-server.ts'; import { ConfigManager } from '../config/config-manager.ts'; export class DaemonManager { private smtpServer: SmtpServer | null = null; private apiServer: ApiServer | null = null; private configManager: ConfigManager; constructor() { this.configManager = new ConfigManager(); } /** * Start the daemon */ async start(): Promise { console.log('[Daemon] Starting mailer daemon...'); // Load configuration const config = await this.configManager.load(); // Start SMTP server this.smtpServer = new SmtpServer({ port: config.smtpPort, hostname: config.hostname }); await this.smtpServer.start(); // Start API server this.apiServer = new ApiServer({ port: config.apiPort, apiKeys: config.apiKeys }); await this.apiServer.start(); console.log('[Daemon] Mailer daemon started successfully'); console.log(`[Daemon] SMTP server: ${config.hostname}:${config.smtpPort}`); console.log(`[Daemon] API server: http://${config.hostname}:${config.apiPort}`); } /** * Stop the daemon */ async stop(): Promise { console.log('[Daemon] Stopping mailer daemon...'); if (this.smtpServer) { await this.smtpServer.stop(); } if (this.apiServer) { await this.apiServer.stop(); } console.log('[Daemon] Mailer daemon stopped'); } }