Skip to content

Commit 0c64c32

Browse files
committed
gis-9415 add global alternative mapping
1 parent 0383ff3 commit 0c64c32

File tree

4 files changed

+17
-9
lines changed

4 files changed

+17
-9
lines changed

uncoder-core/app/translator/core/mapping.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from __future__ import annotations
22

3+
import os
34
from abc import ABC, abstractmethod
4-
from typing import TYPE_CHECKING, Optional, TypeVar, Union
5+
from typing import TYPE_CHECKING, ClassVar, Optional, TypeVar, Union
56

67
from app.translator.core.exceptions.core import (
78
StrictPlatformException,
@@ -16,6 +17,7 @@
1617

1718

1819
DEFAULT_MAPPING_NAME = "default"
20+
GLOBAL_ALTERNATIVE_MAPPING_DIR = "global_alternative"
1921

2022

2123
class LogSourceSignature(ABC):
@@ -113,14 +115,15 @@ class BasePlatformMappings:
113115
is_strict_mapping: bool = False
114116
skip_load_default_mappings: bool = True
115117
extend_default_mapping_with_all_fields: bool = False
116-
global_mappings: list[str] = []
118+
global_alternative_mappings: ClassVar[list[str]] = []
117119

118120
def __init__(self, platform_dir: str, platform_details: PlatformDetails):
119121
self._loader = LoaderFileMappings()
120122
self.details = platform_details
121123
self._source_mappings = self.prepare_mapping(platform_dir)
122124
self._alternative_mappings = self.prepare_alternative_mapping(platform_dir)
123-
global_alternative_mappings = self.prepare_global_alternative_mapping()
125+
if self.global_alternative_mappings:
126+
self._alternative_mappings.update(self.prepare_global_alternative_mapping())
124127

125128
def update_default_source_mapping(self, default_mapping: SourceMapping, fields_mapping: FieldsMapping) -> None:
126129
default_mapping.fields_mapping.update(fields_mapping)
@@ -132,8 +135,10 @@ def prepare_alternative_mapping(self, platform_dir: str) -> dict[str, dict[str,
132135
return alternative_mappings
133136

134137
def prepare_global_alternative_mapping(self) -> dict[str, dict[str, SourceMapping]]:
135-
globa_alternative_mappings = {}
136-
return globa_alternative_mappings
138+
global_alternative_mappings = {}
139+
for name in self.global_alternative_mappings:
140+
global_alternative_mappings[name] = self.prepare_mapping(os.path.join(GLOBAL_ALTERNATIVE_MAPPING_DIR, name))
141+
return global_alternative_mappings
137142

138143
def prepare_mapping(self, platform_dir: str) -> dict[str, SourceMapping]:
139144
source_mappings = {}

uncoder-core/app/translator/core/models/query_container.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ class RawQueryContainer:
136136
class RawQueryDictContainer:
137137
query: dict
138138
language: str
139-
meta_info: dict
139+
meta_info: MetaInfoContainer = field(default_factory=MetaInfoContainer)
140140

141141

142142
@dataclass

uncoder-core/app/translator/mappings/global_alternative/ocsf/default.yml renamed to uncoder-core/app/translator/mappings/platforms/global_alternative/ocsf/default.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
platform: Global OCSF
22
source: default
33

4-
default_log_source: {}
54

65
fieldmappings:
76
IntegrityLevel: process.integrity

uncoder-core/app/translator/platforms/splunk/mapping.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Optional
1+
from typing import ClassVar, Optional
22

33
from app.translator.core.mapping import BasePlatformMappings, LogSourceSignature
44
from app.translator.platforms.splunk.const import splunk_alert_details, splunk_query_details
@@ -39,9 +39,13 @@ def __str__(self) -> str:
3939

4040

4141
class SplunkMappings(BasePlatformMappings):
42+
global_alternative_mappings: ClassVar[list[str]] = ["ocsf"]
43+
4244
def prepare_log_source_signature(self, mapping: dict) -> SplunkLogSourceSignature:
4345
log_source = mapping.get("log_source", {})
44-
default_log_source = mapping["default_log_source"]
46+
default_log_source = (
47+
mapping.get("default_log_source") if mapping.get("default_log_source") else {"source": "WinEventLog: *"}
48+
)
4549
return SplunkLogSourceSignature(
4650
sources=log_source.get("source"),
4751
source_types=log_source.get("sourcetype"),

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy