mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Elasticsearch: Stop escaping backslash in regex adhoc filter (#94577)
This commit is contained in:
parent
0eb7b755e2
commit
5f4944117c
@ -150,7 +150,8 @@ function getRandomLogItem(counter, timestamp) {
|
||||
value: counter,
|
||||
metric: chooseRandomElement(['cpu', 'memory', 'latency']),
|
||||
description: "this is description",
|
||||
slash: "Access to the path '\\\\tkasnpo\\KASNPO\\Files\\contacts.xml' is denied."
|
||||
slash: "Access to the path '\\\\tkasnpo\\KASNPO\\Files\\contacts.xml' is denied.",
|
||||
url: "/foo/blah"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -721,6 +721,12 @@ describe('ElasticDatasource', () => {
|
||||
const query = ds.addAdHocFilters('', filters);
|
||||
expect(query).toBe('field\\:name:"field \\"value\\""');
|
||||
});
|
||||
|
||||
it('should not escape backslash in regex', () => {
|
||||
const filters = [{ key: 'field:name', operator: '=~', value: 'field value\\/', condition: '' }];
|
||||
const query = ds.addAdHocFilters('', filters);
|
||||
expect(query).toBe('field\\:name:/field value\\//');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -104,13 +104,14 @@ export function addAddHocFilter(query: string, filter: AdHocVariableFilter): str
|
||||
*/
|
||||
const key = escapeFilter(filter.key);
|
||||
const value = escapeFilterValue(filter.value);
|
||||
const regexValue = escapeFilterValue(filter.value, false);
|
||||
let addHocFilter = '';
|
||||
switch (filter.operator) {
|
||||
case '=~':
|
||||
addHocFilter = `${key}:/${value}/`;
|
||||
addHocFilter = `${key}:/${regexValue}/`;
|
||||
break;
|
||||
case '!~':
|
||||
addHocFilter = `-${key}:/${value}/`;
|
||||
addHocFilter = `-${key}:/${regexValue}/`;
|
||||
break;
|
||||
case '>':
|
||||
addHocFilter = `${key}:>${value}`;
|
||||
@ -186,8 +187,10 @@ export function escapeFilter(value: string) {
|
||||
* Values can possibly reserved special characters such as quotes.
|
||||
* Use this function to escape filter values.
|
||||
*/
|
||||
export function escapeFilterValue(value: string) {
|
||||
value = value.replace(/\\/g, '\\\\');
|
||||
export function escapeFilterValue(value: string, escapeBackslash = true) {
|
||||
if (escapeBackslash) {
|
||||
value = value.replace(/\\/g, '\\\\');
|
||||
}
|
||||
return lucene.phrase.escape(value);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user