58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * 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<void> {
 | |
|     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<void> {
 | |
|     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');
 | |
|   }
 | |
| }
 |