mirror of https://github.com/grafana/grafana.git
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,
|
value: counter,
|
||||||
metric: chooseRandomElement(['cpu', 'memory', 'latency']),
|
metric: chooseRandomElement(['cpu', 'memory', 'latency']),
|
||||||
description: "this is description",
|
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);
|
const query = ds.addAdHocFilters('', filters);
|
||||||
expect(query).toBe('field\\:name:"field \\"value\\""');
|
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 key = escapeFilter(filter.key);
|
||||||
const value = escapeFilterValue(filter.value);
|
const value = escapeFilterValue(filter.value);
|
||||||
|
const regexValue = escapeFilterValue(filter.value, false);
|
||||||
let addHocFilter = '';
|
let addHocFilter = '';
|
||||||
switch (filter.operator) {
|
switch (filter.operator) {
|
||||||
case '=~':
|
case '=~':
|
||||||
addHocFilter = `${key}:/${value}/`;
|
addHocFilter = `${key}:/${regexValue}/`;
|
||||||
break;
|
break;
|
||||||
case '!~':
|
case '!~':
|
||||||
addHocFilter = `-${key}:/${value}/`;
|
addHocFilter = `-${key}:/${regexValue}/`;
|
||||||
break;
|
break;
|
||||||
case '>':
|
case '>':
|
||||||
addHocFilter = `${key}:>${value}`;
|
addHocFilter = `${key}:>${value}`;
|
||||||
|
|
@ -186,8 +187,10 @@ export function escapeFilter(value: string) {
|
||||||
* Values can possibly reserved special characters such as quotes.
|
* Values can possibly reserved special characters such as quotes.
|
||||||
* Use this function to escape filter values.
|
* Use this function to escape filter values.
|
||||||
*/
|
*/
|
||||||
export function escapeFilterValue(value: string) {
|
export function escapeFilterValue(value: string, escapeBackslash = true) {
|
||||||
value = value.replace(/\\/g, '\\\\');
|
if (escapeBackslash) {
|
||||||
|
value = value.replace(/\\/g, '\\\\');
|
||||||
|
}
|
||||||
return lucene.phrase.escape(value);
|
return lucene.phrase.escape(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue