Skip to content

Commit c10b89d

Browse files
committed
fix conflicts
1 parent ea56df1 commit c10b89d

File tree

15 files changed

+58
-151
lines changed

15 files changed

+58
-151
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def prepare_mapping(self) -> dict[str, SourceMapping]:
116116
default_mapping = SourceMapping(source_id=DEFAULT_MAPPING_NAME)
117117
for mapping_dict in self._loader.load_platform_mappings(self._platform_dir):
118118
log_source_signature = self.prepare_log_source_signature(mapping=mapping_dict)
119-
if (source_id := mapping_dict["source"]) == DEFAULT_MAPPING_NAME:
119+
if (source_id := mapping_dict.get("source")) == DEFAULT_MAPPING_NAME:
120120
default_mapping.log_source_signature = log_source_signature
121121
if self.skip_load_default_mappings:
122122
continue

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ def __load_mitre_configs_from_files(self) -> None:
189189
technique_id=technique_data["technique_id"],
190190
name=technique_data["technique"],
191191
url=technique_data["url"],
192-
tactic=technique_data["tactic"],
192+
tactic=technique_data.get("tactic", []),
193193
)
194194
self.techniques.insert(technique_id, technique)
195195
except JSONDecodeError:

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
from app.translator.core.mapping import DEFAULT_MAPPING_NAME
99
from app.translator.core.models.functions.base import ParsedFunctions
1010
from app.translator.core.models.query_tokens.field import Field
11-
<<<<<<< HEAD
12-
=======
1311

1412

1513
@dataclass
@@ -46,7 +44,6 @@ def __init__(
4644
self.trigger_threshold = trigger_threshold
4745
self.query_frequency = query_frequency
4846
self.query_period = query_period
49-
>>>>>>> main
5047

5148

5249
class MetaInfoContainer:

uncoder-core/app/translator/core/models/query_tokens/field.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
<<<<<<< HEAD
2-
=======
31
from abc import ABC, abstractmethod
4-
>>>>>>> main
52
from typing import Optional
63

74
from app.translator.core.mapping import DEFAULT_MAPPING_NAME, SourceMapping
@@ -41,13 +38,10 @@ def set_generic_names_map(self, source_mappings: list[SourceMapping], default_ma
4138
class PredefinedField:
4239
def __init__(self, name: str):
4340
self.name = name
44-
<<<<<<< HEAD
45-
=======
4641

4742

4843
class BaseFieldsGetter(ABC):
4944
@property
5045
@abstractmethod
5146
def fields(self) -> list[Field]:
5247
raise NotImplementedError("Abstract method")
53-
>>>>>>> main
Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
1-
<<<<<<< HEAD
2-
from app.translator.core.models.query_tokens.field import Alias, Field
3-
from app.translator.core.models.query_tokens.identifier import Identifier
4-
5-
6-
class FieldField:
7-
=======
81
from app.translator.core.models.query_tokens.field import Alias, BaseFieldsGetter, Field
92
from app.translator.core.models.query_tokens.identifier import Identifier
103

114

125
class FieldField(BaseFieldsGetter):
13-
>>>>>>> main
146
def __init__(
157
self,
168
source_name_left: str,
@@ -24,8 +16,6 @@ def __init__(
2416
self.operator = operator
2517
self.field_right = Field(source_name=source_name_right) if not is_alias_right else None
2618
self.alias_right = Alias(name=source_name_right) if is_alias_right else None
27-
<<<<<<< HEAD
28-
=======
2919

3020
@property
3121
def fields(self) -> list[Field]:
@@ -36,4 +26,3 @@ def fields(self) -> list[Field]:
3626
fields.append(self.field_right)
3727

3828
return fields
39-
>>>>>>> main

uncoder-core/app/translator/core/models/query_tokens/field_value.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,13 @@
11
from typing import Union
22

33
from app.translator.core.custom_types.tokens import STR_SEARCH_OPERATORS
4-
<<<<<<< HEAD
5-
from app.translator.core.models.query_tokens.field import Alias, Field, PredefinedField
6-
=======
74
from app.translator.core.models.query_tokens.field import Alias, BaseFieldsGetter, Field, PredefinedField
8-
>>>>>>> main
95
from app.translator.core.models.query_tokens.identifier import Identifier
106
from app.translator.core.models.query_tokens.value import Value
117
from app.translator.core.str_value_manager import StrValue
128

139

14-
<<<<<<< HEAD
15-
class FieldValue(Value):
16-
=======
1710
class FieldValue(BaseFieldsGetter, Value):
18-
>>>>>>> main
1911
def __init__(
2012
self,
2113
source_name: str,
@@ -41,10 +33,7 @@ def __repr__(self):
4133
return f"{self.predefined_field.name} {self.operator.token_type} {self.values}"
4234

4335
return f"{self.field.source_name} {self.operator.token_type} {self.values}"
44-
<<<<<<< HEAD
45-
=======
4636

4737
@property
4838
def fields(self) -> list[Field]:
4939
return [self.field] if self.field else []
50-
>>>>>>> main

uncoder-core/app/translator/core/models/query_tokens/function_value.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,18 @@
22

33
from app.translator.core.custom_types.tokens import STR_SEARCH_OPERATORS
44
from app.translator.core.models.functions.base import Function
5-
<<<<<<< HEAD
6-
=======
75
from app.translator.core.models.query_tokens.field import BaseFieldsGetter, Field
8-
>>>>>>> main
96
from app.translator.core.models.query_tokens.identifier import Identifier
107
from app.translator.core.models.query_tokens.value import Value
118
from app.translator.core.str_value_manager import StrValue
129

1310

14-
<<<<<<< HEAD
15-
class FunctionValue(Value):
16-
=======
1711
class FunctionValue(BaseFieldsGetter, Value):
18-
>>>>>>> main
1912
def __init__(self, function: Function, operator: Identifier, value: Union[int, str, StrValue, list, tuple]):
2013
super().__init__(value, cast_to_int=operator.token_type not in STR_SEARCH_OPERATORS)
2114
self.function = function
2215
self.operator = operator
23-
<<<<<<< HEAD
24-
=======
2516

2617
@property
2718
def fields(self) -> list[Field]:
2819
return self.function.fields
29-
>>>>>>> main

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

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -48,44 +48,11 @@ class AQLMappings(BasePlatformMappings):
4848

4949
def prepare_log_source_signature(self, mapping: dict) -> AQLLogSourceSignature:
5050
log_source = mapping.get("log_source", {})
51-
default_log_source = mapping["default_log_source"]
51+
default_log_source = mapping.get("default_log_source")
5252
return AQLLogSourceSignature(
5353
device_types=log_source.get("devicetype"),
5454
categories=log_source.get("category"),
5555
qids=log_source.get("qid"),
5656
qid_event_categories=log_source.get("qideventcategory"),
5757
default_source=default_log_source,
5858
)
59-
<<<<<<< HEAD
60-
61-
def get_suitable_source_mappings(
62-
self,
63-
field_names: list[str],
64-
devicetype: Optional[list[int]] = None,
65-
category: Optional[list[int]] = None,
66-
qid: Optional[list[int]] = None,
67-
qideventcategory: Optional[list[int]] = None,
68-
) -> list[SourceMapping]:
69-
suitable_source_mappings = []
70-
for source_mapping in self._source_mappings.values():
71-
if source_mapping.source_id == DEFAULT_MAPPING_NAME:
72-
continue
73-
74-
log_source_signature: AQLLogSourceSignature = source_mapping.log_source_signature
75-
if log_source_signature.is_suitable(devicetype, category, qid, qideventcategory): # noqa: SIM102
76-
if source_mapping.fields_mapping.is_suitable(field_names):
77-
suitable_source_mappings.append(source_mapping)
78-
79-
if not suitable_source_mappings:
80-
for source_mapping in self._source_mappings.values():
81-
if source_mapping.source_id == DEFAULT_MAPPING_NAME:
82-
continue
83-
if source_mapping.fields_mapping.is_suitable(field_names):
84-
suitable_source_mappings.append(source_mapping)
85-
86-
if not suitable_source_mappings:
87-
suitable_source_mappings = [self._source_mappings[DEFAULT_MAPPING_NAME]]
88-
89-
return suitable_source_mappings
90-
=======
91-
>>>>>>> main

uncoder-core/app/translator/platforms/base/spl/renders/spl.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,6 @@
2020
from typing import Union
2121

2222
from app.translator.const import DEFAULT_VALUE_TYPE
23-
<<<<<<< HEAD
24-
from app.translator.core.exceptions.render import UnsupportedRenderMethod
25-
from app.translator.core.render import BaseFieldValueRender, PlatformQueryRender
26-
from app.translator.platforms.base.spl.escape_manager import spl_escape_manager
27-
28-
29-
class SplFieldValueRender(BaseFieldValueRender):
30-
escape_manager = spl_escape_manager
31-
=======
3223
from app.translator.core.custom_types.values import ValueType
3324
from app.translator.core.render import BaseFieldValueRender, PlatformQueryRender
3425
from app.translator.core.str_value_manager import StrValue
@@ -47,7 +38,6 @@ def _pre_process_value(
4738
) -> Union[int, str]:
4839
value = super()._pre_process_value(field, value, value_type=value_type, wrap_str=wrap_str)
4940
return self._wrap_str_value(str(value)) if not isinstance(value, str) else value
50-
>>>>>>> main
5141

5242
def equal_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str:
5343
if isinstance(value, list):
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
"""
2+
Uncoder IO Community Edition License
3+
-----------------------------------------------------------------
4+
Copyright (c) 2023 SOC Prime, Inc.
5+
6+
Licensed under the Apache License, Version 2.0 (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
-----------------------------------------------------------------
18+
"""
19+
from typing import ClassVar
20+
21+
from app.translator.core.str_value_manager import BaseSpecSymbol, StrValue, StrValueManager, UnboundLenWildCard
22+
from app.translator.platforms.base.spl.escape_manager import spl_escape_manager
23+
24+
25+
class SplStrValueManager(StrValueManager):
26+
escape_manager = spl_escape_manager
27+
str_spec_symbols_map: ClassVar[dict[str, type[BaseSpecSymbol]]] = {"*": UnboundLenWildCard}
28+
29+
def from_str_to_container(self, value: str) -> StrValue:
30+
split = []
31+
prev_char = None
32+
for char in value:
33+
if char == "\\":
34+
if prev_char == "\\":
35+
split.append("\\")
36+
prev_char = None
37+
continue
38+
elif char in self.str_spec_symbols_map:
39+
if prev_char == "\\":
40+
split.append(char)
41+
else:
42+
split.append(self.str_spec_symbols_map[char]())
43+
elif char in ('"', "=", "|", "<", ">"):
44+
split.append(char)
45+
else:
46+
if prev_char == "\\":
47+
split.append(prev_char)
48+
split.append(char)
49+
50+
prev_char = char
51+
52+
return StrValue(self.escape_manager.remove_escape(value), self._concat(split))
53+
54+
55+
spl_str_value_manager = SplStrValueManager()

0 commit comments

Comments
 (0)