123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // Copyright 2011 Mark Cavage, Inc. All rights reserved.
-
- var assert = require('assert');
- var util = require('util');
-
- var parents = require('ldap-filter');
-
- var Filter = require('./filter');
-
-
-
- // THIS IS A STUB!
- //
- // ldapjs does not support server side extensible matching.
- // This class exists only for the client to send them.
-
- ///--- API
-
- function ExtensibleFilter(options) {
- parents.ExtensibleFilter.call(this, options);
- }
- util.inherits(ExtensibleFilter, parents.ExtensibleFilter);
- Filter.mixin(ExtensibleFilter);
- module.exports = ExtensibleFilter;
-
-
- ExtensibleFilter.prototype.parse = function (ber) {
- var end = ber.offset + ber.length;
- while (ber.offset < end) {
- var tag = ber.peek();
- switch (tag) {
- case 0x81:
- this.rule = ber.readString(tag);
- break;
- case 0x82:
- this.matchType = ber.readString(tag);
- break;
- case 0x83:
- this.value = ber.readString(tag);
- break;
- case 0x84:
- this.dnAttributes = ber.readBoolean(tag);
- break;
- default:
- throw new Error('Invalid ext_match filter type: 0x' + tag.toString(16));
- }
- }
-
- return true;
- };
-
-
- ExtensibleFilter.prototype._toBer = function (ber) {
- assert.ok(ber);
-
- if (this.rule)
- ber.writeString(this.rule, 0x81);
- if (this.matchType)
- ber.writeString(this.matchType, 0x82);
-
- ber.writeString(this.value, 0x83);
- if (this.dnAttributes)
- ber.writeBoolean(this.dnAttributes, 0x84);
-
- return ber;
- };
|