Skip to content

Commit fe7323f

Browse files
authored
Merge pull request #180 from UncoderIO/gis-8188
Added new custom time, fix mapping selection and added new maping
2 parents 8803175 + 1f37c2d commit fe7323f

File tree

9 files changed

+19
-12
lines changed

9 files changed

+19
-12
lines changed

uncoder-core/app/translator/core/custom_types/predefined_fields.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,7 @@ class IPLocationType(CustomEnum):
1010
lat_lon = "ip_loc_lat_lon"
1111
region = "ip_loc_region"
1212
timezone = "ip_loc_timezone"
13+
14+
15+
class TimeType(CustomEnum):
16+
timestamp = "timestamp"

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from app.translator.core.exceptions.functions import NotSupportedFunctionException
2727
from app.translator.core.mapping import SourceMapping
2828
from app.translator.core.models.functions.base import Function, ParsedFunctions, RenderedFunctions
29-
from app.translator.core.models.query_tokens.field import Alias, Field
29+
from app.translator.core.models.query_tokens.field import Alias, Field, PredefinedField
3030
from app.translator.tools.utils import execute_module
3131
from settings import INIT_FUNCTIONS
3232

@@ -103,6 +103,9 @@ def map_field(self, field: Union[Alias, Field], source_mapping: SourceMapping) -
103103
mapped_fields = mappings.map_field(field, source_mapping)
104104
return mapped_fields[0]
105105

106+
if isinstance(field, PredefinedField):
107+
return self.manager.platform_functions.platform_query_render.map_predefined_field(field)
108+
106109
raise NotSupportedFunctionException
107110

108111

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def update(self, fields_mapping: FieldsMapping) -> None:
7070
self.__render_mapping.update(fields_mapping.__render_mapping)
7171

7272
def is_suitable(self, field_names: list[str]) -> bool:
73-
return set(field_names).issubset(set(self.__parser_mapping.keys()))
73+
return bool(field_names) and set(field_names).issubset(set(self.__parser_mapping.keys()))
7474

7575

7676
_LogSourceSignatureType = TypeVar("_LogSourceSignatureType", bound=LogSourceSignature)

uncoder-core/app/translator/core/models/functions/group_by.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33

44
from app.translator.core.custom_types.functions import FunctionType
55
from app.translator.core.models.functions.base import Function
6-
from app.translator.core.models.query_tokens.field import Alias
6+
from app.translator.core.models.query_tokens.field import Alias, PredefinedField
77

88

99
@dataclass
1010
class GroupByFunction(Function):
1111
name: str = FunctionType.stats
1212
args: list[Function] = field(default_factory=list)
13-
by_clauses: list[Union[Alias, Field]] = field(default_factory=list)
13+
by_clauses: list[Union[Alias, Field, PredefinedField]] = field(default_factory=list)
1414
filter_: Function = None

uncoder-core/app/translator/mappings/platforms/qradar/default.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,10 @@ field_mapping:
9797
FileName:
9898
- Filename
9999
- File Name
100+
- Encoded Filename
100101
RegistryKey:
101102
- Registry Key
102103
- Target Object
103104
RegistryValue: RegistryValue
104105
ProcessPath: Process Path
106+
hasIdentity: hasIdentity

uncoder-core/app/translator/mappings/platforms/qradar/windows_security.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,3 @@ field_mapping:
191191
UserID: UserID
192192
ParentProcessName: Parent Process Name
193193
Service: Service
194-
hasIdentity: hasIdentity

uncoder-core/app/translator/platforms/base/aql/mapping.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@ def is_suitable(
3131
qid_event_category_match = (
3232
set(qideventcategory).issubset(self.qid_event_categories) if qideventcategory else None
3333
)
34-
return all(
34+
all_conditions = [
3535
condition
3636
for condition in (device_type_match, category_match, qid_match, qid_event_category_match)
3737
if condition is not None
38-
)
38+
]
39+
return bool(all_conditions) and all(all_conditions)
3940

4041
def __str__(self) -> str:
4142
return self._default_source.get("table", "events")

uncoder-core/app/translator/platforms/palo_alto/const.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from app.translator.core.custom_types.predefined_fields import IPLocationType
1+
from app.translator.core.custom_types.predefined_fields import IPLocationType, TimeType
22
from app.translator.core.models.platform_details import PlatformDetails
33

44
PLATFORM_DETAILS = {"group_id": "cortex", "group_name": "Palo Alto Cortex XSIAM"}
@@ -22,4 +22,5 @@
2222
IPLocationType.lat_lon: "loc_latlon",
2323
IPLocationType.region: "loc_region",
2424
IPLocationType.timezone: "loc_timezone",
25+
TimeType.timestamp: "_time",
2526
}

uncoder-core/app/translator/platforms/palo_alto/renders/cortex_xsiam.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,7 @@ def _wrap_str_value(value: str) -> str:
6969

7070
def equal_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str:
7171
if isinstance(value, list):
72-
values = ", ".join(
73-
f"{self._pre_process_value(field, str(v) if isinstance(v, int) else v, ValueType.value, True)}"
74-
for v in value
75-
)
72+
values = ", ".join(f"{self._pre_process_value(field, v, ValueType.value, True)}" for v in value)
7673
return f"{field} in ({values})"
7774

7875
return f"{field} = {self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True)}"

0 commit comments

Comments
 (0)