firewalla-mcp-server
Version:
Model Context Protocol (MCP) server for Firewalla MSP API - Provides real-time network monitoring, security analysis, and firewall management through 28 specialized tools compatible with any MCP client
60 lines • 2.79 kB
JavaScript
/**
* Bulk alarm management tool handlers
*/
import { BaseToolHandler } from './base.js';
import { createErrorResponse, ErrorType, } from '../../validation/error-handler.js';
import { BulkOperationManager, validateBulkOperationArgs, } from '../../utils/bulk-operation-manager.js';
import { withToolTimeout } from '../../utils/timeout-manager.js';
/**
* Bulk delete multiple alarms
*/
export class BulkDeleteAlarmsHandler extends BaseToolHandler {
constructor() {
super({
enableGeoEnrichment: false, // No IP fields in bulk operation results
enableFieldNormalization: true,
additionalMeta: {
data_source: 'bulk_alarms',
entity_type: 'bulk_alarm_deletion',
supports_geographic_enrichment: false,
supports_field_normalization: true,
standardization_version: '2.0.0',
},
});
this.name = 'bulk_delete_alarms';
this.description = 'Delete multiple security alarms in a single operation. Requires array of alarm IDs. Use with caution as this permanently removes alarms.';
this.category = 'security';
}
async execute(args, firewalla) {
// Validate bulk operation arguments
const validation = validateBulkOperationArgs(args);
if (!validation.isValid) {
return createErrorResponse(this.name, 'Parameter validation failed', ErrorType.VALIDATION_ERROR, undefined, validation.errors);
}
const { ids } = validation.sanitizedArgs;
const manager = BulkOperationManager.forAlarms();
// Validate the IDs array
const bulkValidation = manager.validateBulkParams(ids);
if (!bulkValidation.isValid) {
return createErrorResponse(this.name, 'Bulk operation validation failed', ErrorType.VALIDATION_ERROR, undefined, bulkValidation.errors);
}
// Define the delete operation for individual alarms
const deleteOperation = async (alarmId) => {
return withToolTimeout(async () => firewalla.deleteAlarm(alarmId), `${this.name}_item`, 5000 // 5 second timeout per alarm
);
};
// Execute the bulk operation
const startTime = Date.now();
const result = await manager.executeBulkOperation(bulkValidation.sanitizedIds, deleteOperation, firewalla, 'delete_alarms');
const unifiedResponseData = {
operation: this.name,
bulk_operation_result: result,
timestamp: new Date().toISOString(),
};
const executionTime = Date.now() - startTime;
return this.createUnifiedResponse(unifiedResponseData, {
executionTimeMs: executionTime,
});
}
}
//# sourceMappingURL=bulk-alarms.js.map