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.

ext_filter.js 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright 2011 Mark Cavage, Inc. All rights reserved.
  2. var assert = require('assert');
  3. var util = require('util');
  4. var parents = require('ldap-filter');
  5. var Filter = require('./filter');
  6. // THIS IS A STUB!
  7. //
  8. // ldapjs does not support server side extensible matching.
  9. // This class exists only for the client to send them.
  10. ///--- API
  11. function ExtensibleFilter(options) {
  12. parents.ExtensibleFilter.call(this, options);
  13. }
  14. util.inherits(ExtensibleFilter, parents.ExtensibleFilter);
  15. Filter.mixin(ExtensibleFilter);
  16. module.exports = ExtensibleFilter;
  17. ExtensibleFilter.prototype.parse = function (ber) {
  18. var end = ber.offset + ber.length;
  19. while (ber.offset < end) {
  20. var tag = ber.peek();
  21. switch (tag) {
  22. case 0x81:
  23. this.rule = ber.readString(tag);
  24. break;
  25. case 0x82:
  26. this.matchType = ber.readString(tag);
  27. break;
  28. case 0x83:
  29. this.value = ber.readString(tag);
  30. break;
  31. case 0x84:
  32. this.dnAttributes = ber.readBoolean(tag);
  33. break;
  34. default:
  35. throw new Error('Invalid ext_match filter type: 0x' + tag.toString(16));
  36. }
  37. }
  38. return true;
  39. };
  40. ExtensibleFilter.prototype._toBer = function (ber) {
  41. assert.ok(ber);
  42. if (this.rule)
  43. ber.writeString(this.rule, 0x81);
  44. if (this.matchType)
  45. ber.writeString(this.matchType, 0x82);
  46. ber.writeString(this.value, 0x83);
  47. if (this.dnAttributes)
  48. ber.writeBoolean(this.dnAttributes, 0x84);
  49. return ber;
  50. };