From ad8ba678ef80cf6889ca916671cd1bc9acbf43aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Depriester?= Date: Mon, 10 May 2021 12:33:17 +0200 Subject: [PATCH] fix regex escape in filters --- src/DataSource.ts | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/DataSource.ts b/src/DataSource.ts index d14cadb..ff703fe 100644 --- a/src/DataSource.ts +++ b/src/DataSource.ts @@ -42,9 +42,9 @@ export class AlertmanagerDataSource extends DataSourceApi 0) { - query.filters = getTemplateSrv().replace(query.filters, options.scopedVars); + query.filters = getTemplateSrv().replace(query.filters, options.scopedVars, this.interpolateQueryExpr); query.filters.split(',').forEach(value => { - params.push(`filter=${value}`); + params.push(`filter=${encodeURIComponent(value)}`); }); } @@ -150,4 +150,31 @@ export class AlertmanagerDataSource extends DataSourceApi alertmanagerSpecialRegexEscape(val)); + + if (escapedValues.length === 1) { + return escapedValues[0]; + } + + return '(' + escapedValues.join('|') + ')'; + } +} + +export function alertmanagerRegularEscape(value: any) { + return typeof value === 'string' ? value.replace(/\\/g, '\\\\').replace(/'/g, "\\\\'") : value; +} + +export function alertmanagerSpecialRegexEscape(value: any) { + return typeof value === 'string' ? value.replace(/\\/g, '\\\\\\\\').replace(/[$^*{}\[\]\'+?()|]/g, '\\\\$&') : value; }