Skip to content

Commit b0153cf

Browse files
authored
Merge pull request #10 from UncoderIO/logscale_escape
Add escaping for LogScale
2 parents 85c0c48 + fafe990 commit b0153cf

File tree

1 file changed

+12
-6
lines changed
  • siem-converter/app/converter/backends/logscale/renders

1 file changed

+12
-6
lines changed

siem-converter/app/converter/backends/logscale/renders/logscale.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
limitations under the License.
1717
-----------------------------------------------------------------
1818
"""
19+
from typing import Union
1920

2021
from app.converter.backends.logscale.const import logscale_query_details
2122
from app.converter.backends.logscale.mapping import LogScaleMappings, logscale_mappings
@@ -28,35 +29,40 @@
2829
class LogScaleFieldValue(BaseQueryFieldValue):
2930
details: PlatformDetails = logscale_query_details
3031

32+
def apply_value(self, value: Union[str, int]):
33+
if isinstance(value, str) and '"' in value:
34+
value = value.translate(str.maketrans({'"': r'\"'}))
35+
return value
36+
3137
def equal_modifier(self, field, value):
3238
if isinstance(value, list):
3339
return f"({self.or_token.join(self.equal_modifier(field=field, value=v) for v in value)})"
34-
return f'{field}="{value}"'
40+
return f'{field}="{self.apply_value(value)}"'
3541

3642
def contains_modifier(self, field, value):
3743
if isinstance(value, list):
3844
return f"({self.or_token.join(self.contains_modifier(field=field, value=v) for v in value)})"
39-
return f'{field}="*{value}*"'
45+
return f'{field}="*{self.apply_value(value)}*"'
4046

4147
def endswith_modifier(self, field, value):
4248
if isinstance(value, list):
4349
return f"({self.or_token.join(self.endswith_modifier(field=field, value=v) for v in value)})"
44-
return f'{field}="*{value}"'
50+
return f'{field}="*{self.apply_value(value)}"'
4551

4652
def startswith_modifier(self, field, value):
4753
if isinstance(value, list):
4854
return f"({self.or_token.join(self.startswith_modifier(field=field, value=v) for v in value)})"
49-
return f'{field}="{value}*"'
55+
return f'{field}="{self.apply_value(value)}*"'
5056

5157
def regex_modifier(self, field, value):
5258
if isinstance(value, list):
5359
return f"({self.or_token.join(self.regex_modifier(field=field, value=v) for v in value)})"
54-
return f'{field}="/{value}/"'
60+
return f'{field}="/{self.apply_value(value)}/"'
5561

5662
def keywords(self, field, value):
5763
if isinstance(value, list):
5864
return f"({self.or_token.join(self.keywords(field=field, value=v) for v in value)})"
59-
return f'"{value}"'
65+
return f'"{self.apply_value(value)}"'
6066

6167

6268
class LogScaleQueryRender(BaseQueryRender):

0 commit comments

Comments
 (0)