diff --git a/engine/storage_mongo_local_test.go b/engine/storage_mongo_local_test.go index 3b9f39517..7978db79f 100644 --- a/engine/storage_mongo_local_test.go +++ b/engine/storage_mongo_local_test.go @@ -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)) diff --git a/engine/storage_mongo_tp.go b/engine/storage_mongo_tp.go index 70d38672e..db606efaf 100644 --- a/engine/storage_mongo_tp.go +++ b/engine/storage_mongo_tp.go @@ -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