in metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.ts [358:434]
onSave() {
let removeTransformations: string[] = [];
// Remove all STELLAR functions and retain only the REMOVE objects
this.sensorParserConfig.fieldTransformations = this.sensorParserConfig.fieldTransformations.filter(fieldTransformer => {
if (this.isConditionalRemoveTransform(fieldTransformer)) {
return true;
}
return false;
});
let transformConfigObject = new FieldTransformer();
transformConfigObject.output = [];
transformConfigObject.config = {};
transformConfigObject.transformation = 'STELLAR';
let enrichmentConfigObject = new EnrichmentConfig();
enrichmentConfigObject.config = {};
let threatIntelConfigObject = new ThreatIntelConfig();
threatIntelConfigObject.triageConfig = this.sensorEnrichmentConfig.threatIntel.triageConfig;
for (let fieldSchemaRow of this.savedFieldSchemaRows) {
if (fieldSchemaRow.transformConfigured.length > 0) {
transformConfigObject.output.push(fieldSchemaRow.outputFieldName);
transformConfigObject.config[fieldSchemaRow.outputFieldName] = this.createTransformFunction(fieldSchemaRow);
}
if (fieldSchemaRow.isRemoved && !fieldSchemaRow.conditionalRemove) {
removeTransformations.push(fieldSchemaRow.inputFieldName);
}
if (fieldSchemaRow.enrichmentConfigured.length > 0) {
for (let option of fieldSchemaRow.enrichmentConfigured) {
if (option.name === 'geo' || option.name === 'host') {
if (!enrichmentConfigObject.fieldMap[option.name]) {
enrichmentConfigObject.fieldMap[option.name] = [];
}
enrichmentConfigObject.fieldMap[option.name].push(fieldSchemaRow.inputFieldName);
} else {
if (!enrichmentConfigObject.fieldMap['hbaseEnrichment']) {
enrichmentConfigObject.fieldMap['hbaseEnrichment'] = [];
}
enrichmentConfigObject.fieldMap['hbaseEnrichment'].push(fieldSchemaRow.inputFieldName);
if (!enrichmentConfigObject.fieldToTypeMap[fieldSchemaRow.inputFieldName]) {
enrichmentConfigObject.fieldToTypeMap[fieldSchemaRow.inputFieldName] = [];
}
enrichmentConfigObject.fieldToTypeMap[fieldSchemaRow.inputFieldName].push(option.name);
}
}
}
if (fieldSchemaRow.threatIntelConfigured.length > 0) {
for (let option of fieldSchemaRow.threatIntelConfigured) {
if (!threatIntelConfigObject.fieldMap['hbaseThreatIntel']) {
threatIntelConfigObject.fieldMap['hbaseThreatIntel'] = [];
}
threatIntelConfigObject.fieldMap['hbaseThreatIntel'].push(fieldSchemaRow.inputFieldName);
if (!threatIntelConfigObject.fieldToTypeMap[fieldSchemaRow.inputFieldName]) {
threatIntelConfigObject.fieldToTypeMap[fieldSchemaRow.inputFieldName] = [];
}
threatIntelConfigObject.fieldToTypeMap[fieldSchemaRow.inputFieldName].push(option.name);
}
}
}
if (Object.keys(transformConfigObject.config).length > 0) {
this.sensorParserConfig.fieldTransformations.push(transformConfigObject);
}
if (removeTransformations.length > 0) {
let removeConfigObject = new FieldTransformer();
removeConfigObject.transformation = 'REMOVE';
removeConfigObject.input = removeTransformations;
this.sensorParserConfig.fieldTransformations.push(removeConfigObject);
}
this.sensorEnrichmentConfig.enrichment = enrichmentConfigObject;
this.sensorEnrichmentConfig.threatIntel = threatIntelConfigObject;
}