소스 검색

feat(influxdb): escape influxdb tag values, fixes #3950

Torkel Ödegaard 10 년 전
부모
커밋
de90ad8967
2개의 변경된 파일4개의 추가작업 그리고 4개의 파일을 삭제
  1. 2 2
      public/app/plugins/datasource/influxdb/influx_query.ts
  2. 2 2
      public/app/plugins/datasource/influxdb/specs/influx_query_specs.ts

+ 2 - 2
public/app/plugins/datasource/influxdb/influx_query.ts

@@ -6,8 +6,8 @@ import queryPart from './query_part';
 export default class InfluxQuery {
 export default class InfluxQuery {
   target: any;
   target: any;
   selectModels: any[];
   selectModels: any[];
-  groupByParts: any;
   queryBuilder: any;
   queryBuilder: any;
+  groupByParts: any;
 
 
   constructor(target) {
   constructor(target) {
     this.target = target;
     this.target = target;
@@ -144,7 +144,7 @@ export default class InfluxQuery {
 
 
     // quote value unless regex
     // quote value unless regex
     if (operator !== '=~' && operator !== '!~') {
     if (operator !== '=~' && operator !== '!~') {
-      value = "'" + value + "'";
+      value = "'" + value.replace('\\', '\\\\') + "'";
     }
     }
 
 
     return str + '"' + tag.key + '" ' + operator + ' ' + value;
     return str + '"' + tag.key + '" ' + operator + ' ' + value;

+ 2 - 2
public/app/plugins/datasource/influxdb/specs/influx_query_specs.ts

@@ -51,12 +51,12 @@ describe('InfluxQuery', function() {
       var query = new InfluxQuery({
       var query = new InfluxQuery({
         measurement: 'cpu',
         measurement: 'cpu',
         groupBy: [{type: 'time', params: ['auto']}],
         groupBy: [{type: 'time', params: ['auto']}],
-        tags: [{key: 'hostname', value: 'server1'}]
+        tags: [{key: 'hostname', value: 'server\\1'}]
       });
       });
 
 
       var queryText = query.render();
       var queryText = query.render();
 
 
-      expect(queryText).to.be('SELECT mean("value") FROM "cpu" WHERE "hostname" = \'server1\' AND $timeFilter'
+      expect(queryText).to.be('SELECT mean("value") FROM "cpu" WHERE "hostname" = \'server\\\\1\' AND $timeFilter'
                           + ' GROUP BY time($interval)');
                           + ' GROUP BY time($interval)');
     });
     });