Ohm-Management - Projektarbeit B-ME
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

equality_filter.js 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright 2011 Mark Cavage, Inc. All rights reserved.
  2. var assert = require('assert-plus');
  3. var util = require('util');
  4. var ASN1 = require('asn1').Ber;
  5. var parents = require('ldap-filter');
  6. var Filter = require('./filter');
  7. ///--- API
  8. function EqualityFilter(options) {
  9. parents.EqualityFilter.call(this, options);
  10. }
  11. util.inherits(EqualityFilter, parents.EqualityFilter);
  12. Filter.mixin(EqualityFilter);
  13. module.exports = EqualityFilter;
  14. EqualityFilter.prototype.matches = function (target, strictAttrCase) {
  15. assert.object(target, 'target');
  16. var tv = parents.getAttrValue(target, this.attribute, strictAttrCase);
  17. var value = this.value;
  18. if (this.attribute.toLowerCase() === 'objectclass') {
  19. /*
  20. * Perform case-insensitive match for objectClass since nearly every LDAP
  21. * implementation behaves in this manner.
  22. */
  23. value = value.toLowerCase();
  24. return parents.testValues(function (v) {
  25. return value === v.toLowerCase();
  26. }, tv);
  27. } else {
  28. return parents.testValues(function (v) {
  29. return value === v;
  30. }, tv);
  31. }
  32. };
  33. EqualityFilter.prototype.parse = function (ber) {
  34. assert.ok(ber);
  35. this.attribute = ber.readString().toLowerCase();
  36. this.value = ber.readString(ASN1.OctetString, true);
  37. if (this.attribute === 'objectclass')
  38. this.value = this.value.toLowerCase();
  39. return true;
  40. };
  41. EqualityFilter.prototype._toBer = function (ber) {
  42. assert.ok(ber);
  43. ber.writeString(this.attribute);
  44. ber.writeBuffer(this.raw, ASN1.OctetString);
  45. return ber;
  46. };