diff --git a/app.js b/app.js
index 877ef99..849701b 100644
--- a/app.js
+++ b/app.js
@@ -88,6 +88,11 @@ app.use(function (req, res, next) {
});
+const utils = require('utils/utils');
+app.use( function( req, res, next ) {
+ req = utils.findQueryString(req);
+ next();
+});
// get BE api configs
diff --git a/controllers/mongo-db/mongoConnect.js b/controllers/mongo-db/mongoConnect.js
index 2544b89..3a0170e 100644
--- a/controllers/mongo-db/mongoConnect.js
+++ b/controllers/mongo-db/mongoConnect.js
@@ -51,7 +51,6 @@ function mongoReq(req, query, collection){
});
});
});
-
}
diff --git a/controllers/mongo-db/query.js b/controllers/mongo-db/query.js
index 83c75a5..de45e5a 100644
--- a/controllers/mongo-db/query.js
+++ b/controllers/mongo-db/query.js
@@ -1,12 +1,22 @@
let express = require('express');
let router = express.Router();
let connection = require("./mongoConnect.js")
-
+var parseFilter = require('ldapjs').parseFilter;
+let utils = require('../../utils/utils')
router.get('/',async function (req, res) {
- var query = Object.assign(req.params, req.query);
- var result = await connection.reqMongo(req, query)
- res.status(200).json(result);
+
+ var filter = parseFilter(req.query.filter)
+
+ // var objectData = Object.assign(req.query,req.params);
+ // var filter = utils.getUpdateFilter(objectData);
+
+ var query = await utils.getQuery(filter);
+ console.log(query)
+
+ // var query = Object.assign(req.params, req.query);
+ var result = await connection.reqMongo(req, query, 'config')
+ res.status(200).send(result);
});
router.post('/', (req, res) => {
diff --git a/package-lock.json b/package-lock.json
index c352d1e..09616cf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -88,6 +88,20 @@
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
+ "backoff": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz",
+ "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=",
+ "requires": {
+ "precond": "0.2.3"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "optional": true
+ },
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
@@ -154,11 +168,32 @@
"hoek": "2.16.3"
}
},
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "optional": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
"bson": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz",
"integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA=="
},
+ "bunyan": {
+ "version": "1.8.12",
+ "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz",
+ "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=",
+ "requires": {
+ "dtrace-provider": "0.8.7",
+ "moment": "2.22.2",
+ "mv": "2.1.1",
+ "safe-json-stringify": "1.2.0"
+ }
+ },
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -281,6 +316,12 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
"integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
},
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "optional": true
+ },
"connect-flash": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz",
@@ -435,6 +476,15 @@
"resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
"integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw="
},
+ "dtrace-provider": {
+ "version": "0.8.7",
+ "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz",
+ "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=",
+ "optional": true,
+ "requires": {
+ "nan": "2.11.1"
+ }
+ },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -689,6 +739,19 @@
}
}
},
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "optional": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
"har-validator": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
@@ -777,6 +840,16 @@
"pope": "1.0.5"
}
},
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "optional": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
@@ -898,6 +971,50 @@
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
},
+ "ldap-filter": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz",
+ "integrity": "sha1-8rhCvguG2jNSeYUFsx68rlkNd9A=",
+ "requires": {
+ "assert-plus": "0.1.5"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
+ "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA="
+ }
+ }
+ },
+ "ldapjs": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz",
+ "integrity": "sha1-VE/3Ayt7g8aPBwEyjZKXqmlDQPk=",
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "backoff": "2.5.0",
+ "bunyan": "1.8.12",
+ "dashdash": "1.14.1",
+ "dtrace-provider": "0.8.7",
+ "ldap-filter": "0.2.2",
+ "once": "1.4.0",
+ "vasync": "1.6.4",
+ "verror": "1.10.0"
+ },
+ "dependencies": {
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
@@ -998,6 +1115,15 @@
"mime-db": "1.36.0"
}
},
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "optional": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
"minimist": {
"version": "0.0.8",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
@@ -1041,6 +1167,29 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
+ "mv": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
+ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
+ "optional": true,
+ "requires": {
+ "mkdirp": "0.5.1",
+ "ncp": "2.0.0",
+ "rimraf": "2.4.5"
+ }
+ },
+ "nan": {
+ "version": "2.11.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
+ "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==",
+ "optional": true
+ },
+ "ncp": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
+ "optional": true
+ },
"negotiator": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
@@ -1074,6 +1223,14 @@
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
"integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
},
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
"one-time": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz",
@@ -1166,6 +1323,12 @@
"resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
"integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ="
},
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "optional": true
+ },
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@@ -1199,6 +1362,11 @@
"resolved": "https://registry.npmjs.org/pope/-/pope-1.0.5.tgz",
"integrity": "sha512-53FgeyiX79LOvZvviqFSLFT3otSRIpPv4uTDRscoWaJlr1LWCaTB+ouhvCouj08Ag28pM18FZv9Y2+wmimILAA=="
},
+ "precond": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz",
+ "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw="
+ },
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
@@ -1378,11 +1546,26 @@
"align-text": "0.1.4"
}
},
+ "rimraf": {
+ "version": "2.4.5",
+ "resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
+ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
+ "optional": true,
+ "requires": {
+ "glob": "6.0.4"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
+ "safe-json-stringify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
+ "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
+ "optional": true
+ },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -1661,6 +1844,29 @@
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
+ "vasync": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz",
+ "integrity": "sha1-3+k2Fq0OeugBszKp2Iv8XNyOHR8=",
+ "requires": {
+ "verror": "1.6.0"
+ },
+ "dependencies": {
+ "extsprintf": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz",
+ "integrity": "sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk="
+ },
+ "verror": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz",
+ "integrity": "sha1-fROyex+swuLakEBetepuW90lLqU=",
+ "requires": {
+ "extsprintf": "1.2.0"
+ }
+ }
+ }
+ },
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
@@ -1721,6 +1927,11 @@
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
},
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
"xml-crypto": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.10.1.tgz",
diff --git a/package.json b/package.json
index 7d27e7c..170a68a 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
"express-request-id": "^1.4.1",
"express-session": "^1.15.6",
"indicative": "^3.0.6",
+ "ldapjs": "^1.0.2",
"log4js": "^3.0.6",
"moment": "^2.22.2",
"mongodb": "^3.1.8",
diff --git a/utils/utils.js b/utils/utils.js
new file mode 100644
index 0000000..32ef64a
--- /dev/null
+++ b/utils/utils.js
@@ -0,0 +1,174 @@
+
+
+utils = {};
+
+
+utils.findQueryString = function(req)
+{
+ var keywords = ["filter","offset","orderby","limit","fields"];
+
+ var baseUrl = decodeURIComponent(req.url);
+
+ if(baseUrl && baseUrl.indexOf("filter=(") != -1)
+ {
+ baseUrl = "&"+baseUrl.split("?")[1];
+
+ var indexList = [];
+ var listData = {};
+ for(var i=0;i=
+ case 'le': operate = '$lte'; break;//<=
+ case 'approx' : operate = '$in'; break;
+ default : operate = "$"+temFilter[i].type; break;
+ }
+
+ switch(operate){
+ case '$present' :
+ break;
+ case '$substring' :
+ // if(temFilter[i].initial){
+ // query += temFilter[i].attribute +" LIKE '"+ temFilter[i].initial + "%'"
+ // } else if(temFilter[i].final){
+ // query += temFilter[i].attribute +" LIKE '%" + temFilter[i].final + "'"
+ // } else {
+ // var any = "%";
+ // for(var j = 0; j < temFilter[i].any.length; j++){
+ // any += temFilter[i].any[j]+"%";
+ // }
+ // query += temFilter[i].attribute +" LIKE '" + any + "'"
+ // }
+ break;
+ default :
+ // query += temFilter[i].attribute +" "+ operate +" "+ temFilter[i].value;
+ var regexValue = new RegExp(temFilter[i].value,"g")
+ if(data.type == 'or'){
+ var objOr = {}
+ var attribute = temFilter[i].attribute;
+ objOr[attribute] = regexValue
+ if(!query['$or'])
+ query['$or'] = []
+ query['$or'].push(objOr)
+ } else {
+ var attribute = temFilter[i].attribute;
+ query[attribute] = regexValue
+ }
+ // query = Object.assign(obj, obj)
+ break;
+ }
+ // query += temFilter[i].attribute +" "+ operate +" "+ temFilter[i].value;
+ }
+ // if(i != temFilter.length-1)
+ // query += " "+data.type.toUpperCase()+" "
+ }
+ return query;
+}
+
+function findValueInBracket(data)
+{
+ data = data.substring(1,data.length-1);
+ var returnData = {};
+
+
+ if(data.indexOf("&") == -1 && data.indexOf("|") == -1)
+ {
+ //single data
+ var t = data.split("=");
+ returnData[t[0]] = t[1];
+
+ }else
+ {
+ //multi data
+ var left = [];
+ var splitData = data.split("");
+ for(var i=0;i