RFC 2254 (The String Representation of LDAP Search Filters) escaping of filter strings.
// Copyright 2011 Mark Cavage, Inc. All rights reserved.
/**
* RFC 2254 Escaping of filter strings
*
* Raw Escaped
* (o=Parens (R Us)) (o=Parens \28R Us\29)
* (cn=star*) (cn=star\2A)
* (filename=C:\MyFile) (filename=C:\5cMyFile)
*
* Use substr_filter to avoid having * ecsaped.
*
* @author [Austin King](https://github.com/ozten)
*/
exports.escape = function (inp) {
if (typeof inp === "string") {
let esc = "";
for (let i = 0; i < inp.length; i++) {
switch (inp[i]) {
case "*":
esc += "\\2a";
break;
case "(":
esc += "\\28";
break;
case ")":
esc += "\\29";
break;
case "\\":
esc += "\\5c";
break;
case "\0":
esc += "\\00";
break;
default:
esc += inp[i];
break;
}
}
return esc;
} else {
return inp;
}
};