Skip to content

Commit fd38f39

Browse files
committed
gis-8971 fixes
1 parent f1fb03b commit fd38f39

File tree

8 files changed

+35
-42
lines changed

8 files changed

+35
-42
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from app.translator.core.custom_types.tokens import LogicalOperatorType, OperatorType
2+
from app.translator.core.mapping import SourceMapping
3+
from app.translator.core.models.query_tokens.field_value import FieldValue
4+
from app.translator.core.models.query_tokens.identifier import Identifier
5+
6+
7+
class ExtraConditionMixin:
8+
def generate_extra_conditions(self, source_mapping: SourceMapping) -> list:
9+
extra_tokens = []
10+
for field, value in source_mapping.conditions.items():
11+
extra_tokens.extend(
12+
[
13+
FieldValue(source_name=field, operator=Identifier(token_type=OperatorType.EQ), value=value),
14+
Identifier(token_type=LogicalOperatorType.AND),
15+
]
16+
)
17+
return extra_tokens

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -403,8 +403,8 @@ def process_raw_log_field_prefix(self, field: str, source_mapping: SourceMapping
403403
if raw_log_field_type := source_mapping.raw_log_fields.get(field):
404404
return [self.process_raw_log_field(field=field, field_type=raw_log_field_type)]
405405

406-
def generate_extra_conditions(self, source_mapping: SourceMapping, tokens: list) -> list: # noqa: ARG002
407-
return tokens
406+
def generate_extra_conditions(self, source_mapping: SourceMapping) -> list: # noqa: ARG002
407+
return []
408408

409409
def generate_raw_log_fields(self, fields: list[Field], source_mapping: SourceMapping) -> str:
410410
if not self.raw_log_field_patterns_map:
@@ -446,9 +446,8 @@ def _generate_from_tokenized_query_container_by_source_mapping(
446446
)
447447
prefix += f"\n{defined_raw_log_fields}"
448448
if source_mapping.conditions:
449-
query_container.tokens = self.generate_extra_conditions(
450-
source_mapping=source_mapping, tokens=query_container.tokens
451-
)
449+
extra_tokens = self.generate_extra_conditions(source_mapping=source_mapping)
450+
query_container.tokens = [*extra_tokens, *query_container.tokens]
452451
query = self.generate_query(tokens=query_container.tokens, source_mapping=source_mapping)
453452
not_supported_functions = query_container.functions.not_supported + rendered_functions.not_supported
454453
return self.finalize_query(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
"alt_platform_name": "CEF",
1010
}
1111

12-
arcsight_query_details = PlatformDetails(**ARCSIGHT_QUERY_DETAILS)
12+
arcsight_query_details = PlatformDetails(**ARCSIGHT_QUERY_DETAILS)

uncoder-core/app/translator/platforms/arcsight/escape_manager.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77

88
class ArcSightEscapeManager(EscapeManager):
99
escape_map: ClassVar[dict[str, list[EscapeDetails]]] = {
10-
ValueType.value: [
11-
EscapeDetails(pattern='(["\\()])', escape_symbols="\\\\\g<1>")
12-
],
10+
ValueType.value: [EscapeDetails(pattern='(["\\()])', escape_symbols="\\\\\g<1>")]
1311
}
1412

1513

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
from app.translator.core.mapping import LogSourceSignature, \
2-
BaseStrictLogSourcesPlatformMappings
1+
from app.translator.core.mapping import BaseStrictLogSourcesPlatformMappings, LogSourceSignature
32
from app.translator.platforms.arcsight.const import arcsight_query_details
43

54

uncoder-core/app/translator/platforms/arcsight/renders/arcsight.py

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
from typing import Optional, Union
22

33
from app.translator.const import DEFAULT_VALUE_TYPE
4-
from app.translator.core.custom_types.tokens import OperatorType, LogicalOperatorType
54
from app.translator.core.custom_types.values import ValueType
6-
from app.translator.core.mapping import LogSourceSignature, SourceMapping
5+
from app.translator.core.mapping import LogSourceSignature
6+
from app.translator.core.mixins.tokens import ExtraConditionMixin
77
from app.translator.core.models.platform_details import PlatformDetails
8-
from app.translator.core.models.query_tokens.field_value import FieldValue
9-
from app.translator.core.models.query_tokens.identifier import Identifier
108
from app.translator.core.render import BaseFieldValueRender, PlatformQueryRender
11-
from app.translator.core.str_value_manager import StrValueManager, StrValue
9+
from app.translator.core.str_value_manager import StrValue, StrValueManager
1210
from app.translator.managers import render_manager
1311
from app.translator.platforms.arcsight.const import arcsight_query_details
14-
from app.translator.platforms.arcsight.mapping import arcsight_query_mappings, ArcSightMappings
12+
from app.translator.platforms.arcsight.mapping import ArcSightMappings, arcsight_query_mappings
1513
from app.translator.platforms.arcsight.str_value_manager import arcsight_str_value_manager
1614

1715

@@ -85,8 +83,9 @@ def regex_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str:
8583
value = self._wrap_str_value(value)
8684
return f"{field} CONTAINS {value}"
8785

86+
8887
@render_manager.register
89-
class ArcSightQueryRender(PlatformQueryRender):
88+
class ArcSightQueryRender(ExtraConditionMixin, PlatformQueryRender):
9089
details: PlatformDetails = arcsight_query_details
9190
mappings: ArcSightMappings = arcsight_query_mappings
9291

@@ -100,12 +99,3 @@ class ArcSightQueryRender(PlatformQueryRender):
10099

101100
def generate_prefix(self, log_source_signature: Optional[LogSourceSignature], functions_prefix: str = "") -> str: # noqa: ARG002
102101
return ""
103-
104-
def generate_extra_conditions(self, source_mapping: SourceMapping, tokens: list) -> list:
105-
extra_tokens = []
106-
for field, value in source_mapping.conditions.items():
107-
extra_tokens.extend([
108-
FieldValue(source_name=field, operator=Identifier(token_type=OperatorType.EQ), value=value),
109-
Identifier(token_type=LogicalOperatorType.AND)
110-
])
111-
return [*extra_tokens, *tokens]

uncoder-core/app/translator/platforms/arcsight/renders/arcsight_cti.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from app.translator.core.models.platform_details import PlatformDetails
22
from app.translator.core.render_cti import RenderCTI
33
from app.translator.managers import render_cti_manager
4-
from app.translator.platforms.arcsight.const import ARCSIGHT_QUERY_DETAILS, arcsight_query_details
4+
from app.translator.platforms.arcsight.const import arcsight_query_details
55
from app.translator.platforms.arcsight.mappings.arcsight_cti import DEFAULT_ARCSIGHT_MAPPING
66

77

uncoder-core/app/translator/platforms/elasticsearch/renders/elasticsearch_eql.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
from app.translator.const import DEFAULT_VALUE_TYPE
44
from app.translator.core.const import QUERY_TOKEN_TYPE
5-
from app.translator.core.custom_types.tokens import GroupType, LogicalOperatorType, OperatorType
5+
from app.translator.core.custom_types.tokens import GroupType
66
from app.translator.core.custom_types.values import ValueType
7-
from app.translator.core.mapping import LogSourceSignature, SourceMapping
7+
from app.translator.core.mapping import LogSourceSignature
8+
from app.translator.core.mixins.tokens import ExtraConditionMixin
89
from app.translator.core.models.platform_details import PlatformDetails
9-
from app.translator.core.models.query_tokens.field_value import FieldValue
1010
from app.translator.core.models.query_tokens.identifier import Identifier
1111
from app.translator.core.render import BaseFieldValueRender, PlatformQueryRender
1212
from app.translator.core.str_value_manager import StrValueManager
@@ -119,7 +119,7 @@ def is_not_none(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: # noqa: AR
119119

120120

121121
@render_manager.register
122-
class ElasticSearchEQLQueryRender(PlatformQueryRender):
122+
class ElasticSearchEQLQueryRender(ExtraConditionMixin, PlatformQueryRender):
123123
details: PlatformDetails = elastic_eql_query_details
124124
mappings: LuceneMappings = elastic_eql_query_mappings
125125
or_token = "or"
@@ -133,13 +133,3 @@ def generate_prefix(self, log_source_signature: Optional[LogSourceSignature], fu
133133

134134
def in_brackets(self, raw_list: list[QUERY_TOKEN_TYPE]) -> list[QUERY_TOKEN_TYPE]:
135135
return [Identifier(token_type=GroupType.L_PAREN), *raw_list, Identifier(token_type=GroupType.R_PAREN)]
136-
137-
def generate_extra_conditions(self, source_mapping: SourceMapping, tokens: list) -> list:
138-
for field, value in source_mapping.conditions.items():
139-
tokens = self.in_brackets(tokens)
140-
extra_tokens = [
141-
FieldValue(source_name=field, operator=Identifier(token_type=OperatorType.EQ), value=value),
142-
Identifier(token_type=LogicalOperatorType.AND),
143-
]
144-
tokens = self.in_brackets([*extra_tokens, *tokens])
145-
return tokens

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