fix for regexp meta chars

This commit is contained in:
Radu Ioan Fericean
2015-10-20 10:39:21 +03:00
parent 848d3d2081
commit 4e944a8555
2 changed files with 6 additions and 5 deletions

View File

@@ -764,13 +764,13 @@ func TestMongoGetStoredCdrs(t *testing.T) {
t.Error("Unexpected number of StoredCdrs returned: ", len(storedCdrs))
}
// Filter on destPrefix
if storedCdrs, _, err := mongoDb.GetStoredCdrs(&utils.CdrsFilter{DestPrefixes: []string{"\\+498651"}}); err != nil {
if storedCdrs, _, err := mongoDb.GetStoredCdrs(&utils.CdrsFilter{DestPrefixes: []string{"+498651"}}); err != nil {
t.Error(err.Error())
} else if len(storedCdrs) != 4 {
t.Error("Unexpected number of StoredCdrs returned: ", len(storedCdrs))
}
// Filter on multiple destPrefixes
if storedCdrs, _, err := mongoDb.GetStoredCdrs(&utils.CdrsFilter{DestPrefixes: []string{"1001", "\\+498651"}}); err != nil {
if storedCdrs, _, err := mongoDb.GetStoredCdrs(&utils.CdrsFilter{DestPrefixes: []string{"1001", "+498651"}}); err != nil {
t.Error(err.Error())
} else if len(storedCdrs) != 5 {
t.Error("Unexpected number of StoredCdrs returned: ", len(storedCdrs))

View File

@@ -1,6 +1,7 @@
package engine
import (
"regexp"
"strings"
"time"
@@ -48,7 +49,7 @@ func (ms *MongoStorage) GetTpTableIds(tpid, table string, distinct utils.TPDisti
var searchItems []bson.M
for _, d := range distinct {
searchItems = append(searchItems, bson.M{d: bson.RegEx{
Pattern: ".*" + pag.SearchTerm + ".*",
Pattern: ".*" + regexp.QuoteMeta(pag.SearchTerm) + ".*",
Options: ""}})
}
findMap["$and"] = []bson.M{bson.M{"$or": searchItems}}
@@ -805,14 +806,14 @@ func (ms *MongoStorage) GetStoredCdrs(qryFltr *utils.CdrsFilter) ([]*StoredCdr,
if len(qryFltr.DestPrefixes) != 0 {
var regexes []bson.RegEx
for _, prefix := range qryFltr.DestPrefixes {
regexes = append(regexes, bson.RegEx{Pattern: prefix + ".*"})
regexes = append(regexes, bson.RegEx{Pattern: regexp.QuoteMeta(prefix) + ".*"})
}
filters["destination"] = bson.M{"$in": regexes}
}
if len(qryFltr.NotDestPrefixes) != 0 {
var notRegexes []bson.RegEx
for _, prefix := range qryFltr.DestPrefixes {
notRegexes = append(notRegexes, bson.RegEx{Pattern: prefix + ".*"})
notRegexes = append(notRegexes, bson.RegEx{Pattern: regexp.QuoteMeta(prefix) + ".*"})
}
if m, ok := filters["destination"]; ok {
m.(bson.M)["$nin"] = notRegexes